@@ -121,6 +121,12 @@ private static void HandleInvocationExpression(SyntaxNodeAnalysisContext context
121121 }
122122
123123 var invocationExpression = ( InvocationExpressionSyntax ) context . Node ;
124+ if ( invocationExpression . ArgumentList . Arguments . Count < 2 )
125+ {
126+ // Tuple creation with less than two elements cannot use the language syntax
127+ return ;
128+ }
129+
124130 if ( ! invocationExpression . Expression . IsKind ( SyntaxKind . SimpleMemberAccessExpression ) )
125131 {
126132 return ;
@@ -209,7 +215,7 @@ private static void CheckTupleType(SyntaxNodeAnalysisContext context, TupleTypeS
209215
210216 private static void CheckGenericName ( SyntaxNodeAnalysisContext context , GenericNameSyntax genericNameSyntax , Location reportLocation )
211217 {
212- if ( IsValueTuple ( context , genericNameSyntax ) )
218+ if ( IsValueTupleWithLanguageRepresentation ( context , genericNameSyntax ) )
213219 {
214220 var location = reportLocation ?? genericNameSyntax . GetLocation ( ) ;
215221 context . ReportDiagnostic ( Diagnostic . Create ( Descriptor , location ) ) ;
@@ -224,10 +230,12 @@ private static void CheckGenericName(SyntaxNodeAnalysisContext context, GenericN
224230 }
225231 }
226232
227- private static bool IsValueTuple ( SyntaxNodeAnalysisContext context , ExpressionSyntax syntax )
233+ private static bool IsValueTupleWithLanguageRepresentation ( SyntaxNodeAnalysisContext context , ExpressionSyntax syntax )
228234 {
229235 var symbolInfo = context . SemanticModel . GetSymbolInfo ( syntax , context . CancellationToken ) ;
230- return ( symbolInfo . Symbol is ITypeSymbol typeSymbol ) && typeSymbol . IsTupleType ( ) ;
236+ return symbolInfo . Symbol is INamedTypeSymbol typeSymbol
237+ && typeSymbol . IsTupleType ( )
238+ && typeSymbol . TupleElements ( ) . Length > 1 ;
231239 }
232240 }
233241}
0 commit comments