diff --git a/src/Compilers/CSharp/Portable/Symbols/ObsoleteAttributeHelpers.cs b/src/Compilers/CSharp/Portable/Symbols/ObsoleteAttributeHelpers.cs index 4c629b727670e..aecf37a20cc30 100644 --- a/src/Compilers/CSharp/Portable/Symbols/ObsoleteAttributeHelpers.cs +++ b/src/Compilers/CSharp/Portable/Symbols/ObsoleteAttributeHelpers.cs @@ -99,8 +99,8 @@ internal static ObsoleteDiagnosticKind GetObsoleteDiagnosticKind(Symbol symbol, { case ObsoleteAttributeKind.None: return ObsoleteDiagnosticKind.NotObsolete; + case ObsoleteAttributeKind.WindowsExperimental: case ObsoleteAttributeKind.Experimental: - case ObsoleteAttributeKind.NewExperimental: return ObsoleteDiagnosticKind.Diagnostic; case ObsoleteAttributeKind.Uninitialized: // If we haven't cracked attributes on the symbol at all or we haven't @@ -155,7 +155,7 @@ static DiagnosticInfo createObsoleteDiagnostic(Symbol symbol, BinderFlags locati return null; } - if (data.Kind == ObsoleteAttributeKind.Experimental) + if (data.Kind == ObsoleteAttributeKind.WindowsExperimental) { Debug.Assert(data.Message == null); Debug.Assert(!data.IsError); @@ -163,7 +163,7 @@ static DiagnosticInfo createObsoleteDiagnostic(Symbol symbol, BinderFlags locati return new CSDiagnosticInfo(ErrorCode.WRN_Experimental, new FormattedSymbol(symbol, SymbolDisplayFormat.CSharpErrorMessageFormat)); } - if (data.Kind == ObsoleteAttributeKind.NewExperimental) + if (data.Kind == ObsoleteAttributeKind.Experimental) { Debug.Assert(data.Message is null); Debug.Assert(!data.IsError); diff --git a/src/Compilers/CSharp/Portable/Symbols/Symbol.cs b/src/Compilers/CSharp/Portable/Symbols/Symbol.cs index 519d0471901c8..0eff024ab0ed5 100644 --- a/src/Compilers/CSharp/Portable/Symbols/Symbol.cs +++ b/src/Compilers/CSharp/Portable/Symbols/Symbol.cs @@ -1320,8 +1320,8 @@ internal ThreeState ObsoleteState switch (ObsoleteKind) { case ObsoleteAttributeKind.None: + case ObsoleteAttributeKind.WindowsExperimental: case ObsoleteAttributeKind.Experimental: - case ObsoleteAttributeKind.NewExperimental: return ThreeState.False; case ObsoleteAttributeKind.Uninitialized: return ThreeState.Unknown; diff --git a/src/Compilers/CSharp/Portable/Symbols/Symbol_Attributes.cs b/src/Compilers/CSharp/Portable/Symbols/Symbol_Attributes.cs index 599a60b520b25..cede809659f7a 100644 --- a/src/Compilers/CSharp/Portable/Symbols/Symbol_Attributes.cs +++ b/src/Compilers/CSharp/Portable/Symbols/Symbol_Attributes.cs @@ -162,13 +162,13 @@ internal static bool EarlyDecodeDeprecatedOrExperimentalOrObsoleteAttribute( { kind = ObsoleteAttributeKind.Deprecated; } - else if (CSharpAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.ExperimentalAttribute)) + else if (CSharpAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.WindowsExperimentalAttribute)) { - kind = ObsoleteAttributeKind.Experimental; + kind = ObsoleteAttributeKind.WindowsExperimental; } - else if (CSharpAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.NewExperimentalAttribute)) + else if (CSharpAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.ExperimentalAttribute)) { - kind = ObsoleteAttributeKind.NewExperimental; + kind = ObsoleteAttributeKind.Experimental; } else { diff --git a/src/Compilers/CSharp/Test/Emit2/Attributes/AttributeTests_Experimental.cs b/src/Compilers/CSharp/Test/Emit2/Attributes/AttributeTests_Experimental.cs index 43763951ad049..1fab435c09b03 100644 --- a/src/Compilers/CSharp/Test/Emit2/Attributes/AttributeTests_Experimental.cs +++ b/src/Compilers/CSharp/Test/Emit2/Attributes/AttributeTests_Experimental.cs @@ -10,7 +10,7 @@ namespace Microsoft.CodeAnalysis.CSharp.UnitTests { - public class AttributeTests_Experimental : CSharpTestBase + public class AttributeTests_WindowsExperimental : CSharpTestBase { private const string DeprecatedAttributeSource = @"using System; diff --git a/src/Compilers/Core/Portable/MetadataReader/PEModule.cs b/src/Compilers/Core/Portable/MetadataReader/PEModule.cs index 96dce7cd00498..881353b0708ac 100644 --- a/src/Compilers/Core/Portable/MetadataReader/PEModule.cs +++ b/src/Compilers/Core/Portable/MetadataReader/PEModule.cs @@ -1164,24 +1164,24 @@ internal ObsoleteAttributeData TryGetDeprecatedOrExperimentalOrObsoleteAttribute } // [Windows.Foundation.Metadata.Experimental] is always a warning, not an error. - info = FindTargetAttribute(token, AttributeDescription.ExperimentalAttribute); + info = FindTargetAttribute(token, AttributeDescription.WindowsExperimentalAttribute); if (info.HasValue) { - return TryExtractExperimentalDataFromAttribute(info); + return TryExtractWindowsExperimentalDataFromAttribute(info); } // [Experimental] is always a warning, not an error, so search for it last. - info = FindTargetAttribute(token, AttributeDescription.NewExperimentalAttribute); + info = FindTargetAttribute(token, AttributeDescription.ExperimentalAttribute); if (info.HasValue) { - return TryExtractNewExperimentalDataFromAttribute(info, decoder); + return TryExtractExperimentalDataFromAttribute(info, decoder); } return null; } #nullable enable - private ObsoleteAttributeData? TryExtractNewExperimentalDataFromAttribute(AttributeInfo attributeInfo, IAttributeNamedArgumentDecoder decoder) + private ObsoleteAttributeData? TryExtractExperimentalDataFromAttribute(AttributeInfo attributeInfo, IAttributeNamedArgumentDecoder decoder) { Debug.Assert(attributeInfo.HasValue); if (!TryGetAttributeReader(attributeInfo.Handle, out var sig)) @@ -1202,7 +1202,7 @@ internal ObsoleteAttributeData TryGetDeprecatedOrExperimentalOrObsoleteAttribute } string? urlFormat = crackUrlFormat(decoder, ref sig); - return new ObsoleteAttributeData(ObsoleteAttributeKind.NewExperimental, message: null, isError: false, diagnosticId, urlFormat); + return new ObsoleteAttributeData(ObsoleteAttributeKind.Experimental, message: null, isError: false, diagnosticId, urlFormat); static string? crackUrlFormat(IAttributeNamedArgumentDecoder decoder, ref BlobReader sig) { @@ -1692,14 +1692,14 @@ private ObsoleteAttributeData TryExtractDeprecatedDataFromAttribute(AttributeInf } } - private ObsoleteAttributeData TryExtractExperimentalDataFromAttribute(AttributeInfo attributeInfo) + private ObsoleteAttributeData TryExtractWindowsExperimentalDataFromAttribute(AttributeInfo attributeInfo) { Debug.Assert(attributeInfo.HasValue); switch (attributeInfo.SignatureIndex) { case 0: // ExperimentalAttribute() - return ObsoleteAttributeData.Experimental; + return ObsoleteAttributeData.WindowsExperimental; default: throw ExceptionUtilities.UnexpectedValue(attributeInfo.SignatureIndex); diff --git a/src/Compilers/Core/Portable/Symbols/Attributes/AttributeDescription.cs b/src/Compilers/Core/Portable/Symbols/Attributes/AttributeDescription.cs index 4ddbdf5a6d7da..f2066cc984cc3 100644 --- a/src/Compilers/Core/Portable/Symbols/Attributes/AttributeDescription.cs +++ b/src/Compilers/Core/Portable/Symbols/Attributes/AttributeDescription.cs @@ -464,8 +464,8 @@ static AttributeDescription() internal static readonly AttributeDescription NullableAttribute = new AttributeDescription("System.Runtime.CompilerServices", "NullableAttribute", s_signaturesOfNullableAttribute); internal static readonly AttributeDescription NullableContextAttribute = new AttributeDescription("System.Runtime.CompilerServices", "NullableContextAttribute", s_signaturesOfNullableContextAttribute); internal static readonly AttributeDescription NullablePublicOnlyAttribute = new AttributeDescription("System.Runtime.CompilerServices", "NullablePublicOnlyAttribute", s_signatures_HasThis_Void_Boolean_Only); - internal static readonly AttributeDescription ExperimentalAttribute = new AttributeDescription("Windows.Foundation.Metadata", "ExperimentalAttribute", s_signatures_HasThis_Void_Only); - internal static readonly AttributeDescription NewExperimentalAttribute = new AttributeDescription("System.Diagnostics.CodeAnalysis", "ExperimentalAttribute", s_signatures_HasThis_Void_String_Only); + internal static readonly AttributeDescription WindowsExperimentalAttribute = new AttributeDescription("Windows.Foundation.Metadata", "ExperimentalAttribute", s_signatures_HasThis_Void_Only); + internal static readonly AttributeDescription ExperimentalAttribute = new AttributeDescription("System.Diagnostics.CodeAnalysis", "ExperimentalAttribute", s_signatures_HasThis_Void_String_Only); internal static readonly AttributeDescription ExcludeFromCodeCoverageAttribute = new AttributeDescription("System.Diagnostics.CodeAnalysis", "ExcludeFromCodeCoverageAttribute", s_signatures_HasThis_Void_Only); internal static readonly AttributeDescription EnumeratorCancellationAttribute = new AttributeDescription("System.Runtime.CompilerServices", "EnumeratorCancellationAttribute", s_signatures_HasThis_Void_Only); internal static readonly AttributeDescription SkipLocalsInitAttribute = new AttributeDescription("System.Runtime.CompilerServices", "SkipLocalsInitAttribute", s_signatures_HasThis_Void_Only); diff --git a/src/Compilers/Core/Portable/Symbols/Attributes/CommonAttributeData.cs b/src/Compilers/Core/Portable/Symbols/Attributes/CommonAttributeData.cs index 901a4d756869a..2fe5edd56088e 100644 --- a/src/Compilers/Core/Portable/Symbols/Attributes/CommonAttributeData.cs +++ b/src/Compilers/Core/Portable/Symbols/Attributes/CommonAttributeData.cs @@ -255,15 +255,15 @@ internal ObsoleteAttributeData DecodeObsoleteAttribute(ObsoleteAttributeKind kin return DecodeObsoleteAttribute(); case ObsoleteAttributeKind.Deprecated: return DecodeDeprecatedAttribute(); + case ObsoleteAttributeKind.WindowsExperimental: + return DecodeWindowsExperimentalAttribute(); case ObsoleteAttributeKind.Experimental: - return DecodeExperimentalAttribute(); - case ObsoleteAttributeKind.NewExperimental: - return decodeNewExperimentalAttribute(); + return decodeExperimentalAttribute(); default: throw ExceptionUtilities.UnexpectedValue(kind); } - ObsoleteAttributeData decodeNewExperimentalAttribute() + ObsoleteAttributeData decodeExperimentalAttribute() { // ExperimentalAttribute(string diagnosticId) Debug.Assert(this.CommonConstructorArguments.Length == 1); @@ -283,7 +283,7 @@ ObsoleteAttributeData decodeNewExperimentalAttribute() } } - return new ObsoleteAttributeData(ObsoleteAttributeKind.NewExperimental, message: null, isError: false, diagnosticId, urlFormat); + return new ObsoleteAttributeData(ObsoleteAttributeKind.Experimental, message: null, isError: false, diagnosticId, urlFormat); } } @@ -372,11 +372,11 @@ private ObsoleteAttributeData DecodeDeprecatedAttribute() /// /// Decode the arguments to ExperimentalAttribute. ExperimentalAttribute has 0 arguments. /// - private ObsoleteAttributeData DecodeExperimentalAttribute() + private ObsoleteAttributeData DecodeWindowsExperimentalAttribute() { // ExperimentalAttribute() Debug.Assert(this.CommonConstructorArguments.Length == 0); - return ObsoleteAttributeData.Experimental; + return ObsoleteAttributeData.WindowsExperimental; } internal static void DecodeMethodImplAttribute( diff --git a/src/Compilers/Core/Portable/Symbols/Attributes/ObsoleteAttributeData.cs b/src/Compilers/Core/Portable/Symbols/Attributes/ObsoleteAttributeData.cs index 9a7f2ca264963..67d7d4da7c831 100644 --- a/src/Compilers/Core/Portable/Symbols/Attributes/ObsoleteAttributeData.cs +++ b/src/Compilers/Core/Portable/Symbols/Attributes/ObsoleteAttributeData.cs @@ -12,8 +12,8 @@ internal enum ObsoleteAttributeKind Uninitialized, Obsolete, Deprecated, + WindowsExperimental, Experimental, - NewExperimental, } /// @@ -22,7 +22,7 @@ internal enum ObsoleteAttributeKind internal sealed class ObsoleteAttributeData { public static readonly ObsoleteAttributeData Uninitialized = new ObsoleteAttributeData(ObsoleteAttributeKind.Uninitialized, message: null, isError: false, diagnosticId: null, urlFormat: null); - public static readonly ObsoleteAttributeData Experimental = new ObsoleteAttributeData(ObsoleteAttributeKind.Experimental, message: null, isError: false, diagnosticId: null, urlFormat: null); + public static readonly ObsoleteAttributeData WindowsExperimental = new ObsoleteAttributeData(ObsoleteAttributeKind.WindowsExperimental, message: null, isError: false, diagnosticId: null, urlFormat: null); public const string DiagnosticIdPropertyName = "DiagnosticId"; public const string UrlFormatPropertyName = "UrlFormat"; diff --git a/src/Compilers/VisualBasic/Portable/Symbols/ObsoleteAttributeHelpers.vb b/src/Compilers/VisualBasic/Portable/Symbols/ObsoleteAttributeHelpers.vb index b9efa63fc9602..12539703f7f75 100644 --- a/src/Compilers/VisualBasic/Portable/Symbols/ObsoleteAttributeHelpers.vb +++ b/src/Compilers/VisualBasic/Portable/Symbols/ObsoleteAttributeHelpers.vb @@ -75,7 +75,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols Select Case symbol.ObsoleteKind Case ObsoleteAttributeKind.None Return ObsoleteDiagnosticKind.NotObsolete - Case ObsoleteAttributeKind.Experimental, ObsoleteAttributeKind.NewExperimental + Case ObsoleteAttributeKind.WindowsExperimental, ObsoleteAttributeKind.Experimental Return ObsoleteDiagnosticKind.Diagnostic Case ObsoleteAttributeKind.Uninitialized ' If we haven't cracked attributes on the symbol at all or we haven't @@ -115,7 +115,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols ' uninitialized. Debug.Assert(Not data.IsUninitialized) - If data.Kind = ObsoleteAttributeKind.Experimental Then + If data.Kind = ObsoleteAttributeKind.WindowsExperimental Then Debug.Assert(data.Message Is Nothing) Debug.Assert(Not data.IsError) ' Provide an explicit format for fully-qualified type names. @@ -123,7 +123,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols End If - If data.Kind = ObsoleteAttributeKind.NewExperimental Then + If data.Kind = ObsoleteAttributeKind.Experimental Then Debug.Assert(data.Message Is Nothing) Debug.Assert(Not data.IsError) ' Provide an explicit format for fully-qualified type names. diff --git a/src/Compilers/VisualBasic/Portable/Symbols/Source/QuickAttributeChecker.vb b/src/Compilers/VisualBasic/Portable/Symbols/Source/QuickAttributeChecker.vb index 5c9eed809dc0b..e2c9c1a61bb3c 100644 --- a/src/Compilers/VisualBasic/Portable/Symbols/Source/QuickAttributeChecker.vb +++ b/src/Compilers/VisualBasic/Portable/Symbols/Source/QuickAttributeChecker.vb @@ -155,9 +155,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols result = result Or QuickAttributes.Obsolete ElseIf Matches(name, inAttribute, AttributeDescription.DeprecatedAttribute) Then result = result Or QuickAttributes.Obsolete - ElseIf Matches(name, inAttribute, AttributeDescription.ExperimentalAttribute) Then + ElseIf Matches(name, inAttribute, AttributeDescription.WindowsExperimentalAttribute) Then result = result Or QuickAttributes.Obsolete - ElseIf Matches(name, inAttribute, AttributeDescription.NewExperimentalAttribute) Then + ElseIf Matches(name, inAttribute, AttributeDescription.ExperimentalAttribute) Then result = result Or QuickAttributes.Obsolete ElseIf Matches(name, inAttribute, AttributeDescription.MyGroupCollectionAttribute) Then result = result Or QuickAttributes.TypeIdentifier diff --git a/src/Compilers/VisualBasic/Portable/Symbols/Source/SourceModuleSymbol.vb b/src/Compilers/VisualBasic/Portable/Symbols/Source/SourceModuleSymbol.vb index c3c9452d15149..14518f97dae13 100644 --- a/src/Compilers/VisualBasic/Portable/Symbols/Source/SourceModuleSymbol.vb +++ b/src/Compilers/VisualBasic/Portable/Symbols/Source/SourceModuleSymbol.vb @@ -328,8 +328,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols checker.AddName(AttributeDescription.CaseInsensitiveExtensionAttribute.Name, QuickAttributes.Extension) checker.AddName(AttributeDescription.ObsoleteAttribute.Name, QuickAttributes.Obsolete) checker.AddName(AttributeDescription.DeprecatedAttribute.Name, QuickAttributes.Obsolete) + checker.AddName(AttributeDescription.WindowsExperimentalAttribute.Name, QuickAttributes.Obsolete) checker.AddName(AttributeDescription.ExperimentalAttribute.Name, QuickAttributes.Obsolete) - checker.AddName(AttributeDescription.NewExperimentalAttribute.Name, QuickAttributes.Obsolete) checker.AddName(AttributeDescription.MyGroupCollectionAttribute.Name, QuickAttributes.MyGroupCollection) checker.AddName(AttributeDescription.TypeIdentifierAttribute.Name, QuickAttributes.TypeIdentifier) diff --git a/src/Compilers/VisualBasic/Portable/Symbols/Source/SourceNamedTypeSymbol.vb b/src/Compilers/VisualBasic/Portable/Symbols/Source/SourceNamedTypeSymbol.vb index 5a24eadf5c111..f83bc35613404 100644 --- a/src/Compilers/VisualBasic/Portable/Symbols/Source/SourceNamedTypeSymbol.vb +++ b/src/Compilers/VisualBasic/Portable/Symbols/Source/SourceNamedTypeSymbol.vb @@ -1817,8 +1817,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols Case AttributeDescription.CaseInsensitiveExtensionAttribute.Name, AttributeDescription.ObsoleteAttribute.Name, AttributeDescription.DeprecatedAttribute.Name, + AttributeDescription.WindowsExperimentalAttribute.Name, AttributeDescription.ExperimentalAttribute.Name, - AttributeDescription.NewExperimentalAttribute.Name, AttributeDescription.MyGroupCollectionAttribute.Name, AttributeDescription.TypeIdentifierAttribute.Name diff --git a/src/Compilers/VisualBasic/Portable/Symbols/Symbol.vb b/src/Compilers/VisualBasic/Portable/Symbols/Symbol.vb index 599465537a6e3..9771862391d5d 100644 --- a/src/Compilers/VisualBasic/Portable/Symbols/Symbol.vb +++ b/src/Compilers/VisualBasic/Portable/Symbols/Symbol.vb @@ -446,7 +446,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Friend ReadOnly Property ObsoleteState As ThreeState Get Select Case ObsoleteKind - Case ObsoleteAttributeKind.None, ObsoleteAttributeKind.Experimental, ObsoleteAttributeKind.NewExperimental + Case ObsoleteAttributeKind.None, ObsoleteAttributeKind.WindowsExperimental, ObsoleteAttributeKind.Experimental Return ThreeState.False Case ObsoleteAttributeKind.Uninitialized Return ThreeState.Unknown diff --git a/src/Compilers/VisualBasic/Portable/Symbols/Symbol_Attributes.vb b/src/Compilers/VisualBasic/Portable/Symbols/Symbol_Attributes.vb index 82124d451b9bb..924870153f8cd 100644 --- a/src/Compilers/VisualBasic/Portable/Symbols/Symbol_Attributes.vb +++ b/src/Compilers/VisualBasic/Portable/Symbols/Symbol_Attributes.vb @@ -156,10 +156,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic kind = ObsoleteAttributeKind.Obsolete ElseIf VisualBasicAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.DeprecatedAttribute) Then kind = ObsoleteAttributeKind.Deprecated + ElseIf VisualBasicAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.WindowsExperimentalAttribute) Then + kind = ObsoleteAttributeKind.WindowsExperimental ElseIf VisualBasicAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.ExperimentalAttribute) Then kind = ObsoleteAttributeKind.Experimental - ElseIf VisualBasicAttributeData.IsTargetEarlyAttribute(type, syntax, AttributeDescription.NewExperimentalAttribute) Then - kind = ObsoleteAttributeKind.NewExperimental Else boundAttribute = Nothing obsoleteData = Nothing diff --git a/src/Compilers/VisualBasic/Test/Emit/Attributes/AttributeTests_Experimental.vb b/src/Compilers/VisualBasic/Test/Emit/Attributes/AttributeTests_Experimental.vb index a778be9564a78..af0f0b616f251 100644 --- a/src/Compilers/VisualBasic/Test/Emit/Attributes/AttributeTests_Experimental.vb +++ b/src/Compilers/VisualBasic/Test/Emit/Attributes/AttributeTests_Experimental.vb @@ -9,7 +9,7 @@ Imports Xunit Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests.Semantics - Public Class AttributeTests_Experimental + Public Class AttributeTests_WindowsExperimental Inherits BasicTestBase Private Shared ReadOnly DeprecatedAndExperimentalAttributeSource As XElement =