Skip to content

Commit f61bb31

Browse files
committed
Reserved words are escaped
1 parent 13f6186 commit f61bb31

17 files changed

+168
-125
lines changed

samples/Thinktecture.Runtime.Extensions.Samples/ValueObjects/Boundary.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System;
21
using System.ComponentModel.DataAnnotations;
32

43
namespace Thinktecture.ValueObjects;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
namespace Thinktecture.CodeAnalysis;
2+
3+
public readonly record struct ArgumentName(string Raw, string Escaped);

src/Thinktecture.Runtime.Extensions.SourceGenerator/CodeAnalysis/DefaultMemberState.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public sealed class DefaultMemberState : IMemberState, IEquatable<DefaultMemberS
77
private readonly ITypedMemberState _typedMemberState;
88

99
public string Name { get; }
10-
public string ArgumentName { get; }
10+
public ArgumentName ArgumentName { get; }
1111

1212
public SpecialType SpecialType => _typedMemberState.SpecialType;
1313
public string TypeFullyQualified => _typedMemberState.TypeFullyQualified;
@@ -19,7 +19,7 @@ public sealed class DefaultMemberState : IMemberState, IEquatable<DefaultMemberS
1919
public bool IsParsable => _typedMemberState.IsParsable;
2020
public ImplementedComparisonOperators ComparisonOperators => _typedMemberState.ComparisonOperators;
2121

