@@ -35,7 +35,7 @@ public async Task<CSharpSyntaxNode> ConvertSimpleArgumentAsync(VBSyntax.SimpleAr
3535 var refType = CommonConversions . GetRefConversionType ( node , argList , possibleParameters . Value , out var argName , out var refKind ) ;
3636 token = CommonConversions . GetRefToken ( refKind ) ;
3737 if ( refType != SemanticModelExtensions . RefConversion . Inline ) {
38- convertedArgExpression = HoistByRefDeclaration ( node , convertedArgExpression , refType , argName , refKind ) ;
38+ convertedArgExpression = HoistByRefDeclaration ( node . Expression , convertedArgExpression , refType , argName , refKind ) ;
3939 } else {
4040 convertedArgExpression = typeConversionAnalyzer . AddExplicitConversion ( node . Expression , convertedArgExpression , defaultToCast : refKind != RefKind . None ) ;
4141 }
@@ -119,11 +119,11 @@ CSSyntax.ArgumentSyntax ConvertOmittedArgument(IParameterSymbol parameter)
119119 }
120120
121121
122- private CSSyntax . ExpressionSyntax HoistByRefDeclaration ( VBSyntax . SimpleArgumentSyntax node , CSSyntax . ExpressionSyntax refLValue , SemanticModelExtensions . RefConversion refType , string argName , RefKind refKind )
122+ internal CSSyntax . ExpressionSyntax HoistByRefDeclaration ( VBSyntax . ExpressionSyntax node , CSSyntax . ExpressionSyntax refLValue , SemanticModelExtensions . RefConversion refType , string argName , RefKind refKind )
123123 {
124124 string prefix = $ "arg{ argName } ";
125- var expressionTypeInfo = _semanticModel . GetTypeInfo ( node . Expression ) ;
126- bool useVar = expressionTypeInfo . Type ? . Equals ( expressionTypeInfo . ConvertedType , SymbolEqualityComparer . IncludeNullability ) == true && ! CommonConversions . ShouldPreferExplicitType ( node . Expression , expressionTypeInfo . ConvertedType , out var _ ) ;
125+ var expressionTypeInfo = _semanticModel . GetTypeInfo ( node ) ;
126+ bool useVar = expressionTypeInfo . Type ? . Equals ( expressionTypeInfo . ConvertedType , SymbolEqualityComparer . IncludeNullability ) == true && ! CommonConversions . ShouldPreferExplicitType ( node , expressionTypeInfo . ConvertedType , out var _ ) ;
127127 var typeSyntax = CommonConversions . GetTypeSyntax ( expressionTypeInfo . ConvertedType , useVar ) ;
128128
129129 if ( refLValue is CSSyntax . ElementAccessExpressionSyntax eae ) {
@@ -132,12 +132,12 @@ private CSSyntax.ExpressionSyntax HoistByRefDeclaration(VBSyntax.SimpleArgumentS
132132 refLValue = eae . WithExpression ( tmpContainer . IdentifierName ) ;
133133 }
134134
135- var withCast = CommonConversions . TypeConversionAnalyzer . AddExplicitConversion ( node . Expression , refLValue , defaultToCast : refKind != RefKind . None ) ;
135+ var withCast = CommonConversions . TypeConversionAnalyzer . AddExplicitConversion ( node , refLValue , defaultToCast : refKind != RefKind . None ) ;
136136
137137 var local = _typeContext . PerScopeState . Hoist ( new AdditionalDeclaration ( prefix , withCast , typeSyntax ) ) ;
138138
139139 if ( refType == SemanticModelExtensions . RefConversion . PreAndPostAssignment ) {
140- var convertedLocalIdentifier = CommonConversions . TypeConversionAnalyzer . AddExplicitConversion ( node . Expression , local . IdentifierName , forceSourceType : expressionTypeInfo . ConvertedType , forceTargetType : expressionTypeInfo . Type ) ;
140+ var convertedLocalIdentifier = CommonConversions . TypeConversionAnalyzer . AddExplicitConversion ( node , local . IdentifierName , forceSourceType : expressionTypeInfo . ConvertedType , forceTargetType : expressionTypeInfo . Type ) ;
141141 _typeContext . PerScopeState . Hoist ( new AdditionalAssignment ( refLValue , convertedLocalIdentifier ) ) ;
142142 }
143143
0 commit comments