Skip to content

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

Open
@Felix-CodingClimber

Description

@Felix-CodingClimber

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
  • 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

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