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
84ed9813
Commit
84ed9813
authored
Feb 11, 2015
by
Maxime Perrotin
Browse files
Fix size issue with embedded sequence of primaries
parent
ad0f9b0f
Changes
2
Hide whitespace changes
Inline
Side-by-side
opengeode/AdaGenerator.py
View file @
84ed9813
...
...
@@ -1655,7 +1655,6 @@ def _choiceitem(choice):
stmts
,
choice_str
,
local_decl
=
expression
(
choice
.
value
[
'value'
])
if
isinstance
(
choice
.
value
[
'value'
],
(
ogAST
.
PrimSequenceOf
,
ogAST
.
PrimStringLiteral
)):
print
choice
.
value
[
'value'
].
exprType
choice_str
=
array_content
(
choice
.
value
[
'value'
],
choice_str
,
find_basic_type
(
choice
.
value
[
'value'
].
exprType
))
ada_string
=
u
'{cType}_{opt}_set({expr})'
.
format
(
...
...
@@ -1972,10 +1971,14 @@ def array_content(prim, values, asnty):
inputs: prim is of type PrimStringLiteral or PrimSequenceOf
values is a string with the sequence of numbers as processed by expression
asnty is the reference type of the string literal '''
rtype
=
find_basic_type
(
prim
.
exprType
)
#
rtype = find_basic_type(prim.exprType)
if
asnty
.
Min
!=
asnty
.
Max
:
length
=
len
(
prim
.
value
)
if
isinstance
(
prim
,
ogAST
.
PrimStringLiteral
):
# Quotes are kept in string literals
length
-=
2
# Reference type can vary -> there is a Length field
rlen
=
u
", Length => {}"
.
format
(
rtype
.
Min
)
rlen
=
u
", Length => {}"
.
format
(
length
)
#
rtype.Min)
else
:
rlen
=
u
""
if
isinstance
(
prim
,
ogAST
.
PrimStringLiteral
):
...
...
tests/regression/test-equal/og.pr
View file @
84ed9813
...
...
@@ -16,102 +16,103 @@ dcl V5 Toto := { elem_1 'Hello' };
dcl V6 Toto := { elem_1 'Hello', elem_2 {'Hello', 'World'} };
dcl V7 AChoice := a: TRUE;
dcl V8 ACHoice := b: {'Hello', 'World!'};
dcl V8 ACHoice := b: {'Hello', 'World!'};
/* CIF ENDTEXT */
/* CIF START (1
262, 95
), (
10
0,
5
0) */
/* CIF START (1
109, 72
), (
6
0,
3
0) */
START;
/* CIF LABEL (1277, 160), (70, 35) */
/* CIF TASK (1050, 118), (177, 35) */
TASK v8 := b: {'hello', 'world'} ;
/* CIF LABEL (1104, 168), (70, 35) */
one:
/* CIF DECISION (1
263
, 21
0
), (98, 50) */
/* CIF DECISION (1
090
, 21
8
), (98, 50) */
DECISION V1 = V2;
/* CIF ANSWER (
1135
, 28
0
), (73, 28) */
/* CIF ANSWER (
962
, 28
8
), (73, 28) */
(true):
/* CIF TASK (
1110
, 3
2
3), (123, 35) */
/* CIF TASK (
937
, 33
1
), (123, 35) */
TASK fail := false;
/* CIF PROCEDURECALL (
1097
, 3
73
), (150, 38) */
/* CIF PROCEDURECALL (
923
, 3
81
), (150, 38) */
CALL writeln('2');
/* CIF LABEL (
1137
, 4
26
), (70, 35) */
/* CIF LABEL (
963
, 4
34
), (70, 35) */
two:
/* CIF DECISION (
1123
, 4
76
), (98, 50) */
/* CIF DECISION (
949
, 4
84
), (98, 50) */
DECISION V3 = V4;
/* CIF ANSWER (
789
, 54
6
), (73, 28) */
/* CIF ANSWER (
616
, 5
5
4), (73, 28) */
(true):
/* CIF TASK (
764
, 5
8
9), (123, 35) */
/* CIF TASK (
591
, 59
7
), (123, 35) */
TASK fail := false;
/* CIF PROCEDURECALL (
750
, 6
39
), (150, 38) */
/* CIF PROCEDURECALL (
577
, 6
47
), (150, 38) */
CALL writeln('4');
/* CIF LABEL (
784, 692
), (82, 35) */
/* CIF LABEL (
611, 700
), (82, 35) */
three:
/* CIF DECISION (74
7
, 7
42
), (156, 95) */
/* CIF DECISION (
5
74, 7
50
), (156, 95) */
DECISION V5 /= V6
and V7 /= V8;
/* CIF ANSWER (
713
, 85
7
), (73, 28) */
/* CIF ANSWER (
540
, 8
6
5), (73, 28) */
(true):
/* CIF PROCEDURECALL (
674
, 90
0
), (150, 38) */
/* CIF PROCEDURECALL (
501
, 90
8
), (150, 38) */
CALL writeln('5');
/* CIF TASK (
627
, 9
53
), (245, 68) */
/* CIF TASK (
454
, 9
61
), (245, 68) */
TASK V5 := V6,
V7 := b: {'Hello', 'World'},
V8!b(1) := V7!b(1)(0 ,4);
/* CIF JOIN (
732
, 10
36
), (35, 35) */
/* CIF JOIN (
559
, 10
44
), (35, 35) */
JOIN three;
/* CIF ANSWER (
918
, 85
7
), (78, 28) */
/* CIF ANSWER (
745
, 8
6
5), (78, 28) */
(false):
/* CIF PROCEDURECALL (
882
, 90
0
), (150, 38) */
/* CIF PROCEDURECALL (
709
, 90
8
), (150, 38) */
CALL writeln('6');
/* CIF NEXTSTATE (
922
, 9
53
), (70, 35) */
/* CIF NEXTSTATE (
749
, 9
61
), (70, 35) */
NEXTSTATE wait;
ENDDECISION;
/* CIF ANSWER (1
703
, 54
6
), (78, 28) */
/* CIF ANSWER (1
530
, 5
5
4), (78, 28) */
(false):
/* CIF DECISION (1
703
, 5
8
9), (78, 50) */
/* CIF DECISION (1
530
, 59
7
), (78, 50) */
DECISION fail;
/* CIF ANSWER (1
596
, 6
59
), (73, 28) */
/* CIF ANSWER (1
423
, 6
67
), (73, 28) */
(true):
/* CIF PROCEDURECALL (1
406
, 70
2
), (452, 38) */
/* CIF PROCEDURECALL (1
233
, 7
1
0), (452, 38) */
CALL writeln('FAIL: V3 = V4 reports FALSE, but...');
/* CIF PROCEDURECALL (1
363
, 7
55
), (539, 35) */
/* CIF PROCEDURECALL (1
190
, 7
63
), (539, 35) */
CALL writeln('Length of V3(1) =', Length(V3(1)), ' and Value = ', V3(1));
/* CIF PROCEDURECALL (1
358
, 8
05
), (549, 35) */
/* CIF PROCEDURECALL (1
185
, 8
13
), (549, 35) */
CALL writeln('Length of V4(1) =', Length(V4(1)), ' and Value = ', V4(1));
/* CIF NEXTSTATE (1
597
, 8
55
), (70, 35) */
/* CIF NEXTSTATE (1
424
, 8
63
), (70, 35) */
NEXTSTATE wait;
/* CIF ANSWER (1
976
, 6
59
), (78, 28) */
/* CIF ANSWER (1
803
, 6
67
), (78, 28) */
(false):
/* CIF PROCEDURECALL (1
940
, 70
2
), (150, 38) */
/* CIF PROCEDURECALL (1
767
, 7
1
0), (150, 38) */
CALL writeln('3');
/* CIF TASK (1
917
, 7
55
), (196, 35) */
/* CIF TASK (1
744
, 7
63
), (196, 35) */
TASK V3(1) := V4(1)(0,4);
/* CIF TASK (1
956
, 8
05
), (118, 35) */
/* CIF TASK (1
783
, 8
13
), (118, 35) */
TASK fail := true;
/* CIF JOIN (1
997
, 8
55
), (35, 35) */
/* CIF JOIN (1
824
, 8
63
), (35, 35) */
JOIN two;
ENDDECISION;
ENDDECISION;
/* CIF ANSWER (2
205
, 28
0
), (78, 28) */
/* CIF ANSWER (2
032
, 28
8
), (78, 28) */
(false):
/* CIF DECISION (2
205
, 3
2
3), (78, 50) */
/* CIF DECISION (2
032
, 33
1
), (78, 50) */
DECISION fail;
/* CIF ANSWER (
2163, 393
), (73, 28) */
/* CIF ANSWER (
1990, 401
), (73, 28) */
(true):
/* CIF PROCEDURECALL (
2123
, 4
36
), (153, 38) */
/* CIF PROCEDURECALL (
1950
, 4
44
), (153, 38) */
CALL writeln('FAIL');
/* CIF NEXTSTATE (
2164
, 4
8
9), (70, 35) */
/* CIF NEXTSTATE (
1991
, 49
7
), (70, 35) */
NEXTSTATE wait;
/* CIF ANSWER (2
323, 393
), (78, 28) */
/* CIF ANSWER (2
150, 401
), (78, 28) */
(false):
/* CIF PROCEDURECALL (2
287
, 4
36
), (150, 38) */
/* CIF PROCEDURECALL (2
114
, 4
44
), (150, 38) */
CALL writeln('1');
/* CIF TASK (2
308
, 4
8
9), (108, 35) */
/* CIF TASK (2
135
, 49
7
), (108, 35) */
TASK V2 := V1;
/* CIF TASK (230
3
, 5
39
), (118, 35) */
/* CIF TASK (2
1
30, 5
47
), (118, 35) */
TASK fail := true;
/* CIF JOIN (2
344
, 5
8
9), (35, 35) */
/* CIF JOIN (2
171
, 59
7
), (35, 35) */
JOIN one;
ENDDECISION;
ENDDECISION;
/* CIF STATE (
715, 549
), (70, 35) */
/* CIF STATE (
130, 407
), (70, 35) */
STATE wait;
ENDSTATE;
ENDPROCESS og;
\ 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