File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -3,10 +3,21 @@ import * as ts from 'typescript';
33
44export class CPPMangler {
55 static getFunctionName ( name : string , parameters : ts . NodeArray < ts . ParameterDeclaration > ) : string {
6- if ( name === 'puts' ) {
7- return name ;
8- }
6+ return '_Z' + name . length + name + parameters . map (
7+ ( parameter ) => {
8+ if ( parameter . type ) {
9+ switch ( parameter . type . kind ) {
10+ case ts . SyntaxKind . NumberKeyword :
11+ return 'd' ;
12+ default :
13+ throw new Error (
14+ `Unsupported mangling parameter type: ${ parameter . type . kind } `
15+ ) ;
16+ }
17+ }
918
10- return '_Z13number2stringd' ;
19+ throw new Error ( 'Unsupported mangling without type' ) ;
20+ }
21+ ) ;
1122 }
1223}
Original file line number Diff line number Diff line change @@ -324,7 +324,11 @@ export function generateModuleFromProgram(program: ts.Program): llvm.Module {
324324 llvm . Function . create (
325325 number2stringFnType ,
326326 llvm . LinkageTypes . ExternalLinkage ,
327- CPPMangler . getFunctionName ( "number2string" , < any > [ ] ) ,
327+ CPPMangler . getFunctionName ( "number2string" , < any > [
328+ {
329+ type : { kind : ts . SyntaxKind . NumberKeyword }
330+ }
331+ ] ) ,
328332 ctx . llvmModule
329333 ) ;
330334
You can’t perform that action at this time.
0 commit comments