Skip to content

Commit

Permalink
Fixed an issue when comparison result is used as an argument in a met…
Browse files Browse the repository at this point in the history
…hod call nreco#30
  • Loading branch information
VitaliyMF committed Jul 8, 2020
1 parent 11235fe commit b2b3a1a
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 4 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,6 @@ var lambdaParser = new LambdaParser(valComparer);
NReco.LambdaParser is in production use at [SeekTable.com](https://www.seektable.com/) and [PivotData microservice](https://www.nrecosite.com/pivotdata_service.aspx) (used for user-defined calculated cube members: formulas, custom formatting).

## License
Copyright 2016-2019 Vitaliy Fedorchenko
Copyright 2016-2020 Vitaliy Fedorchenko

Distributed under the MIT license
2 changes: 2 additions & 0 deletions src/NReco.LambdaParser.Tests/LambdaParserTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ public class LambdaParserTests {

Assert.Equal("st", lambdaParser.Eval("test.Substring(2)", varContext ) );

Assert.Equal(true, lambdaParser.Eval("NOT(NOT(1==1))", varContext));

Assert.Equal(3M, lambdaParser.Eval("1+2", varContext) );
Assert.Equal(6M, lambdaParser.Eval("1+2+3", varContext));
Assert.Equal("b{0}_", lambdaParser.Eval("\"b{0}_\"", varContext));
Expand Down
7 changes: 6 additions & 1 deletion src/NReco.LambdaParser/Linq/LambdaParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -536,7 +536,12 @@ internal class ExtractParamsVisitor : ExpressionVisitor {
}
// read parameter
var paramExpr = ParseConditional(expr, end);
args.Add(paramExpr.Expr);
var argExpr = paramExpr.Expr;
if (!(argExpr is ConstantExpression constExpr && constExpr.Value is LambdaParameterWrapper)) {
// result may be a primitive type like bool
argExpr = Expression.Convert(argExpr, typeof(object));
}
args.Add(argExpr);
end = paramExpr.End;
} while (true);
}
Expand Down
7 changes: 5 additions & 2 deletions src/NReco.LambdaParser/NReco.LambdaParser.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
<PropertyGroup>
<Description>Runtime expressions parser and evaluator (formulas, conditions, method calls, properties/indexers etc). Builds LINQ expression tree and compiles it to lambda delegate with full support of dynamically typed variables.</Description>
<Title>Dynamic expressions evaluator</Title>
<Copyright>Copyright (c) 2013-2019 Vitalii Fedorchenko</Copyright>
<Copyright>Copyright (c) 2013-2020 Vitalii Fedorchenko</Copyright>
<AssemblyTitle>NReco.LambdaParser</AssemblyTitle>
<VersionPrefix>1.0.11</VersionPrefix>
<VersionPrefix>1.0.12</VersionPrefix>
<Authors>Vitalii Fedorchenko</Authors>
<TargetFrameworks>netstandard2.0;netstandard1.3;net45</TargetFrameworks>
<!--TargetFrameworks>netstandard2.0;netstandard1.3;portable-net45+win8+wpa81+wp8;portable-net40+sl5+win8+wpa81+wp8</TargetFrameworks-->
Expand All @@ -17,6 +17,9 @@
<PackageId>NReco.LambdaParser</PackageId>
<PackageTags>LambdaParser;Formula;Parser;Math;Expression;Evaluator;Eval;LINQ-dynamic;PCL;netstandard;netcore;net40;net45;WindowsPhone8;Silverlight</PackageTags>
<PackageReleaseNotes>Source code and examples: https://github.com/nreco/lambdaparser
v.1.0.12 changes:
- fixed an issue when comparison result is used as an argument in a method call #30

v.1.0.11 changes:
- removed legacy Portable targets that cause build problems in some environments

Expand Down

0 comments on commit b2b3a1a

Please sign in to comment.