@@ -20,7 +20,7 @@ public static class AttributeExpressionValue
2020 private const string ValueProvider = "valueIdProvider" ;
2121
2222 private static IEnumerable < string > TypeContents (
23- ITypeSymbol typeSymbol ,
23+ TypeIdentifier typeIdentifier ,
2424 ( bool IsUnknown , DynamoDbDataMember DDB , string AttributeReference , string AttributeInterfaceName ) [ ]
2525 dataMembers ,
2626 string structName ,
@@ -61,11 +61,11 @@ MarshallerOptions options
6161
6262 const string param = "entity" ;
6363
64- var yields = ( typeSymbol switch
64+ var yields = ( typeIdentifier switch
6565 {
66- _ when typeSymbol . IsNullable ( ) => $ "if ({ param } is null)". CreateScope (
66+ { IsNullable : true } => $ "if ({ param } is null)". CreateScope (
6767 $ "yield return new ({ self } .Value, { AttributeValueUtilityFactory . Null } );", "yield break;" ) ,
68- { IsReferenceType : true } => $ "if ({ param } is null)". CreateScope (
68+ { TypeSymbol . IsReferenceType : true } => $ "if ({ param } is null)". CreateScope (
6969 $ "throw { ExceptionHelper . NullExceptionMethod } (\" { structName } \" );") ,
7070 _ => Enumerable . Empty < string > ( )
7171 } )
@@ -74,12 +74,12 @@ _ when typeSymbol.IsNullable() => $"if ({param} is null)".CreateScope(
7474 . Concat (
7575 $ "if ({ self } .IsValueCreated)"
7676 . CreateScope (
77- $ "yield return new ({ self } .Value, { Marshaller . InvokeMarshallerMethod ( typeSymbol , "entity" , $ "\" { structName } \" ", options , MarshallerOptions . FieldReference ) } { HandeNullability ( typeSymbol ) } );"
77+ $ "yield return new ({ self } .Value, { Marshaller . InvokeMarshallerMethod ( typeIdentifier , "entity" , $ "\" { structName } \" ", options , MarshallerOptions . FieldReference ) } { HandeNullability ( typeIdentifier ) } );"
7878 )
7979 )
8080 )
8181 . ScopeTo (
82- $ "IEnumerable<KeyValuePair<string, AttributeValue>> { interfaceName } .{ Constants . DynamoDBGenerator . Marshaller . AttributeExpressionValueTrackerAccessedValues } ({ typeSymbol . Representation ( ) . annotated } entity)") ;
82+ $ "IEnumerable<KeyValuePair<string, AttributeValue>> { interfaceName } .{ Constants . DynamoDBGenerator . Marshaller . AttributeExpressionValueTrackerAccessedValues } ({ typeIdentifier . AnnotatedRepresenation } entity)") ;
8383
8484
8585 foreach ( var yield in yields )
@@ -88,8 +88,8 @@ _ when typeSymbol.IsNullable() => $"if ({param} is null)".CreateScope(
8888 yield return $ "public override string ToString() => { self } .Value;";
8989 }
9090
91- private static string ? HandeNullability ( ITypeSymbol typeSymbol ) =>
92- typeSymbol . IsNullable ( ) ? $ " ?? { AttributeValueUtilityFactory . Null } " : null ;
91+ private static string ? HandeNullability ( TypeIdentifier typeSymbol ) =>
92+ typeSymbol . IsNullable ? $ " ?? { AttributeValueUtilityFactory . Null } " : null ;
9393
9494 private static IEnumerable < string > YieldSelector (
9595 ( bool IsUnknown , DynamoDbDataMember DDB , string AttributeReference , string AttributeInterfaceName ) x ,
@@ -99,7 +99,7 @@ private static IEnumerable<string> YieldSelector(
9999
100100 if ( x . IsUnknown )
101101 {
102- return x . DDB . DataMember . Type . NotNullIfStatement (
102+ return x . DDB . DataMember . TypeIdentifier . TypeSymbol . NotNullIfStatement (
103103 accessPattern ,
104104 $ "foreach (var x in ({ x . DDB . DataMember . Name } as { x . AttributeInterfaceName } ).{ Constants . DynamoDBGenerator . Marshaller . AttributeExpressionValueTrackerAccessedValues } ({ accessPattern } ))"
105105 . CreateScope ( "yield return x;" )
@@ -109,54 +109,50 @@ private static IEnumerable<string> YieldSelector(
109109
110110
111111 return $ "if ({ x . DDB . DataMember . NameAsPrivateField } .IsValueCreated)". CreateScope (
112- x . DDB . DataMember . Type . NotNullIfStatement (
112+ x . DDB . DataMember . TypeIdentifier . TypeSymbol . NotNullIfStatement (
113113 accessPattern ,
114- $ "yield return new ({ x . DDB . DataMember . NameAsPrivateField } .Value, { Marshaller . InvokeMarshallerMethod ( x . DDB . DataMember . Type , $ "entity.{ x . DDB . DataMember . Name } ", $ "\" { x . DDB . DataMember . Name } \" ", options , MarshallerOptions . FieldReference ) } { HandeNullability ( x . DDB . DataMember . Type ) } );"
114+ $ "yield return new ({ x . DDB . DataMember . NameAsPrivateField } .Value, { Marshaller . InvokeMarshallerMethod ( x . DDB . DataMember . TypeIdentifier , $ "entity.{ x . DDB . DataMember . Name } ", $ "\" { x . DDB . DataMember . Name } \" ", options , MarshallerOptions . FieldReference ) } { HandeNullability ( x . DDB . DataMember . TypeIdentifier ) } );"
115115 ) ) ;
116116 }
117117
118118 internal static IEnumerable < string > CreateClasses ( DynamoDBMarshallerArguments [ ] arguments ,
119119 Func < ITypeSymbol , DynamoDbDataMember [ ] > getDynamoDbProperties , MarshallerOptions options )
120120 {
121121 // Using _comparer can double classes when there's a None nullable property mixed with a nullable property
122- var hashSet = new HashSet < ITypeSymbol > ( SymbolEqualityComparer . Default ) ;
122+ var hashSet = new HashSet < TypeIdentifier > ( TypeIdentifier . Default ) ;
123123
124124 return arguments
125125 . SelectMany ( x =>
126126 CodeFactory . Create ( x . ArgumentType , y => CreateStruct ( y , getDynamoDbProperties , options ) , hashSet ) ) ;
127127 }
128128
129- private static CodeFactory CreateStruct ( ITypeSymbol typeSymbol , Func < ITypeSymbol , DynamoDbDataMember [ ] > fn ,
129+ private static CodeFactory CreateStruct ( TypeIdentifier typeIdentifier , Func < ITypeSymbol , DynamoDbDataMember [ ] > fn ,
130130 MarshallerOptions options )
131131 {
132132 var dataMembers =
133- options . IsConvertable ( typeSymbol )
133+ options . IsConvertable ( typeIdentifier . TypeSymbol )
134134 ? Array
135135 . Empty < ( bool IsUnknown , DynamoDbDataMember DDB , string AttributeReference , string
136136 AttributeInterfaceName ) > ( )
137- : fn ( typeSymbol )
138- . Select ( x =>
139- {
140- return (
141- IsUnknown : ! options . IsConvertable ( x . DataMember . Type ) &&
142- x . DataMember . Type . TypeIdentifier ( ) is UnknownType ,
143- DDB : x ,
144- AttributeReference : TypeName ( x . DataMember . Type ) ,
145- AttributeInterfaceName :
146- $ "{ Constants . DynamoDBGenerator . Marshaller . AttributeExpressionValueTrackerInterface } <{ x . DataMember . Type . Representation ( ) . annotated } >"
147- ) ;
148- } )
137+ : fn ( typeIdentifier . TypeSymbol )
138+ . Select ( x => (
139+ IsUnknown : options . IsUnknown ( x . DataMember . TypeIdentifier ) ,
140+ DDB : x ,
141+ AttributeReference : TypeName ( x . DataMember . TypeIdentifier . TypeSymbol ) ,
142+ AttributeInterfaceName :
143+ $ "{ Constants . DynamoDBGenerator . Marshaller . AttributeExpressionValueTrackerInterface } <{ x . DataMember . TypeIdentifier . AnnotatedRepresenation } >"
144+ ) )
149145 . ToArray ( ) ;
150146
151- var structName = TypeName ( typeSymbol ) ;
147+ var structName = TypeName ( typeIdentifier . TypeSymbol ) ;
152148 var interfaceName =
153- $ "{ Constants . DynamoDBGenerator . Marshaller . AttributeExpressionValueTrackerInterface } <{ typeSymbol . Representation ( ) . annotated } >";
149+ $ "{ Constants . DynamoDBGenerator . Marshaller . AttributeExpressionValueTrackerInterface } <{ typeIdentifier . AnnotatedRepresenation } >";
154150
155151 var @struct =
156- $ "public readonly struct { structName } : { interfaceName } ". CreateScope ( TypeContents ( typeSymbol , dataMembers ,
152+ $ "public readonly struct { structName } : { interfaceName } ". CreateScope ( TypeContents ( typeIdentifier , dataMembers ,
157153 structName , interfaceName , options ) ) ;
158154
159- return new CodeFactory ( @struct , dataMembers . Where ( x => x . IsUnknown ) . Select ( x => x . DDB . DataMember . Type ) ) ;
155+ return new CodeFactory ( @struct , dataMembers . Where ( x => x . IsUnknown ) . Select ( x => x . DDB . DataMember . TypeIdentifier ) ) ;
160156 }
161157
162158 [ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
0 commit comments