@@ -10181,8 +10181,9 @@ export class Compiler extends DiagnosticEmitter {
1018110181 let parameterIndex = fieldPrototype . parameterIndex ;
1018210182 let typeNode = field . typeNode ;
1018310183 if ( typeNode ) this . checkTypeSupported ( fieldType , typeNode ) ;
10184- let initExpr : ExpressionRef = - 1 ;
10184+ let initExpr : ExpressionRef = 0 ;
1018510185 const isDefiniteAssigment = field . is ( CommonFlags . DEFINITE_ASSIGNMENT ) ;
10186+ let definitelyInitialized = false ;
1018610187
1018710188 // if declared as a constructor parameter, use its value
1018810189 if ( parameterIndex >= 0 ) {
@@ -10193,6 +10194,7 @@ export class Compiler extends DiagnosticEmitter {
1019310194 nativeFieldType
1019410195 ) ;
1019510196 if ( fieldType . isManaged ) initExpr = this . makeRetain ( initExpr ) ;
10197+ definitelyInitialized = true ;
1019610198
1019710199 // fall back to use initializer if present
1019810200 } else if ( initializerNode ) {
@@ -10202,20 +10204,25 @@ export class Compiler extends DiagnosticEmitter {
1020210204 if ( fieldType . isManaged && ! this . skippedAutoreleases . has ( initExpr ) ) {
1020310205 initExpr = this . makeRetain ( initExpr ) ;
1020410206 }
10205- } else if ( isDefiniteAssigment ) {
10207+ definitelyInitialized = true ;
10208+ } else {
1020610209 // otherwise initialize with default if marked as definite assigment
10210+ if ( isDefiniteAssigment ) {
10211+ definitelyInitialized = true ;
10212+ }
1020710213 initExpr = this . makeZero ( fieldType ) ;
1020810214 }
1020910215
10210- if ( initExpr >= 0 ) {
10211- stmts . push (
10212- module . store ( fieldType . byteSize ,
10213- module . local_get ( thisLocalIndex , nativeSizeType ) ,
10214- initExpr ,
10215- nativeFieldType ,
10216- field . memoryOffset
10217- )
10218- ) ;
10216+ stmts . push (
10217+ module . store ( fieldType . byteSize ,
10218+ module . local_get ( thisLocalIndex , nativeSizeType ) ,
10219+ initExpr ,
10220+ nativeFieldType ,
10221+ field . memoryOffset
10222+ )
10223+ ) ;
10224+
10225+ if ( definitelyInitialized ) {
1021910226 flow . setFieldFlag ( field . internalName , FieldFlags . INITIALIZED ) ;
1022010227 } else {
1022110228 flow . setFieldFlag ( field . internalName , FieldFlags . NONE ) ;
0 commit comments