Skip to content

Commit 3ccdc1e

Browse files
Nameof expressions contain member access, rather than qualified names
1 parent 6ee4325 commit 3ccdc1e

2 files changed

Lines changed: 5 additions & 12 deletions

File tree

CodeConverter/CSharp/ExpressionNodeVisitor.cs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -486,11 +486,6 @@ private RefConversion GetRefConversionType(VBSyntax.ArgumentSyntax node, VBSynta
486486
return NeedsVariableForArgument(node, refKind);
487487
}
488488

489-
private static StatementSyntax AssignStmt(ExpressionSyntax left, IdentifierNameSyntax right)
490-
{
491-
return SyntaxFactory.ExpressionStatement(Assign(left, right));
492-
}
493-
494489
private static AssignmentExpressionSyntax Assign(ExpressionSyntax left, IdentifierNameSyntax right)
495490
{
496491
return SyntaxFactory.AssignmentExpression(SyntaxKind.SimpleAssignmentExpression, left, right);
@@ -1165,7 +1160,7 @@ public override async Task<CSharpSyntaxNode> VisitQualifiedName(VBasic.Syntax.Qu
11651160
}
11661161
var partOfNamespaceDeclaration = topLevelName.Parent.IsKind(VBasic.SyntaxKind.NamespaceStatement);
11671162
var leftIsGlobal = node.Left.IsKind(VBasic.SyntaxKind.GlobalName);
1168-
1163+
var isPartOfNameOfExpression = node.GetAncestor<VBSyntax.NameOfExpressionSyntax>() != null;
11691164
ExpressionSyntax qualifiedName;
11701165
if (partOfNamespaceDeclaration || !(lhsSyntax is SimpleNameSyntax sns)) {
11711166
if (leftIsGlobal) return rhsSyntax;
@@ -1174,9 +1169,9 @@ public override async Task<CSharpSyntaxNode> VisitQualifiedName(VBasic.Syntax.Qu
11741169
qualifiedName = QualifyNode(node.Left, sns);
11751170
}
11761171

1177-
return leftIsGlobal
1178-
? (CSharpSyntaxNode)SyntaxFactory.AliasQualifiedName((IdentifierNameSyntax)lhsSyntax, rhsSyntax)
1179-
: SyntaxFactory.QualifiedName((NameSyntax)qualifiedName, rhsSyntax);
1172+
return leftIsGlobal ? SyntaxFactory.AliasQualifiedName((IdentifierNameSyntax)lhsSyntax, rhsSyntax) :
1173+
isPartOfNameOfExpression ? SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, (NameSyntax)qualifiedName, rhsSyntax) :
1174+
(CSharpSyntaxNode)SyntaxFactory.QualifiedName((NameSyntax)qualifiedName, rhsSyntax);
11801175
}
11811176

11821177
public override async Task<CSharpSyntaxNode> VisitGenericName(VBasic.Syntax.GenericNameSyntax node)

Tests/CSharp/ExpressionTests/AccessExpressionTests.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -608,9 +608,7 @@ public partial class ErrorEventHandler
608608
public static void OnError(object s, ErrorEventArgs e)
609609
{
610610
}
611-
}
612-
1 target compilation errors:
613-
CS8082: Sub-expression cannot be used in an argument to nameof.");
611+
}");
614612
}
615613

616614
[Fact]

0 commit comments

Comments
 (0)