@@ -9,7 +9,15 @@ import {RUNTIME_DEFINITION_FILE} from "@static-script/runtime";
99import { LANGUAGE_DEFINITION_FILE } from "../../constants" ;
1010import { CMangler } from "./c.mangler" ;
1111import { ManglerInterface } from "./mangler.interface" ;
12- import { ClassReference , FunctionReference , ObjectReference , Primitive , Value , ValueTypeEnum } from "./value" ;
12+ import {
13+ ArrayReference ,
14+ ClassReference ,
15+ FunctionReference ,
16+ ObjectReference ,
17+ Primitive ,
18+ Value ,
19+ ValueTypeEnum
20+ } from "./value" ;
1321import { BinaryExpressionCodeGenerator } from "./code-generation/binary-expression" ;
1422import { ReturnStatementCodeGenerator } from "./code-generation/return-statement" ;
1523import { ForStatementGenerator } from "./code-generation/for-statement" ;
@@ -19,6 +27,8 @@ import {BreakStatementGenerator} from "./code-generation/break-statement";
1927import { ContinueStatementGenerator } from "./code-generation/continue-statement" ;
2028import { ClassDeclarationGenerator } from "./code-generation/class-statement" ;
2129import { NewExpressionGenerator } from "./code-generation/new-expression" ;
30+ import { ArrayLiteralExpressionCodeGenerator } from "./code-generation/array-literal-expression" ;
31+ import { ArrayLiteralExpression } from "typescript" ;
2232
2333export function passIfStatement ( parent : ts . IfStatement , ctx : Context , builder : llvm . IRBuilder ) {
2434 const positiveBlock = llvm . BasicBlock . create ( ctx . llvmContext , "if.true" ) ;
@@ -408,6 +418,8 @@ export function buildFromExpression(block: ts.Expression, ctx: Context, builder:
408418 return buildFromIdentifier ( < any > block , ctx , builder ) ;
409419 case ts . SyntaxKind . NumericLiteral :
410420 return buildFromNumericLiteral ( < any > block , ctx , builder , nativeType ) ;
421+ case ts . SyntaxKind . ArrayLiteralExpression :
422+ return new ArrayLiteralExpressionCodeGenerator ( ) . generate ( block as ArrayLiteralExpression , ctx , builder ) ;
411423 case ts . SyntaxKind . StringLiteral :
412424 return buildFromStringValue ( < any > block , ctx , builder ) ;
413425 case ts . SyntaxKind . TrueKeyword :
@@ -443,7 +455,7 @@ export function passVariableDeclaration(block: ts.VariableDeclaration, ctx: Cont
443455 let allocate : llvm . AllocaInst ;
444456
445457 const defaultValue = buildFromExpression ( block . initializer , ctx , builder , nativeTypeForDefaultValue ) ;
446- if ( defaultValue instanceof ObjectReference ) {
458+ if ( defaultValue instanceof ObjectReference || defaultValue instanceof ArrayReference ) {
447459 allocate = defaultValue . getValue ( ) ;
448460 } else {
449461 allocate = builder . createAlloca (
0 commit comments