@@ -50,26 +50,27 @@ public sealed override void Initialize(AnalysisContext context)
5050
5151 // When compilation begins, check whether Array.Empty<T> is available.
5252 // Only if it is, register the syntax node action provided by the derived implementations.
53- context . RegisterCompilationStartAction ( ctx =>
53+ context . RegisterCompilationStartAction ( context =>
5454 {
55- INamedTypeSymbol typeSymbol = ctx . Compilation . GetSpecialType ( SpecialType . System_Array ) ;
55+ INamedTypeSymbol typeSymbol = context . Compilation . GetSpecialType ( SpecialType . System_Array ) ;
5656 if ( typeSymbol . DeclaredAccessibility == Accessibility . Public )
5757 {
5858 if ( typeSymbol . GetMembers ( ArrayEmptyMethodName ) . FirstOrDefault ( ) is IMethodSymbol methodSymbol && methodSymbol . DeclaredAccessibility == Accessibility . Public &&
5959 methodSymbol . IsStatic && methodSymbol . Arity == 1 && methodSymbol . Parameters . IsEmpty )
6060 {
61- ctx . RegisterOperationAction ( c => AnalyzeOperation ( c , methodSymbol ) , OperationKind . ArrayCreation ) ;
61+ var linqExpressionType = context . Compilation . GetOrCreateTypeByMetadataName ( WellKnownTypeNames . SystemLinqExpressionsExpression1 ) ;
62+ context . RegisterOperationAction ( c => AnalyzeOperation ( c , methodSymbol , linqExpressionType ) , OperationKind . ArrayCreation ) ;
6263 }
6364 }
6465 } ) ;
6566 }
6667
67- private void AnalyzeOperation ( OperationAnalysisContext context , IMethodSymbol arrayEmptyMethodSymbol )
68+ private void AnalyzeOperation ( OperationAnalysisContext context , IMethodSymbol arrayEmptyMethodSymbol , INamedTypeSymbol ? linqExpressionType )
6869 {
69- AnalyzeOperation ( context , arrayEmptyMethodSymbol , IsAttributeSyntax ) ;
70+ AnalyzeOperation ( context , arrayEmptyMethodSymbol , linqExpressionType , IsAttributeSyntax ) ;
7071 }
7172
72- private static void AnalyzeOperation ( OperationAnalysisContext context , IMethodSymbol arrayEmptyMethodSymbol , Func < SyntaxNode , bool > isAttributeSyntax )
73+ private static void AnalyzeOperation ( OperationAnalysisContext context , IMethodSymbol arrayEmptyMethodSymbol , INamedTypeSymbol ? linqExpressionType , Func < SyntaxNode , bool > isAttributeSyntax )
7374 {
7475 IArrayCreationOperation arrayCreationExpression = ( IArrayCreationOperation ) context . Operation ;
7576
@@ -80,7 +81,6 @@ private static void AnalyzeOperation(OperationAnalysisContext context, IMethodSy
8081 return ;
8182 }
8283
83- var linqExpressionType = context . Compilation . GetOrCreateTypeByMetadataName ( WellKnownTypeNames . SystemLinqExpressionsExpression1 ) ;
8484 if ( arrayCreationExpression . IsWithinExpressionTree ( linqExpressionType ) )
8585 {
8686 return ;
0 commit comments