5
5
using System . Threading . Tasks ;
6
6
using CommunityToolkit . Mvvm . SourceGenerators . UnitTests . Helpers ;
7
7
using Microsoft . CodeAnalysis . CSharp ;
8
+ using Microsoft . CodeAnalysis . Testing ;
8
9
using Microsoft . VisualStudio . TestTools . UnitTesting ;
9
10
10
11
namespace CommunityToolkit . Mvvm . SourceGenerators . UnitTests ;
11
12
12
13
partial class Test_SourceGeneratorsDiagnostics
13
14
{
14
15
[ TestMethod ]
15
- public async Task RequireCSharpLanguageVersionPreviewAnalyzer_LanguageVersionIsNotPreview_Warns ( )
16
+ public async Task RequireCSharpLanguageVersionPreviewAnalyzer_LanguageVersionIsNotPreview_DoesnNotWarn ( )
16
17
{
17
18
const string source = """
18
19
using CommunityToolkit.Mvvm.ComponentModel;
@@ -21,7 +22,7 @@ namespace MyApp
21
22
{
22
23
public partial class SampleViewModel : ObservableObject
23
24
{
24
- [{|MVVMTK0041: ObservableProperty|} ]
25
+ [ObservableProperty]
25
26
public string Name { get; set; }
26
27
}
27
28
}
@@ -30,6 +31,32 @@ public partial class SampleViewModel : ObservableObject
30
31
await VerifyAnalyzerDiagnosticsAndSuccessfulGeneration < RequiresCSharpLanguageVersionPreviewAnalyzer > ( source , LanguageVersion . CSharp12 ) ;
31
32
}
32
33
34
+ [ TestMethod ]
35
+ public async Task RequireCSharpLanguageVersionPreviewAnalyzer_LanguageVersionIsNotPreview_Partial_Warns ( )
36
+ {
37
+ const string source = """
38
+ using CommunityToolkit.Mvvm.ComponentModel;
39
+
40
+ namespace MyApp
41
+ {
42
+ public partial class SampleViewModel : ObservableObject
43
+ {
44
+ [{|MVVMTK0041:ObservableProperty|}]
45
+ public partial string Name { get; set; }
46
+ }
47
+ }
48
+ """ ;
49
+
50
+ await CSharpAnalyzerWithLanguageVersionTest < RequiresCSharpLanguageVersionPreviewAnalyzer > . VerifyAnalyzerAsync (
51
+ source ,
52
+ LanguageVersion . CSharp12 ,
53
+
54
+ // /0/Test0.cs(8,31): error CS8703: The modifier 'partial' is not valid for this item in C# 12.0. Please use language version 'preview' or greater.
55
+ DiagnosticResult . CompilerError ( "CS8703" ) . WithSpan ( 8 , 31 , 8 , 35 ) . WithArguments ( "partial" , "12.0" , "preview" ) ,
56
+ // /0/Test0.cs(8,31): error CS9248: Partial property 'SampleViewModel.Name' must have an implementation part.
57
+ DiagnosticResult . CompilerError ( "CS9248" ) . WithSpan ( 8 , 31 , 8 , 35 ) . WithArguments ( "MyApp.SampleViewModel.Name" ) ) ;
58
+ }
59
+
33
60
[ TestMethod ]
34
61
public async Task RequireCSharpLanguageVersionPreviewAnalyzer_LanguageVersionIsPreview_DoesNotWarn ( )
35
62
{
@@ -49,6 +76,30 @@ public partial class SampleViewModel : ObservableObject
49
76
await VerifyAnalyzerDiagnosticsAndSuccessfulGeneration < RequiresCSharpLanguageVersionPreviewAnalyzer > ( source , languageVersion : LanguageVersion . Preview ) ;
50
77
}
51
78
79
+ [ TestMethod ]
80
+ public async Task RequireCSharpLanguageVersionPreviewAnalyzer_LanguageVersionIsPreview_Partial_DoesNotWarn ( )
81
+ {
82
+ const string source = """
83
+ using CommunityToolkit.Mvvm.ComponentModel;
84
+
85
+ namespace MyApp
86
+ {
87
+ public partial class SampleViewModel : ObservableObject
88
+ {
89
+ [ObservableProperty]
90
+ public partial string Name { get; set; }
91
+ }
92
+ }
93
+ """ ;
94
+
95
+ await CSharpAnalyzerWithLanguageVersionTest < RequiresCSharpLanguageVersionPreviewAnalyzer > . VerifyAnalyzerAsync (
96
+ source ,
97
+ LanguageVersion . Preview ,
98
+
99
+ // /0/Test0.cs(8,31): error CS9248: Partial property 'SampleViewModel.Name' must have an implementation part.
100
+ DiagnosticResult . CompilerError ( "CS9248" ) . WithSpan ( 8 , 31 , 8 , 35 ) . WithArguments ( "MyApp.SampleViewModel.Name" ) ) ;
101
+ }
102
+
52
103
[ TestMethod ]
53
104
public async Task UseObservablePropertyOnPartialPropertyAnalyzer_LanguageVersionIsNotPreview_DoesNotWarn ( )
54
105
{
0 commit comments