From 787ba2b3e59d209f1ce7a1d5ba617975c2904d4f Mon Sep 17 00:00:00 2001 From: cs01 Date: Sun, 26 Apr 2026 11:56:56 -0700 Subject: [PATCH 1/3] re-trigger ci From c038f4f7124b0345e88839f65bc45dfaeaecd4d6 Mon Sep 17 00:00:00 2001 From: cs01 Date: Sun, 26 Apr 2026 12:32:37 -0700 Subject: [PATCH 2/3] [codegen] deduplicate fieldTypeToLlvmPrimitive into type-system.ts --- src/codegen/infrastructure/type-system.ts | 8 ++++++++ src/codegen/statements/control-flow.ts | 11 ++--------- src/codegen/types/objects/class.ts | 11 ++--------- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/codegen/infrastructure/type-system.ts b/src/codegen/infrastructure/type-system.ts index 236918bc..6c77b4da 100644 --- a/src/codegen/infrastructure/type-system.ts +++ b/src/codegen/infrastructure/type-system.ts @@ -221,6 +221,14 @@ export function createFloatType(): ResolvedType { return createResolvedType("number", { numericKind: "float" }); } +export function fieldTypeToLlvmPrimitive(fieldType: string): string | null { + if (fieldType === "string") return "i8*"; + if (fieldType === "number") return "double"; + if (fieldType === "boolean") return "double"; + if (fieldType.startsWith("'") || fieldType.startsWith('"')) return "i8*"; + return null; +} + export function tsTypeToLlvm(tsType: string): string { return canonicalTypeToLlvm(tsType, "default", false, false, ""); } diff --git a/src/codegen/statements/control-flow.ts b/src/codegen/statements/control-flow.ts index 58b38da0..5d69d819 100644 --- a/src/codegen/statements/control-flow.ts +++ b/src/codegen/statements/control-flow.ts @@ -43,6 +43,7 @@ import { classifyArray, ArrayKind_None, arrayKindToLlvm, + fieldTypeToLlvmPrimitive, } from "../infrastructure/type-system.js"; import { setWantsI1 } from "../expressions/condition-generator.js"; import { tryOptimizeWhileLoopMap } from "./loop-idiom.js"; @@ -863,16 +864,8 @@ export class ControlFlowGenerator { return type; } - private fieldTypeToLlvmPrimitive(fieldType: string): string | null { - if (fieldType === "string") return "i8*"; - if (fieldType === "number") return "double"; - if (fieldType === "boolean") return "double"; - if (fieldType.startsWith("'") || fieldType.startsWith('"')) return "i8*"; - return null; - } - private fieldTypeToLlvm(fieldType: string): string { - const prim = this.fieldTypeToLlvmPrimitive(fieldType); + const prim = fieldTypeToLlvmPrimitive(fieldType); if (prim) return prim; const ak = classifyArray(fieldType); if (ak !== ArrayKind_None) return arrayKindToLlvm(ak); diff --git a/src/codegen/types/objects/class.ts b/src/codegen/types/objects/class.ts index 7d254bfb..b7487a18 100644 --- a/src/codegen/types/objects/class.ts +++ b/src/codegen/types/objects/class.ts @@ -29,6 +29,7 @@ import { classifyArray, arrayKindToLlvm, ArrayKind_None, + fieldTypeToLlvmPrimitive, } from "../../infrastructure/type-system.js"; import type { FieldInfo } from "../../infrastructure/type-resolver/types.js"; import { emitZext, emitSitofp, emitPtrtoint } from "../../infrastructure/ir-builders.js"; @@ -1724,16 +1725,8 @@ export class ClassGenerator { this.ctx.defineVariable(paramName, allocaReg, llvmType, SymbolKind_Object, "local"); } - private fieldTypeToLlvmPrimitive(fieldType: string): string | null { - if (fieldType === "string") return "i8*"; - if (fieldType === "number") return "double"; - if (fieldType === "boolean") return "double"; - if (fieldType.startsWith("'") || fieldType.startsWith('"')) return "i8*"; - return null; - } - private fieldTypeToLlvm(fieldType: string): string { - const prim = this.fieldTypeToLlvmPrimitive(fieldType); + const prim = fieldTypeToLlvmPrimitive(fieldType); if (prim) return prim; const ak = classifyArray(fieldType); if (ak !== ArrayKind_None) return arrayKindToLlvm(ak); From 850750b244d3abd3c9c8b5c5533405c29760254f Mon Sep 17 00:00:00 2001 From: cs01 Date: Sun, 26 Apr 2026 15:52:13 -0700 Subject: [PATCH 3/3] ci: retrigger after stuck macos job