diff --git a/src/codegen/infrastructure/type-resolver/type-resolver.ts b/src/codegen/infrastructure/type-resolver/type-resolver.ts index 83421231a..c22727fd0 100644 --- a/src/codegen/infrastructure/type-resolver/type-resolver.ts +++ b/src/codegen/infrastructure/type-resolver/type-resolver.ts @@ -42,6 +42,7 @@ import { parseSetTypeString, parseArrayTypeString, canonicalTypeToLlvm, + isAnyArrayTsType, } from "../type-system.js"; interface ExprBase { @@ -736,7 +737,7 @@ export class TypeResolver { if (!valueType) return null; if (valueType === "string" || valueType === "number" || valueType === "boolean") return null; - if (valueType.endsWith("[]")) { + if (isAnyArrayTsType(valueType)) { return valueType; } diff --git a/src/codegen/infrastructure/variable-allocator.ts b/src/codegen/infrastructure/variable-allocator.ts index 55139f0bb..ca4818c0d 100644 --- a/src/codegen/infrastructure/variable-allocator.ts +++ b/src/codegen/infrastructure/variable-allocator.ts @@ -609,7 +609,7 @@ export class VariableAllocator { ); this.ctx.emit(`${allocaReg} = alloca %Array*`); this.ctx.emit(`store %Array* null, %Array** ${allocaReg}`); - } else if (baseType.endsWith("[]")) { + } else if (isAnyArrayTsType(baseType)) { this.ctx.defineVariableWithMetadata( stmt.name, allocaReg, @@ -747,7 +747,7 @@ export class VariableAllocator { this.ctx.setExpectedArrayElementType("boolean"); } else if (strippedType === "number[]") { this.ctx.setExpectedArrayElementType("number"); - } else if (strippedType.endsWith("[]")) { + } else if (isAnyArrayTsType(strippedType)) { this.ctx.setExpectedArrayElementType("pointer"); } } @@ -880,7 +880,7 @@ export class VariableAllocator { const genericReturn = this.resolveGenericCallReturnType(stmtValue); if (genericReturn === "string") isString = true; else if (genericReturn === "string[]") isStringArray = true; - else if (genericReturn && genericReturn.endsWith("[]")) isObjectArray = true; + else if (genericReturn && isAnyArrayTsType(genericReturn)) isObjectArray = true; } if (