Skip to content

Commit 1847d80

Browse files
committed
Feature(compiler): Support more types as fn return by using NativeTypeResolver
1 parent 31ec784 commit 1847d80

1 file changed

Lines changed: 1 addition & 12 deletions

File tree

src/backend/llvm/index.ts

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -161,18 +161,7 @@ export function passFunctionDeclaration(parent: ts.FunctionDeclaration, ctx: Con
161161
throw Error('Function must be declared with return type');
162162
}
163163

164-
let returnType = llvm.Type.getVoidTy(ctx.llvmContext);
165-
166-
switch (parent.type.kind) {
167-
case ts.SyntaxKind.NumberKeyword:
168-
returnType = llvm.Type.getDoubleTy(ctx.llvmContext);
169-
break;
170-
default:
171-
throw Error(
172-
`Function declared with unsupported return type, unexpected "${parent.type.kind}"`
173-
);
174-
}
175-
164+
let returnType = NativeTypeResolver.getType(ctx.typeChecker.getTypeFromTypeNode(parent.type), ctx).getType();
176165
let fnType = llvm.FunctionType.get(returnType, false);
177166
let fn = llvm.Function.create(fnType, llvm.LinkageTypes.ExternalLinkage, <string>parent.name.escapedText, ctx.llvmModule);
178167

0 commit comments

Comments
 (0)