Skip to content

Commit 4a42758

Browse files
committed
Improve formatting for property initialization
1 parent e988aab commit 4a42758

File tree

2 files changed

+75
-20
lines changed

2 files changed

+75
-20
lines changed

components/DependencyPropertyGenerator/CommunityToolkit.DependencyPropertyGenerator.SourceGenerators/DependencyPropertyGenerator.Execute.cs

Lines changed: 54 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -439,35 +439,74 @@ static string GetExpressionWithTrailingSpace(Accessibility accessibility)
439439
{ DefaultValue: DependencyPropertyDefaultValue.Null, IsPropertyChangedCallbackImplemented: false, IsSharedPropertyChangedCallbackImplemented: false }
440440
=> "null",
441441
{ DefaultValue: DependencyPropertyDefaultValue.Callback(string methodName), IsPropertyChangedCallbackImplemented: false, IsSharedPropertyChangedCallbackImplemented: false }
442-
=> $"global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}.Create(new {WellKnownTypeNames.CreateDefaultValueCallback(propertyInfo.UseWindowsUIXaml)}({methodName}))",
442+
=> $"""
443+
global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}.Create(
444+
createDefaultValueCallback: new {WellKnownTypeNames.CreateDefaultValueCallback(propertyInfo.UseWindowsUIXaml)}({methodName}))
445+
""",
443446
{ DefaultValue: { } defaultValue, IsPropertyChangedCallbackImplemented: false, IsSharedPropertyChangedCallbackImplemented: false }
444447
=> $"new global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}({defaultValue})",
445448

446449
// Codegen for legacy UWP
447450
{ IsNet8OrGreater: false } => propertyInfo switch
448451
{
449452
{ DefaultValue: DependencyPropertyDefaultValue.Callback(string methodName), IsPropertyChangedCallbackImplemented: true, IsSharedPropertyChangedCallbackImplemented: false }
450-
=> $"global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}.Create(new {WellKnownTypeNames.CreateDefaultValueCallback(propertyInfo.UseWindowsUIXaml)}({methodName}), static (d, e) => (({typeQualifiedName})d).On{propertyInfo.PropertyName}PropertyChanged(e))",
453+
=> $"""
454+
global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}.Create(
455+
createDefaultValueCallback: new {WellKnownTypeNames.CreateDefaultValueCallback(propertyInfo.UseWindowsUIXaml)}({methodName}),
456+
propertyChangedCallback: static (d, e) => (({typeQualifiedName})d).On{propertyInfo.PropertyName}PropertyChanged(e))
457+
""",
451458
{ DefaultValue: DependencyPropertyDefaultValue.Callback(string methodName), IsPropertyChangedCallbackImplemented: false, IsSharedPropertyChangedCallbackImplemented: true }
452-
=> $"global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}.Create(new {WellKnownTypeNames.CreateDefaultValueCallback(propertyInfo.UseWindowsUIXaml)}({methodName}), static (d, e) => (({typeQualifiedName})d).OnPropertyChanged(e))",
459+
=> $"""
460+
global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}.Create(
461+
createDefaultValueCallback: new {WellKnownTypeNames.CreateDefaultValueCallback(propertyInfo.UseWindowsUIXaml)}({methodName}),
462+
propertyChangedCallback: static (d, e) => (({typeQualifiedName})d).OnPropertyChanged(e))
463+
""",
453464
{ DefaultValue: DependencyPropertyDefaultValue.Callback(string methodName), IsPropertyChangedCallbackImplemented: true, IsSharedPropertyChangedCallbackImplemented: true }
454-
=> $"global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}.Create(new {WellKnownTypeNames.CreateDefaultValueCallback(propertyInfo.UseWindowsUIXaml)}({methodName}), static (d, e) => {{ (({typeQualifiedName})d).On{propertyInfo.PropertyName}PropertyChanged(e); (({typeQualifiedName})d).OnPropertyChanged(e); }})",
465+
=> $$"""
466+
global::{{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}}.Create(
467+
createDefaultValueCallback: new {{WellKnownTypeNames.CreateDefaultValueCallback(propertyInfo.UseWindowsUIXaml)}}({{methodName}}),
468+
propertyChangedCallback: static (d, e) => { (({{typeQualifiedName}})d).On{{propertyInfo.PropertyName}}PropertyChanged(e); (({{typeQualifiedName}})d).OnPropertyChanged(e); })
469+
""",
455470
{ DefaultValue: { } defaultValue, IsPropertyChangedCallbackImplemented: true, IsSharedPropertyChangedCallbackImplemented: false }
456-
=> $"new global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}({defaultValue}, static (d, e) => (({typeQualifiedName})d).On{propertyInfo.PropertyName}PropertyChanged(e))",
471+
=> $"""
472+
new global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}(
473+
defaultValue: {defaultValue},
474+
propertyChangedCallback: static (d, e) => (({typeQualifiedName})d).On{propertyInfo.PropertyName}PropertyChanged(e))
475+
""",
457476
{ DefaultValue: { } defaultValue, IsPropertyChangedCallbackImplemented: false, IsSharedPropertyChangedCallbackImplemented: true }
458-
=> $"new global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}({defaultValue}, static (d, e) => (({typeQualifiedName})d).OnPropertyChanged(e))",
477+
=> $"""
478+
new global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}(
479+
defaultValue: {defaultValue},
480+
propertyChangedCallback: static (d, e) => (({typeQualifiedName})d).OnPropertyChanged(e))
481+
""",
459482
{ DefaultValue: { } defaultValue, IsPropertyChangedCallbackImplemented: true, IsSharedPropertyChangedCallbackImplemented: true }
460-
=> $"new global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}({defaultValue}, static (d, e) => {{ (({typeQualifiedName})d).On{propertyInfo.PropertyName}PropertyChanged(e); (({typeQualifiedName})d).OnPropertyChanged(e); }})",
483+
=> $$"""
484+
new global::{{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}}(
485+
defaultValue: {{defaultValue}},
486+
propertyChangedCallback: static (d, e) => { (({{typeQualifiedName}})d).On{{propertyInfo.PropertyName}}PropertyChanged(e); (({{typeQualifiedName}})d).OnPropertyChanged(e); })
487+
""",
461488
_ => throw new ArgumentException($"Invalid default value '{propertyInfo.DefaultValue}'."),
462489
},
463490

