Skip to content

Commit bb5c35f

Browse files
Merge pull request #1155 from gaschd/issue-1154-wrong-nested-types-conversion
Fixed node name search for case-sensitive namespaces and types
2 parents a232218 + 9f15f5b commit bb5c35f

File tree

2 files changed

+100
-1
lines changed

2 files changed

+100
-1
lines changed

CodeConverter/CSharp/CommonConversions.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,9 @@ private static TypeSyntax WithDeclarationNameCasing(TypeSyntax syntax, ITypeSymb
229229

230230
return syntax.ReplaceNodes(syntax.DescendantNodes().OfType<CSSyntax.IdentifierNameSyntax>(), (oldNode, _) =>
231231
{
232-
var originalName = originalNames.FirstOrDefault(on => string.Equals(on, oldNode.ToString(), StringComparison.OrdinalIgnoreCase));
232+
string oldNodeStr = oldNode.ToString();
233+
var originalName = originalNames.FirstOrDefault(on => string.Equals(on, oldNodeStr, StringComparison.Ordinal)) ??
234+
originalNames.FirstOrDefault(on => string.Equals(on, oldNodeStr, StringComparison.OrdinalIgnoreCase));
233235
return originalName != null ? ValidSyntaxFactory.IdentifierName(originalName) : oldNode;
234236
});
235237
}

Tests/CSharp/CaseSensitivityTests.cs

+97
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,103 @@ protected virtual System.Web.UI.WebControls.Button btnOk
6161
}");
6262
}
6363

64+
[Fact]
65+
public async Task Issue1154_NamespaceAndClassSameNameDifferentCaseAsync()
66+
{
67+
await TestConversionVisualBasicToCSharpAsync(@"
68+
Imports System
69+
70+
Namespace Issue1154
71+
<CaseSensitive1.Casesensitive1.TestDummy>
72+
Public Class UpperLowerCase
73+
End Class
74+
75+
<Casesensitive2.CaseSensitive2.TestDummy>
76+
Public Class LowerUpperCase
77+
End Class
78+
79+
<CaseSensitive3.CaseSensitive3.TestDummy>
80+
Public Class SameCase
81+
End Class
82+
End Namespace
83+
84+
Namespace CaseSensitive1
85+
Public Class Casesensitive1
86+
Public Class TestDummyAttribute
87+
Inherits Attribute
88+
End Class
89+
End Class
90+
End Namespace
91+
92+
Namespace Casesensitive2
93+
Public Class CaseSensitive2
94+
Public Class TestDummyAttribute
95+
Inherits Attribute
96+
End Class
97+
End Class
98+
End Namespace
99+
100+
Namespace CaseSensitive3
101+
Public Class CaseSensitive3
102+
Public Class TestDummyAttribute
103+
Inherits Attribute
104+
End Class
105+
End Class
106+
End Namespace
107+
",
108+
@"
109+
using System;
110+
111+
namespace Issue1154
112+
{
113+
[CaseSensitive1.Casesensitive1.TestDummy]
114+
public partial class UpperLowerCase
115+
{
116+
}
117+
118+
[Casesensitive2.CaseSensitive2.TestDummy]
119+
public partial class LowerUpperCase
120+
{
121+
}
122+
123+
[CaseSensitive3.CaseSensitive3.TestDummy]
124+
public partial class SameCase
125+
{
126+
}
127+
}
128+
129+
namespace CaseSensitive1
130+
{
131+
public partial class Casesensitive1
132+
{
133+
public partial class TestDummyAttribute : Attribute
134+
{
135+
}
136+
}
137+
}
138+
139+
namespace Casesensitive2
140+
{
141+
public partial class CaseSensitive2
142+
{
143+
public partial class TestDummyAttribute : Attribute
144+
{
145+
}
146+
}
147+
}
148+
149+
namespace CaseSensitive3
150+
{
151+
public partial class CaseSensitive3
152+
{
153+
public partial class TestDummyAttribute : Attribute
154+
{
155+
}
156+
}
157+
}
158+
");
159+
}
160+
64161

65162

66163
}

0 commit comments

Comments
 (0)