Skip to content

Commit

Permalink
Automatically fix the casing of identifiers where possible
Browse files Browse the repository at this point in the history
Closes #258
  • Loading branch information
mrmonday authored and GrahamTheCoder committed Apr 8, 2019
1 parent 0e69b67 commit 66a80de
Show file tree
Hide file tree
Showing 6 changed files with 1,471 additions and 1,438 deletions.
6 changes: 5 additions & 1 deletion ICSharpCode.CodeConverter/CSharp/CommonConversions.cs
Expand Up @@ -274,7 +274,7 @@ private string ConvertNumericLiteralValueText(string textForUser, object value)
return value.ToString();
}

public SyntaxToken ConvertIdentifier(SyntaxToken id, bool isAttribute = false)
public SyntaxToken ConvertIdentifier(SyntaxToken id, bool isAttribute = false, bool updateCase = false)
{
string text = id.ValueText;

Expand All @@ -285,6 +285,10 @@ public SyntaxToken ConvertIdentifier(SyntaxToken id, bool isAttribute = false)
if (id.SyntaxTree == _semanticModel.SyntaxTree) {
var symbol = _semanticModel.GetSymbolInfo(id.Parent).Symbol;
if (symbol != null && !string.IsNullOrWhiteSpace(symbol.Name)) {
if (updateCase && text.Equals(symbol.Name, StringComparison.OrdinalIgnoreCase)) {
text = symbol.Name;
}

if (symbol.IsConstructor() && isAttribute) {
text = symbol.ContainingType.Name;
if (text.EndsWith("Attribute", StringComparison.OrdinalIgnoreCase))
Expand Down
6 changes: 3 additions & 3 deletions ICSharpCode.CodeConverter/CSharp/NodesVisitor.cs
Expand Up @@ -1298,9 +1298,9 @@ public override CSharpSyntaxNode VisitQueryExpression(VBSyntax.QueryExpressionSy
return _queryConverter.ConvertClauses(node.Clauses);
}

private SyntaxToken ConvertIdentifier(SyntaxToken identifierIdentifier, bool isAttribute = false)
private SyntaxToken ConvertIdentifier(SyntaxToken identifierIdentifier, bool isAttribute = false, bool updateCase = false)
{
return CommonConversions.ConvertIdentifier(identifierIdentifier, isAttribute);
return CommonConversions.ConvertIdentifier(identifierIdentifier, isAttribute, updateCase);
}

public override CSharpSyntaxNode VisitOrdering(VBSyntax.OrderingSyntax node)
Expand Down Expand Up @@ -1630,7 +1630,7 @@ public override CSharpSyntaxNode VisitTypeConstraint(VBSyntax.TypeConstraintSynt

public override CSharpSyntaxNode VisitIdentifierName(VBSyntax.IdentifierNameSyntax node)
{
var identifier = SyntaxFactory.IdentifierName(ConvertIdentifier(node.Identifier, node.GetAncestor<VBSyntax.AttributeSyntax>() != null));
var identifier = SyntaxFactory.IdentifierName(ConvertIdentifier(node.Identifier, node.GetAncestor<VBSyntax.AttributeSyntax>() != null, updateCase: true));

return !node.Parent.IsKind(VBasic.SyntaxKind.SimpleMemberAccessExpression, VBasic.SyntaxKind.QualifiedName, VBasic.SyntaxKind.NameColonEquals, VBasic.SyntaxKind.ImportsStatement, VBasic.SyntaxKind.NamespaceStatement, VBasic.SyntaxKind.NamedFieldInitializer)
|| node.Parent is VBSyntax.MemberAccessExpressionSyntax maes && maes.Expression == node
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 66a80de

Please sign in to comment.