inconsistent result of var declarations
x87 opened this issue · 2 comments
x87 commented
there are two main ways of declaring a variable type:
- using
var
keyword.var 0@: int
,var $var: int
- using a predefined type followed by variable name:
int a
,int 0@
,int $var
For local variables (@) and global variables ($, &) the end result is the same regardless of the chosen syntax.
For identifiers the results are different.
int a
acts similarly to const a = 0@
var a: int
yields no error, but does not create a new variable either. var a: int = 100
produces an error
declaring another constant with the same name shadows the variable declaration:
const a = $100
int a
a = 1 // expected local var 0@, got $100
const a = $100
var a: int = 100 // compiles as $100 = 0
Expectation
const a = $100
int a = 0
should throw a duplicate constant name error
2. var a: int
should mirror int a
behavior
x87 commented
const a = $100
int a = 0
is now a compile error (0090) in 4.0.0 beta.0
x87 commented
var a: int
declares a new local variable (only in a CLEO script) in 4.0.0 beta.2