464491
// Codegen for .NET 8 or greater
465492
{ DefaultValue: DependencyPropertyDefaultValue.Null }
466-
=> $"new global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}(null, global::{GeneratorName}.PropertyChangedCallbacks.{propertyInfo.PropertyName}())",
493+
=> $"""
494+
new global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}(
495+
defaultValue: null,
496+
propertyChangedCallback: global::{GeneratorName}.PropertyChangedCallbacks.{propertyInfo.PropertyName}())
497+
""",
467498
{ DefaultValue: DependencyPropertyDefaultValue.Callback(string methodName) }
468-
=> $"global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}.Create(new {WellKnownTypeNames.CreateDefaultValueCallback(propertyInfo.UseWindowsUIXaml)}({methodName}), global::{GeneratorName}.PropertyChangedCallbacks.{propertyInfo.PropertyName}())",
499+
=> $"""
500+
global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}.Create(
501+
createDefaultValueCallback: new {WellKnownTypeNames.CreateDefaultValueCallback(propertyInfo.UseWindowsUIXaml)}({methodName}),
502+
propertyChangedCallback: global::{GeneratorName}.PropertyChangedCallbacks.{propertyInfo.PropertyName}())
503+
""",
469504
{ DefaultValue: { } defaultValue } and ({ IsPropertyChangedCallbackImplemented: true } or { IsSharedPropertyChangedCallbackImplemented: true })
470-
=> $"new global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}({defaultValue}, global::{GeneratorName}.PropertyChangedCallbacks.{propertyInfo.PropertyName}())",
505+
=> $"""
506+
new global::{WellKnownTypeNames.PropertyMetadata(propertyInfo.UseWindowsUIXaml)}(
507+
defaultValue: {defaultValue},
508+
propertyChangedCallback: global::{GeneratorName}.PropertyChangedCallbacks.{propertyInfo.PropertyName}())
509+
""",
471510
_ => throw new ArgumentException($"Invalid default value '{propertyInfo.DefaultValue}'."),
472511
};
473512

