Skip to content

Commit 9fe5a1f

Browse files
committed
Relax class fields declr rhs
1 parent 65a40a4 commit 9fe5a1f

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

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

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ public ClassDefinitionStatement(ScriptLoadingContext lcontext) : base(lcontext)
153153
{
154154
var T = lcontext.Lexer.Current;
155155
lcontext.Lexer.Next();
156+
bool resetModifiers = true;
156157
switch (lcontext.Lexer.Current.Type)
157158
{
158159
case TokenType.Brk_Open_Round:
@@ -181,14 +182,22 @@ public ClassDefinitionStatement(ScriptLoadingContext lcontext) : base(lcontext)
181182
var exp = Expression.Expr(lcontext, true);
182183
fields.Add(T, exp, modifierFlags, false);
183184
break;
184-
case TokenType.Comma: //no-op
185+
case TokenType.Comma:
186+
fields.Add(T, new LiteralExpression(lcontext, DynValue.Nil), modifierFlags, false);
187+
resetModifiers = false;
188+
break;
185189
case TokenType.SemiColon:
186190
break;
187191
default:
188-
CheckTokenType(lcontext, TokenType.SemiColon); //throws error
192+
fields.Add(T, new LiteralExpression(lcontext, DynValue.Nil), modifierFlags, false);
189193
break;
190194
}
191-
modifierFlags = MemberModifierFlags.None;
195+
196+
if (resetModifiers)
197+
{
198+
modifierFlags = MemberModifierFlags.None;
199+
}
200+
192201
break;
193202
}
194203
default:
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class C {
2+
private a, b, c
3+
p2
4+
5+
C() {
6+
this.a = 2
7+
this.p2 = 20
8+
}
9+
10+
f2() {
11+
print(this.a)
12+
}
13+
}
14+
15+
c = new C()
16+
print(c.a)
17+
c.f2()
18+
print(c.p2)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
nil
2+
2
3+
20

0 commit comments

Comments
 (0)