Browse Source

IntroduceQueryExpressions: Do not ignore attributes on lambdas

pull/2642/head
Siegfried Pammer 4 years ago
parent
commit
cbcfcf6c2a
  1. 2
      .github/workflows/build-ilspy.yml
  2. 10
      ICSharpCode.Decompiler/CSharp/Transforms/IntroduceQueryExpressions.cs

2
.github/workflows/build-ilspy.yml

@ -56,7 +56,7 @@ jobs: @@ -56,7 +56,7 @@ jobs:
env:
Tests1: ICSharpCode.Decompiler.Tests\bin\${{ matrix.configuration }}\net6.0-windows\win-x64\ICSharpCode.Decompiler.Tests.dll
Tests2: ILSpy.Tests\bin\${{ matrix.configuration }}\net6.0-windows\ILSpy.Tests.dll
Tests3: ILSpy.BamlDecompiler.Tests\bin\${{ matrix.configuration }}\net6.0-windows\ILSpy.BamlDecompiler.Tests.dll
Tests3: ILSpy.BamlDecompiler.Tests\bin\${{ matrix.configuration }}\net6.0-windows\win-x64\ILSpy.BamlDecompiler.Tests.dll
- name: Test Report
uses: dorny/test-reporter@v1

10
ICSharpCode.Decompiler/CSharp/Transforms/IntroduceQueryExpressions.cs

@ -266,7 +266,8 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms @@ -266,7 +266,8 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms
{
ParameterDeclaration p1 = lambda.Parameters.ElementAt(0);
ParameterDeclaration p2 = lambda.Parameters.ElementAt(1);
if (p1.Name == element1.Name && (p2.Name == element2.Name || mre.MemberName == "GroupJoin"))
if (ValidateParameter(p1) && ValidateParameter(p2)
&& p1.Name == element1.Name && (p2.Name == element2.Name || mre.MemberName == "GroupJoin"))
{
QueryExpression query = new QueryExpression();
query.Clauses.Add(MakeFromClause(element1, source1.Detach()));
@ -374,7 +375,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms @@ -374,7 +375,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms
if (expr is LambdaExpression lambda && lambda.Parameters.Count == 1 && lambda.Body is Expression)
{
ParameterDeclaration p = lambda.Parameters.Single();
if (p.ParameterModifier == ParameterModifier.None)
if (ValidateParameter(p))
{
parameter = p;
body = (Expression)lambda.Body;
@ -385,5 +386,10 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms @@ -385,5 +386,10 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms
body = null;
return false;
}
private static bool ValidateParameter(ParameterDeclaration p)
{
return p.ParameterModifier == ParameterModifier.None && p.Attributes.Count == 0;
}
}
}

Loading…
Cancel
Save