This commit is contained in:
2022-08-21 00:51:28 +01:00
parent dc1914b9ed
commit 9c995830e2
3 changed files with 10 additions and 2 deletions

View File

@@ -46,7 +46,7 @@ var a = 1;
print a;
//test scope will shadow higher scope on redefine
var b = 3;
var b: int = 3;
{
var b = 4;
print b;

View File

@@ -144,7 +144,14 @@ static int writeLiteralTypeToCache(LiteralArray* literalCache, Literal literal)
//push the store to the cache, tweaking the type
Literal lit = TO_ARRAY_LITERAL(store);
lit.type = LITERAL_TYPE_INTERMEDIATE; //NOTE: tweaking the type usually isn't a good idea
return pushLiteralArray(literalCache, lit);
//BUGFIX: check if exactly this literal array exists
int index = findLiteralIndex(literalCache, lit);
if (index < 0) {
index = pushLiteralArray(literalCache, lit);
}
return index;
}
static int writeLiteralToCompiler(Compiler* compiler, Literal literal) {

View File

@@ -400,6 +400,7 @@ bool literalsAreEqual(Literal lhs, Literal rhs) {
return !strncmp(AS_STRING(lhs), AS_STRING(rhs), STRLEN(lhs));
case LITERAL_ARRAY:
case LITERAL_TYPE_INTERMEDIATE: //BUGFIX: used for storing types as an array
//mismatched sizes
if (AS_ARRAY(lhs)->count != AS_ARRAY(rhs)->count) {
return false;