Skip to content

Commit

Permalink
VB -> C# Namespace declaration doesn't need "global::" - fixes #67
Browse files Browse the repository at this point in the history
  • Loading branch information
GrahamTheCoder committed Mar 26, 2018
1 parent 7635415 commit 7a34fa9
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 4 deletions.
16 changes: 12 additions & 4 deletions ICSharpCode.CodeConverter/CSharp/NodesVisitor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1467,10 +1467,18 @@ public override CSharpSyntaxNode VisitQualifiedName(VBSyntax.QualifiedNameSyntax
var lhsSyntax = (NameSyntax)node.Left.Accept(TriviaConvertingVisitor);
var rhsSyntax = (SimpleNameSyntax)node.Right.Accept(TriviaConvertingVisitor);

var qualifiedName = node.Parent.IsKind(VBasic.SyntaxKind.NamespaceStatement)
? lhsSyntax
: QualifyNode(node.Left, lhsSyntax);
return node.Left.IsKind(VBasic.SyntaxKind.GlobalName)
var partOfNamespaceDeclaration = node.Parent.IsKind(VBasic.SyntaxKind.NamespaceStatement);
var leftIsGlobal = node.Left.IsKind(VBasic.SyntaxKind.GlobalName);

ExpressionSyntax qualifiedName;
if (partOfNamespaceDeclaration) {
if (leftIsGlobal) return rhsSyntax;
qualifiedName = lhsSyntax;
} else {
qualifiedName = QualifyNode(node.Left, lhsSyntax);
}

return leftIsGlobal
? (CSharpSyntaxNode)SyntaxFactory.AliasQualifiedName((IdentifierNameSyntax)lhsSyntax, rhsSyntax)
: SyntaxFactory.QualifiedName((NameSyntax) qualifiedName, rhsSyntax);
}
Expand Down
14 changes: 14 additions & 0 deletions Tests/CSharp/NamespaceLevelTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,20 @@ public void TestNamespace()
using System.Linq;
using Microsoft.VisualBasic;
namespace Test
{
}");
}

[Fact]
public void TestGlobalNamespace()
{
TestConversionVisualBasicToCSharp(@"Namespace Global.Test
End Namespace", @"using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualBasic;
namespace Test
{
}");
Expand Down

0 comments on commit 7a34fa9

Please sign in to comment.