diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/QueryExpressions.cs b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/QueryExpressions.cs index 160ef4a65..0870735b1 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/QueryExpressions.cs +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/QueryExpressions.cs @@ -48,6 +48,10 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty { public Maybe Value; +#if CS60 + public Maybe this[int index] => default(Maybe); +#endif + public Func> Factory() { return () => default(Maybe); @@ -237,6 +241,11 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty { return holder?.Factory()().Where((int value) => value > 0).Select((int value) => value.ToString()); } + + public Maybe? NullConditionalIndexerQuery(MaybeHolder holder) + { + return holder?[0].Where((int value) => value > 0).Select((int value) => value.ToString()); + } #endif public static IEnumerable Issue1310a(bool test) diff --git a/ICSharpCode.Decompiler/CSharp/Transforms/IntroduceQueryExpressions.cs b/ICSharpCode.Decompiler/CSharp/Transforms/IntroduceQueryExpressions.cs index d33e41884..4745061e3 100644 --- a/ICSharpCode.Decompiler/CSharp/Transforms/IntroduceQueryExpressions.cs +++ b/ICSharpCode.Decompiler/CSharp/Transforms/IntroduceQueryExpressions.cs @@ -380,7 +380,8 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms bool IsNullConditional(Expression target) => target switch { UnaryOperatorExpression { Operator: UnaryOperatorType.NullConditional } => true, MemberReferenceExpression member => IsNullConditional(member.Target), - InvocationExpression { Target: { } invocationTarget } => IsNullConditional(invocationTarget), + InvocationExpression invocation => IsNullConditional(invocation.Target), + IndexerExpression { Target: { } indexerTarget } => IsNullConditional(indexerTarget), _ => false };