@@ -214,6 +214,11 @@ private async Task VerifyNet50CSharpAdditionalFileFixAsync(string source, string
214214 await VerifyAdditionalFileFixAsync ( LanguageNames . CSharp , source , shippedApiText , oldUnshippedApiText , newUnshippedApiText , ReferenceAssemblies . Net . Net50 ) ;
215215 }
216216
217+ private async Task VerifyNet80CSharpAdditionalFileFixAsync ( string source , string ? shippedApiText , string ? oldUnshippedApiText , string newUnshippedApiText )
218+ {
219+ await VerifyAdditionalFileFixAsync ( LanguageNames . CSharp , source , shippedApiText , oldUnshippedApiText , newUnshippedApiText , AdditionalMetadataReferences . Net80 ) ;
220+ }
221+
217222 private async Task VerifyAdditionalFileFixAsync ( string language , string source , string ? shippedApiText , string ? oldUnshippedApiText , string newUnshippedApiText ,
218223 ReferenceAssemblies ? referenceAssemblies = null )
219224 {
@@ -3219,6 +3224,77 @@ virtual R.PrintMembers(System.Text.StringBuilder! builder) -> bool
32193224 await VerifyNet50CSharpAdditionalFileFixAsync ( source , shippedText , unshippedText , fixedUnshippedText ) ;
32203225 }
32213226
3227+ [ Fact ]
3228+ [ WorkItem ( 6759 , "https://github.com/dotnet/roslyn-analyzers/issues/6759" ) ]
3229+ public async Task TestExperimentalApiAsync ( )
3230+ {
3231+ var source = $$ """
3232+ using System.Diagnostics.CodeAnalysis;
3233+
3234+ [Experimental("ID1")]
3235+ {{ EnabledModifierCSharp }} class {|{{ AddNewApiId }} :{|{{ AddNewApiId }} :C|}|}
3236+ {
3237+ }
3238+ """ ;
3239+
3240+ var shippedText = @"" ;
3241+ var unshippedText = @"" ;
3242+ var fixedUnshippedText = @"[ID1]C
3243+ [ID1]C.C() -> void" ;
3244+
3245+ await VerifyNet80CSharpAdditionalFileFixAsync ( source , shippedText , unshippedText , fixedUnshippedText ) ;
3246+ }
3247+
3248+ [ Theory ]
3249+ [ InlineData ( "" ) ]
3250+ [ InlineData ( "null" ) ]
3251+ [ InlineData ( "1" ) ]
3252+ [ InlineData ( "1, 2" ) ]
3253+ [ WorkItem ( 6759 , "https://github.com/dotnet/roslyn-analyzers/issues/6759" ) ]
3254+ public async Task TestExperimentalApiWithInvalidArgumentAsync ( string invalidArgument )
3255+ {
3256+ var source = $$ """
3257+ using System.Diagnostics.CodeAnalysis;
3258+
3259+ [Experimental({{ invalidArgument }} )]
3260+ {{ EnabledModifierCSharp }} class {|{{ AddNewApiId }} :{|{{ AddNewApiId }} :C|}|}
3261+ {
3262+ }
3263+ """ ;
3264+
3265+ var shippedText = @"" ;
3266+ var unshippedText = @"" ;
3267+ var fixedUnshippedText = @"[???]C
3268+ [???]C.C() -> void" ;
3269+
3270+ var test = new CSharpCodeFixTest < DeclarePublicApiAnalyzer , DeclarePublicApiFix , XUnitVerifier > ( )
3271+ {
3272+ ReferenceAssemblies = AdditionalMetadataReferences . Net80 ,
3273+ CompilerDiagnostics = CompilerDiagnostics . None ,
3274+ TestState =
3275+ {
3276+ Sources = { source } ,
3277+ AdditionalFiles =
3278+ {
3279+ ( ShippedFileName , shippedText ) ,
3280+ ( UnshippedFileName , unshippedText ) ,
3281+ } ,
3282+ } ,
3283+ FixedState =
3284+ {
3285+ AdditionalFiles =
3286+ {
3287+ ( ShippedFileName , shippedText ) ,
3288+ ( UnshippedFileName , fixedUnshippedText ) ,
3289+ } ,
3290+ } ,
3291+ } ;
3292+
3293+ test . DisabledDiagnostics . AddRange ( DisabledDiagnostics ) ;
3294+
3295+ await test . RunAsync ( ) ;
3296+ }
3297+
32223298 #endregion
32233299 }
32243300}
0 commit comments