File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -292,8 +292,22 @@ function declareFunctionFromDefinition(
292292 builder : llvm . IRBuilder ,
293293 name : string
294294) : llvm . Function {
295+ let returnType = llvm . Type . getVoidTy ( ctx . llvmContext ) ;
296+
297+ if ( stmt . type ) {
298+ const nativeReturnType = NativeTypeResolver . getType ( ctx . typeChecker . getTypeFromTypeNode ( stmt . type ) , ctx ) ;
299+ if ( nativeReturnType ) {
300+ returnType = nativeReturnType . getType ( ) ;
301+ } else {
302+ throw new UnsupportedError (
303+ stmt ,
304+ `Unsupported return type`
305+ ) ;
306+ }
307+ }
308+
295309 let fnType = llvm . FunctionType . get (
296- stmt . type ? NativeTypeResolver . getType ( ctx . typeChecker . getTypeFromTypeNode ( stmt . type ) , ctx ) . getType ( ) : llvm . Type . getVoidTy ( ctx . llvmContext ) ,
310+ returnType ,
297311 stmt . parameters . map ( ( parameter ) => {
298312 if ( parameter . type ) {
299313 const nativeType = NativeTypeResolver . getType ( ctx . typeChecker . getTypeFromTypeNode ( parameter . type ) , ctx ) ;
You can’t perform that action at this time.
0 commit comments