Skip to content

Commit 703a678

Browse files
Use a wrapper that calls escape identifier
1 parent 614bba0 commit 703a678

18 files changed

Lines changed: 108 additions & 105 deletions

CodeConverter/CSharp/AdditionalDeclaration.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@ public AdditionalDeclaration(string prefix, ExpressionSyntax initializer, TypeSy
1818
Type = type;
1919
}
2020

21-
public IdentifierNameSyntax IdentifierName => SyntaxFactory.IdentifierName(Id).WithAdditionalAnnotations(PerScopeState.AdditionalLocalAnnotation);
21+
public IdentifierNameSyntax IdentifierName => ValidSyntaxFactory.IdentifierName(Id).WithAdditionalAnnotations(PerScopeState.AdditionalLocalAnnotation);
2222
}

CodeConverter/CSharp/AdditionalInitializers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ private static List<MemberDeclarationSyntax> WithAdditionalInitializers(List<Mem
6161
if (addConstructor) {
6262
var statements = new List<StatementSyntax>();
6363
if (addedConstructorRequiresInitializeComponent) {
64-
statements.Add(SyntaxFactory.ExpressionStatement(SyntaxFactory.InvocationExpression(SyntaxFactory.IdentifierName("InitializeComponent"))));
64+
statements.Add(SyntaxFactory.ExpressionStatement(SyntaxFactory.InvocationExpression(ValidSyntaxFactory.IdentifierName("InitializeComponent"))));
6565
}
6666

6767
constructors.Add(SyntaxFactory.ConstructorDeclaration(convertIdentifier)

CodeConverter/CSharp/BuiltInVisualBasicOperatorSubstitutions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ private async Task<ExpressionSyntax> ConvertMyGroupCollectionPropertyGetWithUnde
9494
var associatedField = pro.Property.GetAssociatedField();
9595
var propertyReferenceSyntax = (VisualBasicSyntaxNode)((IPropertyReferenceOperation)pro.Instance).Syntax;
9696
var qualification = await propertyReferenceSyntax.AcceptAsync<ExpressionSyntax>(_triviaConvertingVisitor);
97-
return SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, qualification, SyntaxFactory.IdentifierName(associatedField.Name));
97+
return SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, qualification, ValidSyntaxFactory.IdentifierName(associatedField.Name));
9898
default:
9999
return null;
100100
}

CodeConverter/CSharp/CommonConversions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ private static TypeSyntax WithDeclarationNameCasing(TypeSyntax syntax, ITypeSymb
229229
return syntax.ReplaceNodes(syntax.DescendantNodes().OfType<CSSyntax.IdentifierNameSyntax>(), (oldNode, _) =>
230230
{
231231
var originalName = originalNames.FirstOrDefault(on => string.Equals(on, oldNode.ToString(), StringComparison.OrdinalIgnoreCase));
232-
return originalName != null ? SyntaxFactory.IdentifierName(originalName) : oldNode;
232+
return originalName != null ? ValidSyntaxFactory.IdentifierName(originalName) : oldNode;
233233
});
234234
}
235235

@@ -609,7 +609,7 @@ public CSSyntax.IdentifierNameSyntax GetRetVariableNameOrNull(VBSyntax.MethodBlo
609609
// In VB, assigning to the method name implicitly creates a variable that is returned when the method exits
610610
var csReturnVariableName =
611611
ConvertIdentifier(GetMethodBlockBaseIdentifierForImplicitReturn(node)).ValueText + "Ret";
612-
csReturnVariable = SyntaxFactory.IdentifierName(csReturnVariableName);
612+
csReturnVariable = ValidSyntaxFactory.IdentifierName(csReturnVariableName);
613613
}
614614

615615
return csReturnVariable;