@@ -477,13 +516,16 @@ static string GetExpressionWithTrailingSpace(Accessibility accessibility)
477516
/// </summary>
478517
""", isMultiline: true);
479518
writer.WriteGeneratedAttributes(GeneratorName, includeNonUserCodeAttributes: false);
480-
writer.WriteLine($$"""
519+
writer.Write($$"""
481520
public static readonly global::{{WellKnownTypeNames.DependencyProperty(propertyInfo.UseWindowsUIXaml)}} {{propertyInfo.PropertyName}}Property = global::{{WellKnownTypeNames.DependencyProperty(propertyInfo.UseWindowsUIXaml)}}.Register(
482521
name: "{{propertyInfo.PropertyName}}",
483522
propertyType: typeof({{propertyInfo.TypeName}}),
484523
ownerType: typeof({{typeQualifiedName}}),
485-
typeMetadata: {{typeMetadata}});
524+
typeMetadata:
486525
""", isMultiline: true);
526+
writer.IncreaseIndent();
527+
writer.WriteLine($"{typeMetadata});", isMultiline: true);
528+
writer.DecreaseIndent();
487529
writer.WriteLine();
488530
}
489531

components/DependencyPropertyGenerator/CommunityToolkit.DependencyPropertyGenerator.Tests/Test_DependencyPropertyGenerator.cs

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,9 @@ partial class MyControl
175175
name: "Number",
176176
propertyType: typeof(int),
177177
ownerType: typeof(MyControl),
178-
typeMetadata: new global::Windows.UI.Xaml.PropertyMetadata(default(int), global::CommunityToolkit.WinUI.DependencyPropertyGenerator.PropertyChangedCallbacks.Number()));
178+
typeMetadata: new global::Windows.UI.Xaml.PropertyMetadata(
179+
defaultValue: default(int),
180+
propertyChangedCallback: global::CommunityToolkit.WinUI.DependencyPropertyGenerator.PropertyChangedCallbacks.Number()));
179181
180182
/// <inheritdoc/>
181183
[global::System.CodeDom.Compiler.GeneratedCode("CommunityToolkit.WinUI.DependencyPropertyGenerator", <ASSEMBLY_VERSION>)]
@@ -698,7 +700,9 @@ partial class MyControl
698700
name: "Number",
699701
propertyType: typeof(int),
700702
ownerType: typeof(MyControl),
701-
typeMetadata: new global::Windows.UI.Xaml.PropertyMetadata(default(int), global::CommunityToolkit.WinUI.DependencyPropertyGenerator.PropertyChangedCallbacks.Number()));
703+
typeMetadata: new global::Windows.UI.Xaml.PropertyMetadata(
704+
defaultValue: default(int),
705+
propertyChangedCallback: global::CommunityToolkit.WinUI.DependencyPropertyGenerator.PropertyChangedCallbacks.Number()));
702706
703707
/// <inheritdoc/>
704708
[global::System.CodeDom.Compiler.GeneratedCode("CommunityToolkit.WinUI.DependencyPropertyGenerator", <ASSEMBLY_VERSION>)]
@@ -969,7 +973,9 @@ partial class MyControl
969973
name: "Number",
970974
propertyType: typeof(int),
971975
ownerType: typeof(MyControl),
972-
typeMetadata: new global::Windows.UI.Xaml.PropertyMetadata(42, global::CommunityToolkit.WinUI.DependencyPropertyGenerator.PropertyChangedCallbacks.Number()));
976+
typeMetadata: new global::Windows.UI.Xaml.PropertyMetadata(
977+
defaultValue: 42,
978+
propertyChangedCallback: global::CommunityToolkit.WinUI.DependencyPropertyGenerator.PropertyChangedCallbacks.Number()));
973979
974980
/// <inheritdoc/>
975981
[global::System.CodeDom.Compiler.GeneratedCode("CommunityToolkit.WinUI.DependencyPropertyGenerator", <ASSEMBLY_VERSION>)]
@@ -1124,7 +1130,9 @@ partial class MyControl
11241130
name: "Number",
11251131
propertyType: typeof(int),
11261132
ownerType: typeof(MyControl),
1127-
typeMetadata: new global::Windows.UI.Xaml.PropertyMetadata(default(int), global::CommunityToolkit.WinUI.DependencyPropertyGenerator.PropertyChangedCallbacks.Number()));
1133+
typeMetadata: new global::Windows.UI.Xaml.PropertyMetadata(
1134+
defaultValue: default(int),
1135+
propertyChangedCallback: global::CommunityToolkit.WinUI.DependencyPropertyGenerator.PropertyChangedCallbacks.Number()));
11281136
11291137
/// <inheritdoc/>
11301138
[global::System.CodeDom.Compiler.GeneratedCode("CommunityToolkit.WinUI.DependencyPropertyGenerator", <ASSEMBLY_VERSION>)]
@@ -1283,7 +1291,9 @@ partial class MyControl
12831291
name: "Number",
12841292
propertyType: typeof(int),
12851293
ownerType: typeof(MyControl),
1286-
typeMetadata: new global::Windows.UI.Xaml.PropertyMetadata(default(int), global::CommunityToolkit.WinUI.DependencyPropertyGenerator.PropertyChangedCallbacks.Number()));
1294+
typeMetadata: new global::Windows.UI.Xaml.PropertyMetadata(
1295+
defaultValue: default(int),
1296+
propertyChangedCallback: global::CommunityToolkit.WinUI.DependencyPropertyGenerator.PropertyChangedCallbacks.Number()));
12871297
12881298
/// <inheritdoc/>
12891299
[global::System.CodeDom.Compiler.GeneratedCode("CommunityToolkit.WinUI.DependencyPropertyGenerator", <ASSEMBLY_VERSION>)]
@@ -2359,7 +2369,8 @@ partial class MyControl
23592369
name: "Number",
23602370
propertyType: typeof(int),
23612371
ownerType: typeof(MyControl),
2362-
typeMetadata: global::Windows.UI.Xaml.PropertyMetadata.Create(new Windows.UI.Xaml.CreateDefaultValueCallback(CreateNumber)));
2372+
typeMetadata: global::Windows.UI.Xaml.PropertyMetadata.Create(
2373+
createDefaultValueCallback: new Windows.UI.Xaml.CreateDefaultValueCallback(CreateNumber)));
23632374
23642375
/// <inheritdoc/>
23652376
[global::System.CodeDom.Compiler.GeneratedCode("CommunityToolkit.WinUI.DependencyPropertyGenerator", <ASSEMBLY_VERSION>)]
@@ -2481,7 +2492,8 @@ partial class MyControl
24812492
name: "Number",
24822493
propertyType: typeof(int?),
24832494
ownerType: typeof(MyControl),
2484-
typeMetadata: global::Windows.UI.Xaml.PropertyMetadata.Create(new Windows.UI.Xaml.CreateDefaultValueCallback(CreateNumber)));
2495+
typeMetadata: global::Windows.UI.Xaml.PropertyMetadata.Create(
2496+
createDefaultValueCallback: new Windows.UI.Xaml.CreateDefaultValueCallback(CreateNumber)));
24852497
24862498
/// <inheritdoc/>
24872499
[global::System.CodeDom.Compiler.GeneratedCode("CommunityToolkit.WinUI.DependencyPropertyGenerator", <ASSEMBLY_VERSION>)]
@@ -2605,7 +2617,8 @@ partial class MyControl
26052617
name: "Name",
26062618
propertyType: typeof(string),
26072619
ownerType: typeof(MyControl),
2608-
typeMetadata: global::Windows.UI.Xaml.PropertyMetadata.Create(new Windows.UI.Xaml.CreateDefaultValueCallback(CreateName)));
2620+
typeMetadata: global::Windows.UI.Xaml.PropertyMetadata.Create(
2621+
createDefaultValueCallback: new Windows.UI.Xaml.CreateDefaultValueCallback(CreateName)));
26092622
26102623
/// <inheritdoc/>
26112624
[global::System.CodeDom.Compiler.GeneratedCode("CommunityToolkit.WinUI.DependencyPropertyGenerator", <ASSEMBLY_VERSION>)]

0 commit comments

Comments
 (0)