Repository navigation
Observable property attribute with negative enum values gives cast error #731
Description
Activity
- addedbug 🐛An unexpected issue that highlights incorrect behaviorAn unexpected issue that highlights incorrect behavior
on Jul 7, 2023 - addedmvvm-toolkit 🧰Issues/PRs for the MVVM ToolkitIssues/PRs for the MVVM Toolkitanalyzer 👓A new analyzer being implemented or updatedA new analyzer being implemented or updated
on Jul 11, 2023 Oh, good catch! Mmh this is weird that the unit tests didn't spot the error 🤔
I have these test attributes that clearly are using the wrong syntax (missing parentheses):
dotnet/tests/CommunityToolkit.Mvvm.SourceGenerators.UnitTests/Test_SourceGeneratorsCodegen.cs
Lines 1352 to 1355 in e071ed2
[global::MyApp.DefaultValueAttribute((global::MyApp.NegativeEnum1)-1073741824)] [global::MyApp.DefaultValueAttribute((global::MyApp.NegativeEnum2)-9223372036854775808)] [global::MyApp.DefaultValueAttribute((global::MyApp.NegativeEnum3)-1234)] [global::MyApp.DefaultValueAttribute((global::MyApp.NegativeEnum4)-1)] But then the test runner below isn't producing any diagnostics for it (it's missing those CS0075 errors):
dotnet/tests/CommunityToolkit.Mvvm.SourceGenerators.UnitTests/Test_SourceGeneratorsCodegen.cs
Lines 2412 to 2416 in e071ed2
// Run all source generators on the input source code _ = driver.RunGeneratorsAndUpdateCompilation(compilation, out Compilation outputCompilation, out ImmutableArray<Diagnostic> diagnostics); // Ensure that no diagnostics were generated CollectionAssert.AreEquivalent(Array.Empty<Diagnostic>(), diagnostics); @Youssef1313 any ideas why the generator driver might not be reporting all compiler errors here by any chance? 😅
@Sergio0694 I think you should be getting the diagnostics from
outputCompilationI think the diagnostics you're checking against might be the generator exceptions plus the diagnostics produced by the generator itself. So it's not the whole diagnostics of the compilation.
Describe the bug
After updating my project that as an observable property with a negative enum attribute to version 8.2.1, I still have an error when I try to use the enum. As a workaround I've been using a literal value to suppress the error.
Before, in version 8.2.0, the source generators stopped working. In version 8.2.1 it gives the errors:
This bug can be easily reproduced with the code below.
Regression
No response
Steps to reproduce
This bug occurred when I tested in .NET 7 in a WPF project with both Visual Studio 17.6.4 and 17.7.0 Preview 2.0 and the latest CommunityToolkit.Mvvm 8.2.1. It probably would happen with other versions.
Using the following code the bug can be reproduced:
Changing the default value for _test3 to NegativeEnum.OK will allow the code to compile without errors, changing back to NegativeEnum.Problem and the errors described above occur.
Also note that if using the NegativeEnum.Problem, removing the 'property:' before the DefaultValueAttribute doesn't seem to have the problem. It only occurs for attributes passed to the property generated.
Expected behavior
An enum with a negative value in a property attribute shouldn't give a cast error.
Screenshots
No response
IDE and version
VS 2022, VS 2022 Preview
IDE version
17.6.4, 17.7.0 Preview 2.0
Nuget packages
Nuget package version(s)
8.2.1
Additional context
This is a continuation of the problem reported in issue #681.
Help us help you
No, just wanted to report this