@@ -83,8 +83,8 @@ internal ArgumentSyntax? CoerceValueArgument
8383 {
8484 if ( objectCreation is { ArgumentList : { } } )
8585 {
86- if ( semanticModel . TryGetSymbol ( objectCreation , KnownSymbols . PropertyMetadata , cancellationToken , out var constructor ) ||
87- semanticModel . TryGetSymbol ( objectCreation , KnownSymbols . UIPropertyMetadata , cancellationToken , out constructor ) ||
86+ if ( semanticModel . TryGetSymbol ( objectCreation , KnownSymbols . PropertyMetadata , cancellationToken , out var constructor ) ||
87+ semanticModel . TryGetSymbol ( objectCreation , KnownSymbols . UIPropertyMetadata , cancellationToken , out constructor ) ||
8888 semanticModel . TryGetSymbol ( objectCreation , KnownSymbols . FrameworkPropertyMetadata , cancellationToken , out constructor ) )
8989 {
9090 return new PropertyMetadata ( objectCreation , constructor ) ;
@@ -152,7 +152,7 @@ static bool IsValueValidForRegisteredType(ExpressionSyntax value, ITypeSymbol re
152152 switch ( value )
153153 {
154154 case ConditionalExpressionSyntax { WhenTrue : { } whenTrue , WhenFalse : { } whenFalse } :
155- return IsValueValidForRegisteredType ( whenTrue , registeredType , recursion ) &&
155+ return IsValueValidForRegisteredType ( whenTrue , registeredType , recursion ) &&
156156 IsValueValidForRegisteredType ( whenFalse , registeredType , recursion ) ;
157157
158158 case BinaryExpressionSyntax { Left : { } , Right : { } right } binary
@@ -201,6 +201,8 @@ when binary.IsKind(SyntaxKind.CoalesceExpression):
201201 return IsAssignedValueOfRegisteredType ( property , declaration ) ;
202202 case { Symbol : IMethodSymbol _, Declaration : MethodDeclarationSyntax declaration } :
203203 return IsReturnValueOfRegisteredType ( declaration ) ;
204+ case { Symbol : IMethodSymbol { MetadataName : "GetAsFrozen" } , Source : InvocationExpressionSyntax { Expression : MemberAccessExpressionSyntax { Expression : { } expression } } } :
205+ return recursion . SemanticModel . IsRepresentationPreservingConversion ( expression , registeredType ) ;
204206 case { Symbol : IFieldSymbol { Type : { SpecialType : SpecialType . System_Object } } } :
205207 return true ;
206208 case { Symbol : IPropertySymbol { Type : { SpecialType : SpecialType . System_Object } } } :
0 commit comments