From 38f45f72bcd2c5541a73f9eff995579ed3a1586b Mon Sep 17 00:00:00 2001 From: cs01 Date: Sun, 26 Apr 2026 11:56:56 -0700 Subject: [PATCH 1/2] re-trigger ci From c63d0cc27b18a703960dab83598c597d84b4c105 Mon Sep 17 00:00:00 2001 From: cs01 Date: Sun, 26 Apr 2026 17:26:14 -0700 Subject: [PATCH 2/2] [type-system] migrate 4 endswith guard checks to isanyarraytstype --- src/codegen/infrastructure/type-resolver/type-resolver.ts | 3 ++- src/codegen/infrastructure/variable-allocator.ts | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) 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 (