Skip to content

Commit 8a20889

Browse files
author
Sébastien Geiser
committed
Correction of conflict variable assignation vs on the fly in object with same name
1 parent b4063e9 commit 8a20889

File tree

5 files changed

+35
-2
lines changed

5 files changed

+35
-2
lines changed

CodingSeb.ExpressionEvaluator.Tests/ExpressionEvaluatorScriptEvaluateTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,6 +1283,12 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
12831283
.SetCategory("#26")
12841284
.Returns(false);
12851285

1286+
yield return new TestCaseData(Resources.Script0050, null, null, null)
1287+
.SetCategory("Script")
1288+
.SetCategory("conflict variable assignation vs on the fly in object with same name")
1289+
.SetCategory("Bug")
1290+
.Returns("{\"Hello\":3,\"No\":\"Yes\"}");
1291+
12861292
#endregion
12871293
}
12881294
}

CodingSeb.ExpressionEvaluator.Tests/Resources.Designer.cs

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CodingSeb.ExpressionEvaluator.Tests/Resources.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,4 +265,7 @@
265265
<data name="Script0049" type="System.Resources.ResXFileRef, System.Windows.Forms">
266266
<value>resources\script0049.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
267267
</data>
268+
<data name="Script0050" type="System.Resources.ResXFileRef, System.Windows.Forms">
269+
<value>resources\script0050.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
270+
</data>
268271
</root>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
/* Script0050 */
2+
Json = "hye";
3+
4+
x = new ExpandoObject();
5+
x.Hello = 3;
6+
x.No = "Yes";
7+
8+
x.Json;

CodingSeb.ExpressionEvaluator/ExpressionEvaluator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1830,8 +1830,8 @@ private bool EvaluateVarOrFunc(string expr, string restOfExpression, Stack<objec
18301830
{
18311831
stack.Push(varValueToPush);
18321832
}
1833-
else if ((Variables.TryGetValue(varFuncName, out dynamic cusVarValueToPush)
1834-
|| (!varFuncMatch.Groups["inObject"].Success && varFuncMatch.Groups["assignationOperator"].Success))
1833+
else if ((Variables.TryGetValue(varFuncName, out dynamic cusVarValueToPush) || varFuncMatch.Groups["assignationOperator"].Success)
1834+
&& !varFuncMatch.Groups["inObject"].Success
18351835
&& (cusVarValueToPush == null || !TypesToBlock.Contains(cusVarValueToPush.GetType())))
18361836
{
18371837
stack.Push(cusVarValueToPush);

0 commit comments

Comments
 (0)