assemblyscript icon indicating copy to clipboard operation
assemblyscript copied to clipboard

ERROR TS2454: Variable is used before being assigned.

Open ultraviolet-jordan opened this issue 1 year ago • 2 comments

Bug description

I have updated my package version from 0.27.23 to 0.27.27.

There is now a compiling issue where: ERROR TS2454: Variable 'zj' is used before being assigned.

Steps to reproduce

Here is the code block:

let zn: i32 = gMinlen;
let zvec: i32;
let zj: u8;
for (zvec = getBits(gMinlen, state); zvec > unchecked(gLimit[zn]); zvec = (zvec << 1) | zj) {
    zn++;
    zj = getBit(state);
}

The fix is simple like:

let zn: i32 = gMinlen;
let zvec: i32;
let zj: u8 = 0; // <=== FIX
for (zvec = getBits(gMinlen, state); zvec > unchecked(gLimit[zn]); zvec = (zvec << 1) | zj) {
    zn++;
    zj = getBit(state);
}

I do not know if this is intended or not, here is valid Java code for example:

int zn = gMinlen;
int zvec;
byte zj;
for (zvec = getBits(gMinlen, s); zvec > gLimit[zn]; zvec = zvec << 1 | zj) {
    zn++;
    zj = getBit(s);
}

It seems this problem is still occurring, if it helps, this is the full source code to my project using this: https://github.com/2004scape/Client2/blob/main/assembly/bz2.ts

I've cleaned everything so I don't believe it is me.

@CountBleck @HerrCai0907

Ty!

AssemblyScript version

0.27.27

ultraviolet-jordan avatar Apr 11 '24 19:04 ultraviolet-jordan

It is fine for me. could you check the as version again? image

HerrCai0907 avatar Apr 11 '24 23:04 HerrCai0907

Hm something strange happening, if it's just me somehow then no problem, sorry lol image

ultraviolet-jordan avatar Apr 11 '24 23:04 ultraviolet-jordan