Skip to content

Commit 9a992ad

Browse files
committed
Optimize class fields declarations without rhs
1 parent 20fbc2a commit 9a992ad

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

src/WattleScript.Interpreter/Tree/GeneratedClosure.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public void ResolveScope(ScriptLoadingContext lcontext, Action<ScriptLoadingCont
6161
referenced[s] = new SymbolRefExpression(lcontext, lcontext.Scope.DefineLocal(s));
6262
}
6363
extra?.Invoke(lcontext);
64-
foreach(var e in toResolve) e.ResolveScope(lcontext);
64+
foreach(var e in toResolve) e?.ResolveScope(lcontext);
6565
frame = lcontext.Scope.PopFunction();
6666
}
6767

src/WattleScript.Interpreter/Tree/Statements/ClassDefinitionStatement.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,13 +183,13 @@ public ClassDefinitionStatement(ScriptLoadingContext lcontext) : base(lcontext)
183183
fields.Add(T, exp, modifierFlags, false);
184184
break;
185185
case TokenType.Comma:
186-
fields.Add(T, new LiteralExpression(lcontext, DynValue.Nil), modifierFlags, false);
186+
fields.Add(T, null, modifierFlags, false);
187187
resetModifiers = false;
188188
break;
189189
case TokenType.SemiColon:
190190
break;
191191
default:
192-
fields.Add(T, new LiteralExpression(lcontext, DynValue.Nil), modifierFlags, false);
192+
fields.Add(T, null, modifierFlags, false);
193193
break;
194194
}
195195

@@ -364,6 +364,11 @@ void CompileInit(FunctionBuilder parent)
364364
bc.Emit_CopyPriv();
365365
foreach (var field in fields.Where(x => !x.Flags.HasFlag(MemberModifierFlags.Static)))
366366
{
367+
if (field.Expr == null)
368+
{
369+
continue;
370+
}
371+
367372
field.Expr.CompilePossibleLiteral(bc);
368373
sym["table"].Compile(bc);
369374
bc.Emit_IndexSet(0, 0, field.Name, false, false, true);

0 commit comments

Comments
 (0)