sannybuilder/dev

inconsistent result of var declarations

x87 opened this issue · 2 comments

x87 commented

there are two main ways of declaring a variable type:

  1. using var keyword. var 0@: int, var $var: int
  2. 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