Skip to content

Commit 8fe85e7

Browse files
committed
Reuse properties
1 parent 904a753 commit 8fe85e7

File tree

1 file changed

+11
-12
lines changed

1 file changed

+11
-12
lines changed

src/DynamoDBGenerator.SourceGenerator/Generations/AttributeExpressionValue.cs

+11-12
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public static class AttributeExpressionValue
1212
private const string ValueProvider = "valueIdProvider";
1313
private static IEnumerable<string> TypeContents(
1414
ITypeSymbol typeSymbol,
15-
(bool IsUnknown, DynamoDbDataMember DDB, string ValueRef, string AttributeReference, string AttributeInterfaceName)[] dataMembers,
15+
(bool IsUnknown, DynamoDbDataMember DDB, string AttributeReference, string AttributeInterfaceName)[] dataMembers,
1616
string structName,
1717
string interfaceName,
1818
MarshallerOptions options
@@ -21,8 +21,8 @@ MarshallerOptions options
2121
const string self = "_self";
2222
var constructorFieldAssignments = dataMembers
2323
.Select(x => x.IsUnknown
24-
? $"{x.ValueRef} = new (() => new {x.AttributeReference}({ValueProvider}, {MarshallerOptions.ParamReference}));"
25-
: $"{x.ValueRef} = new ({ValueProvider});")
24+
? $"{x.DDB.DataMember.PrivateField} = new (() => new {x.AttributeReference}({ValueProvider}, {MarshallerOptions.ParamReference}));"
25+
: $"{x.DDB.DataMember.PrivateField} = new ({ValueProvider});")
2626
.Append($"{self} = new({ValueProvider});")
2727
.Append($"{MarshallerOptions.FieldReference} = {MarshallerOptions.ParamReference};");
2828
foreach (var fieldAssignment in $"public {structName}(Func<string> {ValueProvider}, {MarshallerOptions.Name} options)".CreateScope(constructorFieldAssignments))
@@ -33,13 +33,13 @@ MarshallerOptions options
3333
{
3434
if (fieldDeclaration.IsUnknown)
3535
{
36-
yield return $"private readonly Lazy<{fieldDeclaration.AttributeReference}> {fieldDeclaration.ValueRef};";
37-
yield return $"public {fieldDeclaration.AttributeReference} {fieldDeclaration.DDB.DataMember.Name} => {fieldDeclaration.ValueRef}.Value;";
36+
yield return $"private readonly Lazy<{fieldDeclaration.AttributeReference}> {fieldDeclaration.DDB.DataMember.PrivateField};";
37+
yield return $"public {fieldDeclaration.AttributeReference} {fieldDeclaration.DDB.DataMember.Name} => {fieldDeclaration.DDB.DataMember.PrivateField}.Value;";
3838
}
3939
else
4040
{
41-
yield return $"private readonly Lazy<string> {fieldDeclaration.ValueRef};";
42-
yield return $"public string {fieldDeclaration.DDB.DataMember.Name} => {fieldDeclaration.ValueRef}.Value;";
41+
yield return $"private readonly Lazy<string> {fieldDeclaration.DDB.DataMember.PrivateField};";
42+
yield return $"public string {fieldDeclaration.DDB.DataMember.Name} => {fieldDeclaration.DDB.DataMember.PrivateField}.Value;";
4343
}
4444
}
4545
yield return $"private readonly Lazy<string> {self};";
@@ -66,7 +66,7 @@ MarshallerOptions options
6666
yield return $"public override string ToString() => {self}.Value;";
6767
}
6868

69-
private static IEnumerable<string> YieldSelector((bool IsUnknown, DynamoDbDataMember DDB, string ValueRef, string AttributeReference, string AttributeInterfaceName) x, MarshallerOptions options)
69+
private static IEnumerable<string> YieldSelector((bool IsUnknown, DynamoDbDataMember DDB, string AttributeReference, string AttributeInterfaceName) x, MarshallerOptions options)
7070
{
7171
var accessPattern = $"entity.{x.DDB.DataMember.Name}";
7272

@@ -76,10 +76,10 @@ private static IEnumerable<string> YieldSelector((bool IsUnknown, DynamoDbDataMe
7676
accessPattern,
7777
$"foreach (var x in ({x.DDB.DataMember.Name} as {x.AttributeInterfaceName}).{Constants.DynamoDBGenerator.Marshaller.AttributeExpressionValueTrackerAccessedValues}({accessPattern}))".CreateScope("yield return x;")
7878
)
79-
.ScopeTo($"if ({x.ValueRef}.IsValueCreated)");
79+
.ScopeTo($"if ({x.DDB.DataMember.PrivateField}.IsValueCreated)");
8080
}
8181

82-
return $"if ({x.ValueRef}.IsValueCreated)".CreateScope(x.DDB.DataMember.Type.NotNullIfStatement(accessPattern, $"yield return new ({x.ValueRef}.Value, {Marshaller.InvokeMarshallerMethod(x.DDB.DataMember.Type, $"entity.{x.DDB.DataMember.Name}", $"\"{x.DDB.DataMember.Name}\"", options, MarshallerOptions.FieldReference)} ?? {AttributeValueUtilityFactory.Null});"));
82+
return $"if ({x.DDB.DataMember.PrivateField}.IsValueCreated)".CreateScope(x.DDB.DataMember.Type.NotNullIfStatement(accessPattern, $"yield return new ({x.DDB.DataMember.PrivateField}.Value, {Marshaller.InvokeMarshallerMethod(x.DDB.DataMember.Type, $"entity.{x.DDB.DataMember.Name}", $"\"{x.DDB.DataMember.Name}\"", options, MarshallerOptions.FieldReference)} ?? {AttributeValueUtilityFactory.Null});"));
8383

8484
}
8585
internal static IEnumerable<string> CreateExpressionAttributeValue(IEnumerable<DynamoDBMarshallerArguments> arguments, Func<ITypeSymbol, ImmutableArray<DynamoDbDataMember>> getDynamoDbProperties, MarshallerOptions options)
@@ -95,15 +95,14 @@ private static CodeFactory CreateStruct(ITypeSymbol typeSymbol, Func<ITypeSymbol
9595
var dataMembers =
9696
options.IsConvertable(typeSymbol)
9797
? Array
98-
.Empty<(bool IsUnknown, DynamoDbDataMember DDB, string ValueRef, string AttributeReference, string
98+
.Empty<(bool IsUnknown, DynamoDbDataMember DDB, string AttributeReference, string
9999
AttributeInterfaceName)>()
100100
: fn(typeSymbol)
101101
.Select(x =>
102102
{
103103
return (
104104
IsUnknown: !options.IsConvertable(x.DataMember.Type) && x.DataMember.Type.TypeIdentifier() is UnknownType,
105105
DDB: x,
106-
ValueRef: x.DataMember.Name.ToPrivateFieldFromPascal(),
107106
AttributeReference: TypeName(x.DataMember.Type),
108107
AttributeInterfaceName:
109108
$"{Constants.DynamoDBGenerator.Marshaller.AttributeExpressionValueTrackerInterface}<{x.DataMember.Type.Representation().annotated}>"

0 commit comments

Comments
 (0)