Skip to content

Commit 80178f4

Browse files
committed
.length property on string literals
1 parent 4995d85 commit 80178f4

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

src/MoonSharp.Interpreter/Tree/Expression_.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ internal static Expression SimpleExp(ScriptLoadingContext lcontext)
172172
case TokenType.Number:
173173
case TokenType.Number_Hex:
174174
case TokenType.Number_HexFloat:
175-
case TokenType.String:
175+
case TokenType.String when lcontext.Syntax != ScriptSyntax.CLike:
176176
case TokenType.String_Long:
177177
case TokenType.Nil:
178178
case TokenType.True:
@@ -305,6 +305,8 @@ private static Expression PrefixExp(ScriptLoadingContext lcontext)
305305
Token T = lcontext.Lexer.Current;
306306
switch (T.Type)
307307
{
308+
case TokenType.String when lcontext.Syntax == ScriptSyntax.CLike:
309+
return new LiteralExpression(lcontext, T);
308310
case TokenType.Brk_Open_Round:
309311
lcontext.Lexer.Next();
310312
Expression e = Expr(lcontext);

src/MoonSharp.Tests/EndToEnd/CSyntaxTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,14 @@ public void LengthProperty()
418418
", s => s.Options.Syntax = ScriptSyntax.CLike);
419419
}
420420

421+
[Test]
422+
public void LengthStringLiteral()
423+
{
424+
TestScript.Run(@"
425+
assert.areequal(5, 'hello'.length);
426+
", s => s.Options.Syntax = ScriptSyntax.CLike);
427+
}
428+
421429
[Test]
422430
public void LengthPropertyReadonly()
423431
{

0 commit comments

Comments
 (0)