@@ -43,7 +43,7 @@ public MethodDeclarationSyntax BuildAccessorMethod(SourceEmitterContext ctx)
4343 return ctx . SyntaxFactory . PublicStaticExternMethod ( returnType , methodName , parameters , [ attribute ] ) ;
4444 }
4545
46- public ExpressionSyntax BuildAccess ( ExpressionSyntax ? baseAccess , bool nullConditional = false )
46+ public ExpressionSyntax BuildAccess ( ExpressionSyntax ? baseAccess , INamedTypeSymbol ? containingType = null , bool nullConditional = false )
4747 {
4848 if ( baseAccess == null )
4949 throw new ArgumentNullException ( nameof ( baseAccess ) ) ;
@@ -54,7 +54,10 @@ public ExpressionSyntax BuildAccess(ExpressionSyntax? baseAccess, bool nullCondi
5454 return InvocationWithoutIndention ( method ) ;
5555 }
5656
57- var genericClassName = GenericName ( className ) . WithTypeArgumentList ( TypeArgumentList ( symbol . ContainingType . TypeArguments ) ) ;
57+ // Use the passed containingType for type arguments if provided,
58+ // otherwise fall back to the symbol's containing type.
59+ var typeArgs = containingType ? . TypeArguments ?? symbol . ContainingType . TypeArguments ;
60+ var genericClassName = GenericName ( className ) . WithTypeArgumentList ( TypeArgumentList ( typeArgs ) ) ;
5861 var invocation = InvocationExpression ( MemberAccess ( genericClassName , methodName ) )
5962 . WithArgumentList ( ArgumentListWithoutIndention ( [ baseAccess ] ) ) ;
6063
@@ -64,9 +67,14 @@ public ExpressionSyntax BuildAccess(ExpressionSyntax? baseAccess, bool nullCondi
6467 return Conditional ( IsNotNull ( baseAccess ) , invocation , DefaultLiteral ( ) ) ;
6568 }
6669
67- public ExpressionSyntax BuildAssignment ( ExpressionSyntax ? baseAccess , ExpressionSyntax valueToAssign , bool coalesceAssignment = false )
70+ public ExpressionSyntax BuildAssignment (
71+ ExpressionSyntax ? baseAccess ,
72+ ExpressionSyntax valueToAssign ,
73+ INamedTypeSymbol ? containingType = null ,
74+ bool coalesceAssignment = false
75+ )
6876 {
69- var access = BuildAccess ( baseAccess ) ;
77+ var access = BuildAccess ( baseAccess , containingType ) ;
7078 return Assignment ( access , valueToAssign , coalesceAssignment ) ;
7179 }
7280}
0 commit comments