Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
OpenGEODE
Commits
a7dd606d
Commit
a7dd606d
authored
Jul 31, 2014
by
dbarbera
Browse files
Fix type analysis for not expressions with reference element types.
parent
b3a85b8e
Changes
2
Hide whitespace changes
Inline
Side-by-side
ogParser.py
View file @
a7dd606d
...
...
@@ -1212,7 +1212,8 @@ def not_expression(root, context):
expr
.
exprType
=
BOOLEAN
elif
bty
.
kind
==
'BitStringType'
:
expr
.
exprType
=
expr
.
expr
.
exprType
elif
bty
.
kind
==
'SequenceOfType'
and
bty
.
type
.
kind
==
'BooleanType'
:
elif
bty
.
kind
==
'SequenceOfType'
and
\
find_basic_type
(
bty
.
type
).
kind
==
'BooleanType'
:
expr
.
exprType
=
expr
.
expr
.
exprType
else
:
msg
=
'Bitwise operators only work with booleans '
\
...
...
tests/regression/test-expressions/expressions.pr
View file @
a7dd606d
...
...
@@ -147,51 +147,57 @@ DCL boolSeqOf3 BoolSeqOf;
CALL assert(boolSeqOf3(0), 'boolSeqOf3(0)');
/* CIF PROCEDURECALL (-86, 3250), (274, 35) */
CALL assert(boolSeqOf3(1), 'boolSeqOf3(1)');
/* CIF TASK (-148, 3300), (399, 35) */
/* CIF TASK (-60, 3300), (223, 35) */
TASK boolSeqOf3 := not boolSeqOf1;
/* CIF PROCEDURECALL (-110, 3350), (322, 35) */
CALL assert(not boolSeqOf3(0), 'not boolSeqOf3(0)');
/* CIF PROCEDURECALL (-86, 3400), (274, 35) */
CALL assert(boolSeqOf3(1), 'boolSeqOf3(1)');
/* CIF TASK (-148, 3450), (399, 35) */
TASK '------------------------------- Unary expressions -------------------------------';
/* CIF TASK (3, 3
3
50), (95, 35) */
/* CIF TASK (3, 35
0
0), (95, 35) */
TASK b := false;
/* CIF PROCEDURECALL (-29, 3
40
0), (160, 35) */
/* CIF PROCEDURECALL (-29, 3
55
0), (160, 35) */
CALL assert(not b, 'not b');
/* CIF TASK (14, 3
45
0), (73, 35) */
/* CIF TASK (14, 3
60
0), (73, 35) */
TASK i := 10;
/* CIF PROCEDURECALL (-37, 35
0
0), (177, 35) */
/* CIF PROCEDURECALL (-37, 3
6
50), (177, 35) */
CALL assert(-i = -10, '-i = -10');
/* CIF TASK (-151, 3
55
0), (405, 35) */
/* CIF TASK (-151, 3
70
0), (405, 35) */
TASK '------------------------------- Primary Expression -------------------------------';
/* CIF PROCEDURECALL (-84, 3
60
0), (271, 35) */
/* CIF PROCEDURECALL (-84, 3
75
0), (271, 35) */
CALL assert(((1 + 1) * 4) = 8, '((1 + 1) * 4) = 8');
/* CIF PROCEDURECALL (-157, 3
65
0), (417, 35) */
/* CIF PROCEDURECALL (-157, 3
80
0), (417, 35) */
CALL assert(if true then 1 else 2 fi = 1, 'if true then 1 else 2 fi = 1');
/* CIF PROCEDURECALL (-183, 3
70
0), (468, 35) */
/* CIF PROCEDURECALL (-183, 3
85
0), (468, 35) */
CALL assert(if false then 1.0 else 2.0 fi = 2.0, 'if false then 1.0 else 2.0 fi = 2.0');
/* CIF PROCEDURECALL (-475, 3
75
0), (1052, 35) */
/* CIF PROCEDURECALL (-475, 3
90
0), (1052, 35) */
CALL assert(if false then false else (if true then (if false then false else true fi) else false fi) fi, 'if false then false else (if true then (if false then false else true fi) else false fi) fi');
/* CIF TASK (-183, 3
80
0), (468, 35) */
/* CIF TASK (-183, 3
95
0), (468, 35) */
TASK '------------------------------- Extended Primary Expressions -------------------------------';
/* CIF TASK (-30,
385
0), (163, 35) */
/* CIF TASK (-30,
400
0), (163, 35) */
TASK fixSeqOf1 := {2, 3, 4};
/* CIF PROCEDURECALL (-95,
390
0), (293, 35) */
/* CIF PROCEDURECALL (-95,
405
0), (293, 35) */
CALL assert(fixSeqOf1(1) = 3, 'fixSeqOf1(1) = 3');
/* CIF TASK (-31,
395
0), (164, 35) */
/* CIF TASK (-31,
410
0), (164, 35) */
TASK varSeqOf1 := {2, 3, 4};
/* CIF PROCEDURECALL (-99, 4
00
0), (300, 35) */
/* CIF PROCEDURECALL (-99, 4
15
0), (300, 35) */
CALL assert(varSeqOf1(1) = 3, 'varSeqOf1(1) = 3');
/* CIF TASK (-68, 40
5
0), (239, 35) */
/* CIF TASK (-68, 4
2
00), (239, 35) */
TASK seq := {i 1, b true, f 1.0, s 'HELLO'};
/* CIF PROCEDURECALL (-47, 4
10
0), (196, 35) */
/* CIF PROCEDURECALL (-47, 4
25
0), (196, 35) */
CALL assert(seq!i = 1, 'seq!i = 1');
/* CIF PROCEDURECALL (-69, 4
15
0), (241, 35) */
/* CIF PROCEDURECALL (-69, 4
30
0), (241, 35) */
CALL assert(seq!b = true, 'seq!b = true');
/* CIF PROCEDURECALL (-59, 4
20
0), (221, 35) */
/* CIF PROCEDURECALL (-59, 4
35
0), (221, 35) */
CALL assert(seq!f = 1.0, 'seq!f = 1.0');
/* CIF PROCEDURECALL (-93, 4
25
0), (289, 35) */
/* CIF PROCEDURECALL (-93, 4
40
0), (289, 35) */
CALL assert(seq!s = 'HELLO', 'seq!s = "HELLO"');
/* CIF TASK (-51, 4
30
0), (204, 35) */
/* CIF TASK (-51, 4
45
0), (204, 35) */
TASK nestedSeq := {a {b {c {d 9}}}};
/* CIF PROCEDURECALL (-126, 4
3
50), (354, 35) */
/* CIF PROCEDURECALL (-126, 45
0
0), (354, 35) */
CALL assert(nestedSeq!a!b!c!d = 9, 'nestedSeq!a!b!c!d = 9');
/* CIF NEXTSTATE (1, 4
40
0), (100, 50) */
/* CIF NEXTSTATE (1, 4
55
0), (100, 50) */
NEXTSTATE Wait;
ENDSTATE;
ENDPROCESS expressions;
\ No newline at end of file
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment