internal static bool EarlyDecodeDeprecatedOrObsoleteAttribute( ref EarlyDecodeWellKnownAttributeArguments <EarlyWellKnownAttributeBinder, NamedTypeSymbol, AttributeSyntax, AttributeLocation> arguments, out CSharpAttributeData attributeData, out ObsoleteAttributeData obsoleteData) { bool hasAnyDiagnostics; if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.ObsoleteAttribute)) { attributeData = arguments.Binder.GetAttribute(arguments.AttributeSyntax, arguments.AttributeType, out hasAnyDiagnostics); if (!attributeData.HasErrors) { obsoleteData = attributeData.DecodeObsoleteAttribute(); if (hasAnyDiagnostics) { attributeData = null; } } else { obsoleteData = null; attributeData = null; } return(true); } if (CSharpAttributeData.IsTargetEarlyAttribute(arguments.AttributeType, arguments.AttributeSyntax, AttributeDescription.DeprecatedAttribute)) { attributeData = arguments.Binder.GetAttribute(arguments.AttributeSyntax, arguments.AttributeType, out hasAnyDiagnostics); if (!attributeData.HasErrors) { obsoleteData = attributeData.DecodeDeprecatedAttribute(); if (hasAnyDiagnostics) { attributeData = null; } } else { obsoleteData = null; attributeData = null; } return(true); } obsoleteData = null; attributeData = null; return(false); }
internal static bool EarlyDecodeDeprecatedOrExperimentalOrObsoleteAttribute( ref EarlyDecodeWellKnownAttributeArguments <EarlyWellKnownAttributeBinder, NamedTypeSymbol, AttributeSyntax, AttributeLocation> arguments, out CSharpAttributeData attributeData, out ObsoleteAttributeData obsoleteData) { var type = arguments.AttributeType; var syntax = arguments.AttributeSyntax; ObsoleteAttributeKind kind; if (CSharpAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.ObsoleteAttribute)) { kind = ObsoleteAttributeKind.Obsolete; } else if (CSharpAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.DeprecatedAttribute)) { kind = ObsoleteAttributeKind.Deprecated; } else if (CSharpAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.ExperimentalAttribute)) { kind = ObsoleteAttributeKind.Experimental; } else { obsoleteData = null; attributeData = null; return(false); } bool hasAnyDiagnostics; attributeData = arguments.Binder.GetAttribute(syntax, type, out hasAnyDiagnostics); if (!attributeData.HasErrors) { obsoleteData = attributeData.DecodeObsoleteAttribute(kind); if (hasAnyDiagnostics) { attributeData = null; } } else { obsoleteData = null; attributeData = null; } return(true); }