ソースを参照

Support template literals as keys (#1452)

Marko Lahma 2 年 前
コミット
f95845df38
2 ファイル変更11 行追加1 行削除
  1. 9 0
      Jint.Tests/Runtime/StringTests.cs
  2. 2 1
      Jint/EsprimaExtensions.cs

+ 9 - 0
Jint.Tests/Runtime/StringTests.cs

@@ -72,4 +72,13 @@ bar += 'bar';
         Assert.Equal("test 1,2,three,true", engine.Evaluate("'test ' + a"));
         Assert.Equal("test 1,2,three,true", engine.Evaluate("`test ${a}`"));
     }
+
+    [Fact]
+    public void TemplateLiteralAsObjectKey()
+    {
+        var engine=new Engine();
+        var result = engine.Evaluate("({ [`key`]: 'value' })").AsObject();
+        Assert.True(result.HasOwnProperty("key"));
+        Assert.Equal("value", result["key"]);
+    }
 }

+ 2 - 1
Jint/EsprimaExtensions.cs

@@ -69,7 +69,8 @@ namespace Jint
                 or Nodes.ConditionalExpression
                 or Nodes.ArrowFunctionExpression
                 or Nodes.FunctionExpression
-                or Nodes.YieldExpression)
+                or Nodes.YieldExpression
+                or Nodes.TemplateLiteral)
             {
                 var context = engine._activeEvaluationContext;
                 return JintExpression.Build(expression).GetValue(context!);