Skip to content

Commit a5020d7

Browse files
committed
SMV: do not allow defining identifiers that are already declared
VAR x : ... followed by DEFINE x := ... must be errored.
1 parent ed94b75 commit a5020d7

11 files changed

+72
-1
lines changed

regression/smv/define/define2.desc

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
define2.smv
3+
4+
^file .* line 6: variable `x' already declared.*$
5+
^EXIT=1$
6+
^SIGNAL=0$
7+
--
8+
--

regression/smv/define/define2.smv

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
MODULE main
2+
3+
VAR x : boolean;
4+
5+
-- not allowed, x is already a variable
6+
DEFINE x := TRUE;

regression/smv/define/define3.desc

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
define3.smv
3+
4+
^file .* line 6: variable `x' already defined.*$
5+
^EXIT=1$
6+
^SIGNAL=0$
7+
--
8+
--

regression/smv/define/define3.smv

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
MODULE main
2+
3+
DEFINE x := TRUE;
4+
5+
-- not allowed, x is already defined
6+
VAR x : boolean;

regression/smv/define/define4.desc

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
define4.smv
3+
4+
^file .* line 6: variable `x' already defined.*$
5+
^EXIT=1$
6+
^SIGNAL=0$
7+
--
8+
--

regression/smv/define/define4.smv

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
MODULE main
2+
3+
DEFINE x := TRUE;
4+
5+
-- not allowed, x is already defined
6+
ASSIGN x := TRUE;

regression/smv/define/define5.desc

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
KNOWNBUG
2+
define5.smv
3+
4+
^file .* line 6: variable `x' already defined.*$
5+
^EXIT=1$
6+
^SIGNAL=0$
7+
--
8+
--

regression/smv/define/define5.smv

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
MODULE main
2+
3+
DEFINE x := TRUE;
4+
5+
-- not allowed, x is already defined
6+
ASSIGN next(x) := TRUE;

regression/smv/define/define6.desc

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
KNOWNBUG
2+
define6.smv
3+
4+
^file .* line 6: variable `x' already defined.*$
5+
^EXIT=1$
6+
^SIGNAL=0$
7+
--
8+
--

regression/smv/define/define6.smv

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
MODULE main
2+
3+
DEFINE x := TRUE;
4+
5+
-- not allowed, x is already defined
6+
ASSIGN init(x) := TRUE;

src/smvlang/parser.y

+2-1
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,8 @@ define : assignment_var BECOMES_Token formula ';'
489489
break;
490490

491491
case smv_parse_treet::mc_vart::DECLARED:
492-
var.var_class=smv_parse_treet::mc_vart::DEFINED;
492+
yyerror("variable `"+id2string(identifier)+"' already declared");
493+
YYERROR;
493494
break;
494495

495496
case smv_parse_treet::mc_vart::DEFINED:

0 commit comments

Comments
 (0)