22-
public DefaultMemberState(ITypedMemberState typedMemberState, string name, string argumentName)
22+
public DefaultMemberState(ITypedMemberState typedMemberState, string name, ArgumentName argumentName)
2323
{
2424
_typedMemberState = typedMemberState;
2525
Name = name;

src/Thinktecture.Runtime.Extensions.SourceGenerator/CodeAnalysis/IMemberState.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ namespace Thinktecture.CodeAnalysis;
22

33
public interface IMemberState : IEquatable<IMemberState>, IMemberInformation
44
{
5-
string ArgumentName { get; }
5+
ArgumentName ArgumentName { get; }
66
string TypeFullyQualifiedNullAnnotated { get; }
77
string TypeFullyQualifiedWithNullability { get; }
88
bool IsFormattable { get; }

src/Thinktecture.Runtime.Extensions.SourceGenerator/CodeAnalysis/InstanceMemberInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ public sealed class InstanceMemberInfo : IMemberState, IEquatable<InstanceMember
88
private readonly ITypedMemberState _typedMemberState;
99
private readonly (IFieldSymbol? Field, IPropertySymbol? Property) _symbol;
1010

11-
private string? _argumentName;
12-
public string ArgumentName => _argumentName ??= Name.MakeArgumentName();
11+
private ArgumentName? _argumentName;
12+
public ArgumentName ArgumentName => _argumentName ??= Name.MakeArgumentName();
1313

1414
public string Name { get; }
1515
public bool IsStatic { get; }

src/Thinktecture.Runtime.Extensions.SourceGenerator/CodeAnalysis/SmartEnums/EnumSourceGeneratorState.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ public sealed class EnumSourceGeneratorState : ITypeInformation, IEquatable<Enum
2020
public bool IsReferenceType { get; }
2121
public bool IsAbstract { get; }
2222

23-
private string? _argumentName;
24-
public string ArgumentName => _argumentName ??= Name.MakeArgumentName();
23+
private ArgumentName? _argumentName;
24+
public ArgumentName ArgumentName => _argumentName ??= Name.MakeArgumentName();
2525

2626
public IReadOnlyList<string> ItemNames { get; }
2727
public IReadOnlyList<InstanceMemberInfo> AssignableInstanceFieldsAndProperties { get; }

src/Thinktecture.Runtime.Extensions.SourceGenerator/CodeAnalysis/SmartEnums/SmartEnumCodeGenerator.cs

Lines changed: 68 additions & 68 deletions
Large diffs are not rendered by default.

src/Thinktecture.Runtime.Extensions.SourceGenerator/CodeAnalysis/ValueObjects/ComplexValueObjectJsonCodeGenerator.cs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ public sealed class ValueObjectJsonConverter : global::System.Text.Json.Serializ
4949
if (needsConverter)
5050
{
5151
_sb.Append(@"
52-
private readonly global::System.Text.Json.Serialization.JsonConverter<").Append(memberInfo.TypeFullyQualifiedWithNullability).Append("> _").Append(memberInfo.ArgumentName).Append("Converter;");
52+
private readonly global::System.Text.Json.Serialization.JsonConverter<").Append(memberInfo.TypeFullyQualifiedWithNullability).Append("> _").Append(memberInfo.ArgumentName.Raw).Append("Converter;");
5353
}
5454

5555
_sb.Append(@"
56-
private readonly string _").Append(memberInfo.ArgumentName).Append("PropertyName;");
56+
private readonly string _").Append(memberInfo.ArgumentName.Raw).Append("PropertyName;");
5757
}
5858

5959
_sb.Append(@"
@@ -76,11 +76,11 @@ public ValueObjectJsonConverter(global::System.Text.Json.JsonSerializerOptions o
7676
if (needsConverter)
7777
{
7878
_sb.Append(@"
79-
this._").Append(memberInfo.ArgumentName).Append("Converter = (global::System.Text.Json.Serialization.JsonConverter<").Append(memberInfo.TypeFullyQualifiedWithNullability).Append(">)options.GetConverter(typeof(").Append(memberInfo.TypeFullyQualifiedWithNullability).Append("));");
79+
this._").Append(memberInfo.ArgumentName.Raw).Append("Converter = (global::System.Text.Json.Serialization.JsonConverter<").Append(memberInfo.TypeFullyQualifiedWithNullability).Append(">)options.GetConverter(typeof(").Append(memberInfo.TypeFullyQualifiedWithNullability).Append("));");
8080
}
8181

8282
_sb.Append(@"
83-
this._").Append(memberInfo.ArgumentName).Append("PropertyName = namingPolicy?.ConvertName(\"").Append(memberInfo.Name).Append(@""") ?? """).Append(memberInfo.Name).Append(@""";");
83+
this._").Append(memberInfo.ArgumentName.Raw).Append("PropertyName = namingPolicy?.ConvertName(\"").Append(memberInfo.Name).Append(@""") ?? """).Append(memberInfo.Name).Append(@""";");
8484
}
8585

8686
_sb.Append(@"
@@ -103,7 +103,7 @@ public ValueObjectJsonConverter(global::System.Text.Json.JsonSerializerOptions o
103103
var memberInfo = _assignableInstanceFieldsAndProperties[i];
104104

105105
_sb.Append(@"
106-
").Append(memberInfo.TypeFullyQualifiedNullAnnotated).Append(" ").Append(memberInfo.ArgumentName).Append(" = default;");
106+
").Append(memberInfo.TypeFullyQualifiedNullAnnotated).Append(" ").Append(memberInfo.ArgumentName.Escaped).Append(" = default;");
107107
}
108108

109109
_sb.Append(@"
@@ -141,9 +141,9 @@ public ValueObjectJsonConverter(global::System.Text.Json.JsonSerializerOptions o
141141
else if ");
142142
}
143143

144-
_sb.Append(@"(comparer.Equals(propName, this._").Append(memberInfo.ArgumentName).Append(@"PropertyName))
144+
_sb.Append("(comparer.Equals(propName, this._").Append(memberInfo.ArgumentName.Raw).Append(@"PropertyName))
145145
{
146-
").Append(memberInfo.ArgumentName).Append(" = ");
146+
").Append(memberInfo.ArgumentName.Escaped).Append(" = ");
147147

148148
GenerateReadValue(_sb, memberInfo);
149149

@@ -172,7 +172,7 @@ public ValueObjectJsonConverter(global::System.Text.Json.JsonSerializerOptions o
172172
var memberInfo = _assignableInstanceFieldsAndProperties[i];
173173

174174
_sb.Append(@"
175-
").Append(memberInfo.ArgumentName).Append("!,");
175+
").Append(memberInfo.ArgumentName.Escaped).Append("!,");
176176
}
177177

178178
_sb.Append(@"
@@ -200,25 +200,25 @@ public override void Write(global::System.Text.Json.Utf8JsonWriter writer, ").Ap
200200
var memberInfo = _assignableInstanceFieldsAndProperties[i];
201201

202202
_sb.Append(@"
203-
var ").Append(memberInfo.ArgumentName).Append(@"PropertyValue = value.").Append(memberInfo.Name).Append(@";
203+
var ").Append(memberInfo.ArgumentName.Raw).Append("PropertyValue = value.").Append(memberInfo.Name).Append(@";
204204
");
205205

206206
if (memberInfo.IsReferenceTypeOrNullableStruct)
207207
{
208208
_sb.Append(@"
209-
if(!ignoreNullValues || ").Append(memberInfo.ArgumentName).Append(@"PropertyValue is not null)
209+
if(!ignoreNullValues || ").Append(memberInfo.ArgumentName.Raw).Append(@"PropertyValue is not null)
210210
{
211211
");
212212
}
213213
else
214214
{
215215
_sb.Append(@"
216-
if(!ignoreDefaultValues || !").Append(memberInfo.ArgumentName).Append("PropertyValue.Equals(default(").Append(memberInfo.TypeFullyQualifiedWithNullability).Append(@")))
216+
if(!ignoreDefaultValues || !").Append(memberInfo.ArgumentName.Raw).Append("PropertyValue.Equals(default(").Append(memberInfo.TypeFullyQualifiedWithNullability).Append(@")))
217217
{
218218
");
219219
}
220220

221-
_sb.Append("writer.WritePropertyName(this._").Append(memberInfo.ArgumentName).Append(@"PropertyName);
221+
_sb.Append("writer.WritePropertyName(this._").Append(memberInfo.ArgumentName.Raw).Append(@"PropertyName);
222222
");
223223

224224
_sb.Append(" ");
@@ -292,13 +292,13 @@ private static bool GenerateWriteValue(StringBuilder? sb, InstanceMemberInfo mem
292292
}
293293
else
294294
{
295-
sb?.Append("this._").Append(memberInfo.ArgumentName).Append("Converter.Write(writer, ").Append(memberInfo.ArgumentName).Append("PropertyValue, options);");
295+
sb?.Append("this._").Append(memberInfo.ArgumentName.Raw).Append("Converter.Write(writer, ").Append(memberInfo.ArgumentName.Raw).Append("PropertyValue, options);");
296296

297297
return true;
298298
}
299299
}
300300

301-
sb?.Append("writer.").Append(command).Append("(").Append(memberInfo.ArgumentName).Append("PropertyValue);");
301+
sb?.Append("writer.").Append(command).Append("(").Append(memberInfo.ArgumentName.Raw).Append("PropertyValue);");
302302

303303
return false;
304304
}
@@ -342,7 +342,7 @@ private static void GenerateReadValue(StringBuilder sb, InstanceMemberInfo membe
342342
}
343343
else
344344
{
345-
sb.Append("this._").Append(memberInfo.ArgumentName).Append("Converter.Read(ref reader, typeof(").Append(memberInfo.TypeFullyQualifiedWithNullability).Append("), options)");
345+
sb.Append("this._").Append(memberInfo.ArgumentName.Raw).Append("Converter.Read(ref reader, typeof(").Append(memberInfo.TypeFullyQualifiedWithNullability).Append("), options)");
346346
return;
347347
}
348348
}

src/Thinktecture.Runtime.Extensions.SourceGenerator/CodeAnalysis/ValueObjects/ComplexValueObjectMessagePackCodeGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public sealed class ValueObjectMessagePackFormatter : global::MessagePack.Format
6363
var memberInfo = _assignableInstanceFieldsAndProperties[i];
6464

6565
_sb.Append(@"
66-
var ").Append(memberInfo.ArgumentName).Append(" = ");
66+
var ").Append(memberInfo.ArgumentName.Escaped).Append(" = ");
6767

6868
GenerateReadValue(_sb, memberInfo);
6969

@@ -81,7 +81,7 @@ public sealed class ValueObjectMessagePackFormatter : global::MessagePack.Format
8181
var memberInfo = _assignableInstanceFieldsAndProperties[i];
8282

8383
_sb.Append(@"
84-
").Append(memberInfo.ArgumentName).Append(",");
84+
").Append(memberInfo.ArgumentName.Escaped).Append(",");
8585
}
8686

8787
_sb.Append(@"

src/Thinktecture.Runtime.Extensions.SourceGenerator/CodeAnalysis/ValueObjects/ComplexValueObjectNewtonsoftJsonCodeGenerator.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public override bool CanConvert(global::System.Type objectType)
8282
var memberInfo = _assignableInstanceFieldsAndProperties[i];
8383

8484
_sb.Append(@"
85-
").Append(memberInfo.TypeFullyQualifiedNullAnnotated).Append(" ").Append(memberInfo.ArgumentName).Append(" = default;");
85+
").Append(memberInfo.TypeFullyQualifiedNullAnnotated).Append(" ").Append(memberInfo.ArgumentName.Escaped).Append(" = default;");
8686
}
8787

8888
_sb.Append(@"
@@ -138,9 +138,9 @@ public override bool CanConvert(global::System.Type objectType)
138138
else if ");
139139
}
140140

141-
_sb.Append(@"(comparer.Equals(propName, """).Append(memberInfo.ArgumentName).Append(@"""))
141+
_sb.Append(@"(comparer.Equals(propName, """).Append(memberInfo.ArgumentName.Escaped).Append(@"""))
142142
{
143-
").Append(memberInfo.ArgumentName).Append(" = serializer.Deserialize<").Append(memberInfo.TypeFullyQualifiedWithNullability).Append(@">(reader);
143+
").Append(memberInfo.ArgumentName.Escaped).Append(" = serializer.Deserialize<").Append(memberInfo.TypeFullyQualifiedWithNullability).Append(@">(reader);
144144
}");
145145
}
146146

@@ -172,7 +172,7 @@ public override bool CanConvert(global::System.Type objectType)
172172
var memberInfo = _assignableInstanceFieldsAndProperties[i];
173173

174174
_sb.Append(@"
175-
").Append(memberInfo.ArgumentName).Append("!,");
175+
").Append(memberInfo.ArgumentName.Escaped).Append("!,");
176176
}
177177

178178
_sb.Append(@"
@@ -214,13 +214,13 @@ public override void WriteJson(global::Newtonsoft.Json.JsonWriter writer, object
214214
var memberInfo = _assignableInstanceFieldsAndProperties[i];
215215

216216
_sb.Append(@"
217-
var ").Append(memberInfo.ArgumentName).Append(@"PropertyValue = obj.").Append(memberInfo.Name).Append(@";
217+
var ").Append(memberInfo.ArgumentName.Raw).Append(@"PropertyValue = obj.").Append(memberInfo.Name).Append(@";
218218
");
219219

220220
if (memberInfo.IsReferenceTypeOrNullableStruct)
221221
{
222222
_sb.Append(@"
223-
if(serializer.NullValueHandling != global::Newtonsoft.Json.NullValueHandling.Ignore || ").Append(memberInfo.ArgumentName).Append(@"PropertyValue is not null)
223+
if(serializer.NullValueHandling != global::Newtonsoft.Json.NullValueHandling.Ignore || ").Append(memberInfo.ArgumentName.Raw).Append(@"PropertyValue is not null)
224224
{
225225
");
226226
}
@@ -300,11 +300,11 @@ private static void GenerateWriteValue(StringBuilder? sb, InstanceMemberInfo mem
300300
break;
301301

302302
default:
303-
sb?.Append("serializer.Serialize(writer, ").Append(memberInfo.ArgumentName).Append("PropertyValue);");
303+
sb?.Append("serializer.Serialize(writer, ").Append(memberInfo.ArgumentName.Raw).Append("PropertyValue);");
304304
return;
305305
}
306306
}
307307

308-
sb?.Append("writer.").Append(command).Append("(").Append(memberInfo.ArgumentName).Append("PropertyValue);");
308+
sb?.Append("writer.").Append(command).Append("(").Append(memberInfo.ArgumentName.Raw).Append("PropertyValue);");
309309
}
310310
}

0 commit comments

Comments
 (0)