dotnet icon indicating copy to clipboard operation
dotnet copied to clipboard

ObservableProperty source generator messes up named arguments for attributes assigned with property:attribute

Open Felix-CodingClimber opened this issue 1 year ago • 0 comments

Describe the bug

When adding a custom attribute using [property:MyAttribute] the ObservableProperty source generator does not generate named arguments passed to the attributes constructor.

Regression

No response

Steps to reproduce

  1. Custom attribute with optional constructor arguments
public sealed class PropertyListIncludeAttribute : Attribute
{
    public string? Category { get; private init; }
    public string? Label { get; private init; }

    public PropertyListIncludeAttribute(string? label = null, string? category = null)
    {
        Label = label;
        Category = category;
    }
}
  1. Usage with ObservableProperty
[ObservableProperty]
[property: PropertyListInclude(category: "Another Category")]
private int testInt;
  1. See problem in source generated result
/// <inheritdoc cref="testInt"/>
[global::System.CodeDom.Compiler.GeneratedCode("CommunityToolkit.Mvvm.SourceGenerators.ObservablePropertyGenerator", "8.3.0.0")]
[global::System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
[global::DotNetElements.DevTools.SDK.Core.PropertyListIncludeAttribute("Another Category")]
public int TestInt
{
    get => testInt;
    set
    {
        if (!global::System.Collections.Generic.EqualityComparer<int>.Default.Equals(testInt, value))
        {
            OnTestIntChanging(value);
            OnTestIntChanging(default, value);
            OnPropertyChanging(global::CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangingArgs.TestInt);
            testInt = value;
            OnTestIntChanged(value);
            OnTestIntChanged(default, value);
            OnPropertyChanged(global::CommunityToolkit.Mvvm.ComponentModel.__Internals.__KnownINotifyPropertyChangedArgs.TestInt);
        }
    }
}

Expected behavior

Named arguments need to be properly passed to the source generator

[global::DotNetElements.DevTools.SDK.Core.PropertyListIncludeAttribute(category:"Another Category")]

Screenshots

No response

IDE and version

VS 2022

IDE version

No response

Nuget packages

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

Nuget package version(s)

8.3.2

Additional context

No response

Help us help you

No, just wanted to report this

Felix-CodingClimber avatar Jan 05 '25 14:01 Felix-CodingClimber