Skip to content

Commit 0dc22b1

Browse files
cs01claude
andauthored
fix: add missing setvariabletype in array filter, map, reduce, some, every, includes, shift (#179)
Co-authored-by: cs01 <cs01@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 3f7fe80 commit 0dc22b1

4 files changed

Lines changed: 13 additions & 3 deletions

File tree

src/codegen/stdlib/response.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ interface ResponseGeneratorContext {
3030
setVariableType(name: string, type: string): void;
3131
interfaceStructGen?: InterfaceStructGenerator;
3232
interfaceStructGenHasInterface(name: string): boolean;
33+
setUsesJson(value: boolean): void;
3334
}
3435

3536
export class ResponseGenerator {
@@ -68,7 +69,7 @@ export class ResponseGenerator {
6869
* @param responsePtr - LLVM register holding Response*
6970
*/
7071
generateJson(responsePtr: string): string {
71-
// Get the body string first
72+
this.ctx.setUsesJson(true);
7273
const bodyPtr = this.generateText(responsePtr);
7374

7475
// Parse JSON using cJSON library (same as JSON.parse())
@@ -117,6 +118,7 @@ export class ResponseGenerator {
117118
* @param interfaceDef - Interface definition with properties
118119
*/
119120
generateTypedJson(responsePtr: string, typeName: string, interfaceDef: InterfaceDefInfo): string {
121+
this.ctx.setUsesJson(true);
120122
const alreadyDefined = this.ctx.interfaceStructGen?.hasInterface(typeName);
121123

122124
if (!this.generatedStructs.has(typeName) && !alreadyDefined) {

src/codegen/types/collections/array/iteration.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ function generateNumericArrayFilter(
154154
gen.emitBr(checkLabel);
155155

156156
gen.emitLabel(endLabel);
157+
gen.setVariableType(resultArrayPtr, "%Array*");
157158
return resultArrayPtr;
158159
}
159160

@@ -580,8 +581,7 @@ function generateStringArrayReduce(
580581
gen.emitBr(checkLabel);
581582

582583
gen.emitLabel(endLabel);
583-
const finalAcc = gen.nextTemp();
584-
gen.emit(`${finalAcc} = load i8*, i8** ${accPtr}`);
584+
const finalAcc = gen.emitLoad("i8*", accPtr);
585585
return finalAcc;
586586
}
587587

@@ -737,6 +737,7 @@ function generateNumericArrayMap(
737737
gen.emitBr(checkLabel);
738738

739739
gen.emitLabel(endLabel);
740+
gen.setVariableType(resultArrayPtr, "%Array*");
740741
return resultArrayPtr;
741742
}
742743

src/codegen/types/collections/array/reorder.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ function generateNumericArrayShift(gen: IGeneratorContext, arrayPtr: string): st
236236
gen.emitLabel(endLabel);
237237
const result = gen.nextTemp();
238238
gen.emit(`${result} = phi double [ 0.0, %${emptyLabel} ], [ ${firstElem}, %${notEmptyLabel} ]`);
239+
gen.setVariableType(result, "double");
239240
return result;
240241
}
241242

src/codegen/types/collections/array/search-predicate.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,7 @@ function generateNumericArraySome(
289289
const resultI32 = gen.emitLoad("i32", resultPtr);
290290
const result = gen.nextTemp();
291291
gen.emit(`${result} = sitofp i32 ${resultI32} to double`);
292+
gen.setVariableType(result, "double");
292293
return result;
293294
}
294295

@@ -361,6 +362,7 @@ function generateStringArraySome(
361362
const resultI32 = gen.emitLoad("i32", resultPtr);
362363
const result = gen.nextTemp();
363364
gen.emit(`${result} = sitofp i32 ${resultI32} to double`);
365+
gen.setVariableType(result, "double");
364366
return result;
365367
}
366368

@@ -463,6 +465,7 @@ function generateNumericArrayEvery(
463465
const resultI32 = gen.emitLoad("i32", resultPtr);
464466
const result = gen.nextTemp();
465467
gen.emit(`${result} = sitofp i32 ${resultI32} to double`);
468+
gen.setVariableType(result, "double");
466469
return result;
467470
}
468471

@@ -535,6 +538,7 @@ function generateStringArrayEvery(
535538
const resultI32 = gen.emitLoad("i32", resultPtr);
536539
const result = gen.nextTemp();
537540
gen.emit(`${result} = sitofp i32 ${resultI32} to double`);
541+
gen.setVariableType(result, "double");
538542
return result;
539543
}
540544

@@ -628,6 +632,7 @@ function generateIntArrayIncludes(
628632
gen.emit(`${resultI32} = phi i32 [ 0, %${checkLabel} ], [ 1, %${foundLabel} ]`);
629633
const result = gen.nextTemp();
630634
gen.emit(`${result} = sitofp i32 ${resultI32} to double`);
635+
gen.setVariableType(result, "double");
631636
return result;
632637
}
633638

@@ -691,5 +696,6 @@ function generateStringArrayIncludes(
691696
gen.emit(`${resultI32} = phi i32 [ 0, %${checkLabel} ], [ 1, %${foundLabel} ]`);
692697
const result = gen.nextTemp();
693698
gen.emit(`${result} = sitofp i32 ${resultI32} to double`);
699+
gen.setVariableType(result, "double");
694700
return result;
695701
}

0 commit comments

Comments
 (0)