@@ -89,26 +89,24 @@ internal static Result IsAlreadyAssignedWithCreated(ExpressionSyntax disposable,
8989 return Result . No ;
9090 }
9191
92- using ( var assignedValues = AssignedValueWalker . Borrow ( disposable , semanticModel , cancellationToken ) )
92+ using var assignedValues = AssignedValueWalker . Borrow ( disposable , semanticModel , cancellationToken ) ;
93+ assignedSymbol = assignedValues . CurrentSymbol ;
94+ if ( assignedValues . Count == 1 &&
95+ disposable . Parent is AssignmentExpressionSyntax { Parent : ParenthesizedExpressionSyntax { Parent : BinaryExpressionSyntax { } binary } } &&
96+ binary . IsKind ( SyntaxKind . CoalesceExpression ) )
9397 {
94- assignedSymbol = assignedValues . CurrentSymbol ;
95- if ( assignedValues . Count == 1 &&
96- disposable . Parent is AssignmentExpressionSyntax { Parent : ParenthesizedExpressionSyntax { Parent : BinaryExpressionSyntax { } binary } } &&
97- binary . IsKind ( SyntaxKind . CoalesceExpression ) )
98- {
99- // lazy
100- return Result . No ;
101- }
102-
103- if ( symbol . IsEither < IParameterSymbol , ILocalSymbol > ( ) )
104- {
105- assignedValues . RemoveAll ( x => IsReturnedBefore ( x ) ) ;
106- }
98+ // lazy
99+ return Result . No ;
100+ }
107101
108- using var recursive = RecursiveValues . Borrow ( assignedValues , semanticModel , cancellationToken ) ;
109- return IsAnyCreation ( recursive , semanticModel , cancellationToken ) ;
102+ if ( symbol . IsEither < IParameterSymbol , ILocalSymbol > ( ) )
103+ {
104+ assignedValues . RemoveAll ( x => IsReturnedBefore ( x ) ) ;
110105 }
111106
107+ using var recursive = RecursiveValues . Borrow ( assignedValues , semanticModel , cancellationToken ) ;
108+ return IsAnyCreation ( recursive , semanticModel , cancellationToken ) ;
109+
112110 bool IsReturnedBefore ( ExpressionSyntax expression )
113111 {
114112 if ( expression . TryFirstAncestor ( out BlockSyntax ? block ) &&
@@ -358,9 +356,10 @@ candidate is IParameterSymbol ||
358356 return Result . No ;
359357 }
360358
361- if ( method . ReturnType == KnownSymbol . TaskOfT )
359+ if ( method . ReturnType is INamedTypeSymbol { IsGenericType : true } returnType &&
360+ method . ReturnType == KnownSymbol . TaskOfT )
362361 {
363- return method . TypeArguments . TrySingle ( out var typeArg ) &&
362+ return returnType . TypeArguments . TrySingle ( out var typeArg ) &&
364363 IsAssignableFrom ( typeArg , compilation )
365364 ? Result . AssumeYes
366365 : Result . No ;
0 commit comments