@@ -2,6 +2,7 @@ import * as ts from "typescript";
22import * as lua from "../../../../LuaAST" ;
33import { TransformationContext } from "../../../context" ;
44import { createSelfIdentifier } from "../../../utils/lua-ast" ;
5+ import { transformInPrecedingStatementScope } from "../../../utils/preceding-statements" ;
56import { transformPropertyName } from "../../literal" ;
67import { createDecoratingExpression , transformDecoratorExpression } from "../decorators" ;
78import { transformMemberExpressionOwnerName } from "./method" ;
@@ -30,18 +31,22 @@ export function transformClassInstanceFields(
3031 const statements : lua . Statement [ ] = [ ] ;
3132
3233 for ( const f of instanceFields ) {
33- // Get identifier
34- const fieldName = transformPropertyName ( context , f . name ) ;
34+ const [ precedingStatements , statement ] = transformInPrecedingStatementScope ( context , ( ) => {
35+ // Get identifier
36+ const fieldName = transformPropertyName ( context , f . name ) ;
3537
36- const value = f . initializer ? context . transformExpression ( f . initializer ) : undefined ;
38+ const value = f . initializer ? context . transformExpression ( f . initializer ) : undefined ;
3739
38- // self[fieldName]
39- const selfIndex = lua . createTableIndexExpression ( createSelfIdentifier ( ) , fieldName ) ;
40+ // self[fieldName]
41+ const selfIndex = lua . createTableIndexExpression ( createSelfIdentifier ( ) , fieldName ) ;
4042
41- // self[fieldName] = value
42- const assignClassField = lua . createAssignmentStatement ( selfIndex , value , f ) ;
43+ // self[fieldName] = value
44+ const assignClassField = lua . createAssignmentStatement ( selfIndex , value , f ) ;
4345
44- statements . push ( assignClassField ) ;
46+ return assignClassField ;
47+ } ) ;
48+
49+ statements . push ( ...precedingStatements , statement ) ;
4550 }
4651
4752 return statements ;
0 commit comments