CodeConverter/CSharp/DeclarationNodeVisitor.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public override async Task<CSharpSyntaxNode> VisitCompilationUnit(VBSyntax.Compi
9595

9696
var convertedMembers = string.IsNullOrEmpty(options.RootNamespace)
9797
? sourceAndConverted.Select(sd => sd.Converted)
98-
: PrependRootNamespace(sourceAndConverted, SyntaxFactory.IdentifierName(options.RootNamespace));
98+
: PrependRootNamespace(sourceAndConverted, ValidSyntaxFactory.IdentifierName(options.RootNamespace));
9999

100100
var usings = await importsClauses
101101
.SelectAsync(async c => await c.AcceptAsync<UsingDirectiveSyntax>(TriviaConvertingDeclarationVisitor));
@@ -280,8 +280,8 @@ private Assignment CreateInitializer((VBSyntax.ModifiedIdentifierSyntax n, VBSyn
280280
{
281281
var csId = CommonConversions.ConvertIdentifier(f.n.Identifier);
282282
string initializerFunctionName = CommonConversions.GetInitialValueFunctionName(f.n);
283-
var invocation = SyntaxFactory.InvocationExpression(SyntaxFactory.IdentifierName(CommonConversions.CsEscapedIdentifier(initializerFunctionName)), SyntaxFactory.ArgumentList());
284-
return new Assignment(SyntaxFactory.IdentifierName(csId), CSSyntaxKind.SimpleAssignmentExpression, invocation);
283+
var invocation = SyntaxFactory.InvocationExpression(ValidSyntaxFactory.IdentifierName((initializerFunctionName)), SyntaxFactory.ArgumentList());
284+
return new Assignment(ValidSyntaxFactory.IdentifierName(csId), CSSyntaxKind.SimpleAssignmentExpression, invocation);
285285
}
286286

287287
private MemberDeclarationSyntax[] GetAdditionalDeclarations(VBSyntax.StatementSyntax member)
@@ -561,7 +561,7 @@ private IEnumerable<MemberDeclarationSyntax> CreateWithEventsMembers(SyntaxToken
561561
? initializerState.AdditionalStaticInitializers
562562
: initializerState.AdditionalInstanceInitializers;
563563
foreach (var initializer in initializers) {
564-
initializerCollection.Add(new Assignment(SyntaxFactory.IdentifierName(initializer.Key), CSSyntaxKind.SimpleAssignmentExpression, initializer.Value.Value));
564+
initializerCollection.Add(new Assignment(ValidSyntaxFactory.IdentifierName(initializer.Key), CSSyntaxKind.SimpleAssignmentExpression, initializer.Value.Value));
565565
}
566566

567567
var fieldDecls = _typeContext.HandledEventsAnalysis.GetDeclarationsForFieldBackedProperty(fieldDecl,
@@ -608,7 +608,7 @@ private IEnumerable<MemberDeclarationSyntax> CreateAdditionalLocalMembers(Syntax
608608

609609
var newVar =
610610
v.WithInitializer(SyntaxFactory.EqualsValueClause(
611-
SyntaxFactory.InvocationExpression(SyntaxFactory.IdentifierName(newMethodName))));
611+
SyntaxFactory.InvocationExpression(ValidSyntaxFactory.IdentifierName(newMethodName))));
612612
var newVarDecl =
613613
SyntaxFactory.VariableDeclaration(decl.Type, SyntaxFactory.SingletonSeparatedList(newVar));
614614

@@ -887,7 +887,7 @@ private static string AddRealPropertyDelegatingToMyClassVersion(List<MemberDecla
887887
if (writeOnly || !readOnly) {
888888
var setValue = SyntaxFactory.Block(SyntaxFactory.ExpressionStatement(
889889
SyntaxFactory.AssignmentExpression(CSSyntaxKind.SimpleAssignmentExpression, thisDotIdentifier,
890-
SyntaxFactory.IdentifierName(CommonConversions.CsEscapedIdentifier("value")))));
890+
ValidSyntaxFactory.IdentifierName(("value")))));
891891
var setAccessor = SyntaxFactory.AccessorDeclaration(CSSyntaxKind.SetAccessorDeclaration, setValue);
892892
accessors = accessors.Add(setAccessor);
893893
}
@@ -1186,7 +1186,7 @@ public override async Task<CSharpSyntaxNode> VisitMethodStatement(VBSyntax.Metho
11861186
// we need to emit a non-virtual method for it to call
11871187
if (accessedThroughMyClass) {
11881188
var identifierName = "MyClass" + directlyConvertedCsIdentifier.ValueText;
1189-
var arrowClause = SyntaxFactory.ArrowExpressionClause(SyntaxFactory.InvocationExpression(SyntaxFactory.IdentifierName(identifierName), CreateDelegatingArgList(parameterList)));
1189+
var arrowClause = SyntaxFactory.ArrowExpressionClause(SyntaxFactory.InvocationExpression(ValidSyntaxFactory.IdentifierName(identifierName), CreateDelegatingArgList(parameterList)));
11901190
var declModifiers = convertedModifiers;
11911191

11921192
var originalNameDecl = SyntaxFactory.MethodDeclaration(
@@ -1324,7 +1324,7 @@ private static ArrowExpressionClauseSyntax GetDelegatingClause(SyntaxToken csIde
13241324

13251325
var arrowClauseExpression = isSetAccessor
13261326
? SyntaxFactory.AssignmentExpression(CSSyntaxKind.SimpleAssignmentExpression, simpleMemberAccess,
1327-
SyntaxFactory.IdentifierName("value"))
1327+
ValidSyntaxFactory.IdentifierName("value"))
13281328
: expression;
13291329

13301330
var arrowClause = SyntaxFactory.ArrowExpressionClause(arrowClauseExpression);
@@ -1335,7 +1335,7 @@ private static MemberAccessExpressionSyntax GetSimpleMemberAccess(SyntaxToken cs
13351335
{
13361336
var simpleMemberAccess = SyntaxFactory.MemberAccessExpression(
13371337
CSSyntaxKind.SimpleMemberAccessExpression, SyntaxFactory.ThisExpression(),
1338-
SyntaxFactory.Token(CSSyntaxKind.DotToken), SyntaxFactory.IdentifierName(csIdentifier));
1338+
SyntaxFactory.Token(CSSyntaxKind.DotToken), ValidSyntaxFactory.IdentifierName(csIdentifier));
13391339

13401340
return simpleMemberAccess;
13411341
}
@@ -1367,7 +1367,7 @@ bool IsRenamed(ISymbol csIdentifier) =>
13671367
private static ArgumentListSyntax CreateDelegatingArgList(ParameterListSyntax parameterList)
13681368
{
13691369
var refKinds = parameterList.Parameters.Select(GetSingleModifier).ToArray();
1370-
return parameterList.Parameters.Select(p => SyntaxFactory.IdentifierName(p.Identifier)).CreateCsArgList(refKinds);
1370+
return parameterList.Parameters.Select(p => ValidSyntaxFactory.IdentifierName(p.Identifier)).CreateCsArgList(refKinds);
13711371
}
13721372

13731373
private static CSSyntaxKind? GetSingleModifier(ParameterSyntax p)
@@ -1438,7 +1438,7 @@ await node.ParameterList.AcceptAsync<ParameterListSyntax>(_triviaConvertingExpre
14381438
var eventDecl = SyntaxFactory.EventFieldDeclaration(
14391439
SyntaxFactory.List(attributes),
14401440
modifiers,
1441-
SyntaxFactory.VariableDeclaration(SyntaxFactory.IdentifierName(delegateName),
1441+
SyntaxFactory.VariableDeclaration(ValidSyntaxFactory.IdentifierName(delegateName),
14421442
SyntaxFactory.SingletonSeparatedList(SyntaxFactory.VariableDeclarator(id)))
14431443
);
14441444

@@ -1533,7 +1533,7 @@ public override async Task<CSharpSyntaxNode> VisitDeclareStatement(VBSyntax.Decl
15331533
}
15341534

15351535
if (!node.CharsetKeyword.IsKind(CSSyntaxKind.None)) {
1536-
importAttributes.Add(SyntaxFactory.AttributeArgument(SyntaxFactory.NameEquals(CharSetType.Name), null, SyntaxFactory.MemberAccessExpression(CSSyntaxKind.SimpleMemberAccessExpression, SyntaxFactory.ParseTypeName(CharSetType.Name), SyntaxFactory.IdentifierName(node.CharsetKeyword.Text))));
1536+
importAttributes.Add(SyntaxFactory.AttributeArgument(SyntaxFactory.NameEquals(CharSetType.Name), null, SyntaxFactory.MemberAccessExpression(CSSyntaxKind.SimpleMemberAccessExpression, SyntaxFactory.ParseTypeName(CharSetType.Name), ValidSyntaxFactory.IdentifierName(node.CharsetKeyword.Text))));
15371537
}
15381538

15391539
var attributeArguments = CommonConversions.CreateAttributeArgumentList(importAttributes.ToArray());
@@ -1620,7 +1620,7 @@ public override async Task<CSharpSyntaxNode> VisitXmlNamespaceImportsClause(VBSy
16201620
SyntaxFactory.TokenList(SyntaxFactory.Token(CSSyntaxKind.InternalKeyword),
16211621
SyntaxFactory.Token(CSSyntaxKind.StaticKeyword),
16221622
SyntaxFactory.Token(CSSyntaxKind.ReadOnlyKeyword)),
1623-
SyntaxFactory.VariableDeclaration(SyntaxFactory.IdentifierName("XNamespace"), SyntaxFactory.SingletonSeparatedList(declarator)));
1623+
SyntaxFactory.VariableDeclaration(ValidSyntaxFactory.IdentifierName("XNamespace"), SyntaxFactory.SingletonSeparatedList(declarator)));
16241624
}
16251625

16261626
public override async Task<CSharpSyntaxNode> VisitXmlName(VBSyntax.XmlNameSyntax node)
@@ -1630,7 +1630,7 @@ public override async Task<CSharpSyntaxNode> VisitXmlName(VBSyntax.XmlNameSyntax
16301630
return XmlImportContext.DefaultIdentifierName;
16311631
} else if (node.Prefix.Name.ValueText == "xmlns") {
16321632
// namespace alias
1633-
return SyntaxFactory.IdentifierName(node.LocalName.ValueText);
1633+
return ValidSyntaxFactory.IdentifierName(node.LocalName.ValueText);
16341634
} else {
16351635
// Having this case in VB would cause error BC31187: Namespace declaration must start with 'xmlns'
16361636
throw new NotImplementedException($"Cannot convert non-xmlns attribute in XML namespace import").WithNodeInformation(node);

0 commit comments

Comments
 (0)