Skip to content

Commit 0df9c7e

Browse files
committed
Feature: Support for number2string (initial)
1 parent c4f9a1f commit 0df9c7e

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

src/Backend/LLVM/index.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ function buildFromCallExpression(
149149
const callle = buildFromExpression(expr.callee, ctx, builder);
150150
if (!callle) {
151151
throw new Error(
152-
`We cannot prepare expression to call this function`
152+
`We cannot prepare expression to call this function, ${expr.callee.type}`
153153
);
154154
}
155155

@@ -273,6 +273,12 @@ export function generateModuleFromFile(file: File): llvm.Module {
273273
], false);
274274
ctx.llvmModule.getOrInsertFunction('puts', putsFnType);
275275

276+
let number2stringFnType = llvm.FunctionType.get(llvm.Type.getInt8PtrTy(ctx.llvmContext), [
277+
llvm.Type.getDoubleTy(ctx.llvmContext)
278+
], false);
279+
llvm.Function.create(number2stringFnType, llvm.LinkageTypes.ExternalLinkage, "_Z13number2stringd", ctx.llvmModule);
280+
// ctx.llvmModule.getOrInsertFunction();
281+
276282
let mainFnType = llvm.FunctionType.get(llvm.Type.getVoidTy(ctx.llvmContext), false);
277283
let mainFn = llvm.Function.create(mainFnType, llvm.LinkageTypes.ExternalLinkage, "main", ctx.llvmModule);
278284

src/Frontend/TypeScript/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ const example = `
99
return ((a + b) * 50) / 10;
1010
}
1111
12-
doMath();
12+
puts("hello");
13+
puts(_Z13number2stringd(doMath()));
1314
}
1415
`;
1516

0 commit comments

Comments
 (0)