Fix removal of [RequiresUnreferencedCode] on older runtimes

This commit is contained in:
Sergio Pedri
2021-12-31 17:04:10 +01:00
parent cc3205a362
commit e12e0858a4
@@ -52,7 +52,7 @@ public sealed class ObservableRecipientGenerator : TransitiveMembersGenerator<Ob
// Check whether [RequiresUnreferencedCode] is available
IncrementalValueProvider<bool> isRequiresUnreferencedCodeAttributeAvailable =
context.CompilationProvider
.Select(static (item, _) => item.GetTypeByMetadataName("System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute") is not null);
.Select(static (item, _) => item.GetTypeByMetadataName("System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute") is { DeclaredAccessibility: Accessibility.Public });
return
source
@@ -128,7 +128,7 @@ public sealed class ObservableRecipientGenerator : TransitiveMembersGenerator<Ob
member
.DescendantNodes()
.OfType<AttributeListSyntax>()
.First(node => ((IdentifierNameSyntax)((QualifiedNameSyntax)node.Attributes[0].Name).Right).Identifier.ValueText == "RequiresUnreferencedCode");
.First(node => node.Attributes[0].Name is QualifiedNameSyntax { Right: IdentifierNameSyntax { Identifier.ValueText: "RequiresUnreferencedCode" } });
return member.RemoveNode(attributeNode, SyntaxRemoveOptions.KeepExteriorTrivia)!;
}