Skip to content

MVVMTK0042's code fix provider replaces required fields with non-required properties #971

@nalka0

Description

@nalka0

Describe the bug

On main, the below code triggers MVVMTK0042. Then if you use the "Use a partial property" suggestion, the replacing partial property isn't required while the field was.

partial class Test : ObservableObject
{
    [ObservableProperty] // MVVMTK0042 here
    internal required string foo; // Applying MVVMTK0042's suggestion makes it public partial string Foo { get; set; }, removing required
}

Steps to reproduce

  1. Run dotnet pack src/CommunityToolkit.Mvvm/CommunityToolkit.Mvvm.csproj (on the current main)
  2. Create a WPF App (.NET 8)
  3. Install the package generated by step 1
  4. Add <LangVersion>preview</LangVersion> to the .csproj
  5. Create a class as follows:
using CommunityToolkit.Mvvm.ComponentModel;

namespace WpfApp1;

partial class Test : ObservableObject
{
    [ObservableProperty]
    internal required string foo;
}
  1. Apply the suggestion to fix MVVMTK0042 that happens on the above [ObservableProperty]

Expected behavior

After applying the suggestion, internal required string foo; becomes public required partial string Foo { get; set; } instead of public partial string Foo { get; set; }

IDE and version

VS 2022 Preview

IDE version

17.12.0 Preview 4.0

Nuget packages

  • CommunityToolkit.Common
  • CommunityToolkit.Diagnostics
  • CommunityToolkit.HighPerformance
  • CommunityToolkit.Mvvm (aka MVVM Toolkit)

Nuget package version(s)

8.4.0-build.15

Help us help you

Yes, but only if others can assist

Metadata

Metadata

Assignees

No one assigned

    Labels

    analyzer 👓A new analyzer being implemented or updatedmvvm-toolkit 🧰Issues/PRs for the MVVM Toolkit

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions