Skip to content

Commit c1d2ee3

Browse files
Create [AttachedBindableProperty<T>] (#3024)
* Rename BindablePropertyAttributeSourceGeneratorTests * Add BindablePropertyDiagnostic, Update XML Comments * Remove unused usings * Replace setter with `init` * Update formatting * Finish Class Attribute Tests * Finish ConstructorAttribute Tests * Fix typos * Create AttachedBindablePropertySourceGenerator * Get AttachedBindableProperty Tests Working * Fix Failing Unit Tests * Fix Find + Replace error * Fix Failing Unit Tests * Fix Failing Unit Tests * Add support for nullable reference types * Add support for Nullable Types * Update GenerateAttachedBindableProperty_SimpleExample_GeneratesCorrectCode * Finish Unit Tests * Add CommunityToolkit.Maui.Accessibility * Refactor Base Tests * Add `[MethodImpl(MethodImplOptions.AggressiveInlining)]` * Update StateContainer.shared.cs * Add BindablePropertyAccessibility * Add Support for XML Documentation * Add Custom XML Documentation Test * Update StateContainer.shared.cs * Fix XML Documenation * Fix Paramref * Add Benchmarks * Add Benchmarks * Update StateContainer Unit Tests * Rename enum * Fix Ctrl+F Errors * Fix Unit Tests * Move XML Unit Test to IntegrationTests * Add Missing Properties to `GenerateAttachedBindableProperty_WithAllParameters_GeneratesCorrectCode` * Fix Copy/Paste error * Fix Failing Unit Tests * Convert `isNullable` constructor parameter to `IsNullable` Property * Use `string?` for and `null` for method name * Add XML Comments * Use `global::` for default bindable property * Update AttachedBindablePropertyAttributeSourceGenerator.cs * Fix XML Comments * Add Defaults + Unit Tests * Disable `EmitCompilerGeneratedFiles` * Delete CommunityToolkit.Maui.SourceGenerators.Internal.UnitTests.sln * Remove AI Slop * Use `AttachedBindableProperty` for test names * Create `EquatableArray` * Remove unnecessary namespace * Add Effective Xml Documentation properties * Update Records.cs * Revert "Remove unnecessary namespace" This reverts commit 5ea2c10. * Fix Merge Conflicts * Fix Merge Conflicts * Add Support for `BindableProperty.CreateAttached()` * Add XML Comments for AccessModifier * Resolve CI / CD Failures
1 parent fd1d63f commit c1d2ee3

File tree

36 files changed

+6477
-388
lines changed

36 files changed

+6477
-388
lines changed

Directory.Build.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<PropertyGroup>
44
<Nullable>enable</Nullable>
55
<!-- Remove MCTEXP001 once the BindablePropertySourceGenerator is Released and no longer in Experimental -->
6-
<NoWarn>NETSDK1023,MCTEXP001</NoWarn>
6+
<NoWarn>NETSDK1023,MCTEXP001</NoWarn>
77
<NetVersion>net10.0</NetVersion>
88
<LangVersion>preview</LangVersion>
99
<ImplicitUsings>enable</ImplicitUsings>
@@ -22,7 +22,7 @@ https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitati
2222
<NuGetAuditMode>all</NuGetAuditMode>
2323

2424
<!-- MAUI Specific -->
25-
<MauiPackageVersion>10.0.20</MauiPackageVersion>
25+
<MauiPackageVersion>10.0.30</MauiPackageVersion>
2626
<MauiStrictXamlCompilation>true</MauiStrictXamlCompilation>
2727
<SkipValidateMauiImplicitPackageReferences>true</SkipValidateMauiImplicitPackageReferences>
2828
<MauiEnableXamlCBindingWithSourceCompilation>true</MauiEnableXamlCBindingWithSourceCompilation>

src/CommunityToolkit.Maui.Core/Primitives/Defaults/DockLayoutDefaults.shared.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
static class DockLayoutDefaults
44
{
5+
public const DockPosition DockPosition = Core.DockPosition.None;
56
public const bool ShouldExpandLastChild = true;
67
public const double HorizontalSpacing = 0.0d;
78
public const double VerticalSpacing = 0.0d;
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace CommunityToolkit.Maui.Core;
2+
3+
static class StateViewDefaults
4+
{
5+
public const string StateKey = "";
6+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using BenchmarkDotNet.Attributes;
2+
using CommunityToolkit.Maui.SourceGenerators.Internal.UnitTests.AttachedBindablePropertyAttributeSourceGeneratorTests;
3+
4+
namespace CommunityToolkit.Maui.SourceGenerators.Benchmarks;
5+
6+
[MemoryDiagnoser]
7+
public class AttachedBindablePropertyAttributeSourceGeneratorBenchmarks
8+
{
9+
static readonly AttachedBindablePropertyAttributeSourceGenerator_ClassAttribute_CommonUsageTests commonUsageTests = new();
10+
static readonly AttachedBindablePropertyAttributeSourceGenerator_ClassAttribute_EdgeCaseTests edgeCaseTests = new();
11+
static readonly AttachedBindablePropertyAttributeSourceGenerator_ClassAttribute_IntegrationTests integrationTests = new();
12+
13+
[Benchmark]
14+
public Task GenerateAttachedBindableProperty_SimpleExample_GeneratesCorrectCode()
15+
=> commonUsageTests.GenerateAttachedBindableProperty_SimpleExample_GeneratesCorrectCode();
16+
17+
[Benchmark]
18+
public Task GenerateAttachedBindableProperty_MultipleProperties_GeneratesCorrectCode()
19+
=> commonUsageTests.GenerateAttachedBindableProperty_MultipleProperties_GeneratesCorrectCode();
20+
21+
[Benchmark]
22+
public Task GenerateAttachedBindableProperty_WithAllParameters_GeneratesCorrectCode()
23+
=> commonUsageTests.GenerateAttachedBindableProperty_WithAllParameters_GeneratesCorrectCode();
24+
25+
[Benchmark]
26+
public Task GenerateAttachedBindableProperty_InternalClass_GeneratesCorrectCode()
27+
=> commonUsageTests.GenerateAttachedBindableProperty_InternalClass_GeneratesCorrectCode();
28+
29+
[Benchmark]
30+
public Task GenerateAttachedBindableProperty_ComplexInheritanceScenario_GeneratesCorrectCode()
31+
=> integrationTests.GenerateAttachedBindableProperty_ComplexInheritanceScenario_GeneratesCorrectCode();
32+
33+
[Benchmark]
34+
public Task GenerateAttachedBindableProperty_NestedClass_GeneratesCorrectCode()
35+
=> integrationTests.GenerateAttachedBindableProperty_AttributeOnNestedInnerClass_GeneratesCorrectCode();
36+
37+
[Benchmark]
38+
public Task GenerateAttachedBindableProperty_WithComplexDefaultValues_GeneratesCorrectCode()
39+
=> edgeCaseTests.GenerateAttachedBindableProperty_WithComplexDefaultValues_GeneratesCorrectCode();
40+
}

src/CommunityToolkit.Maui.SourceGenerators.Benchmarks/BindablePropertyAttributeSourceGeneratorBenchmarks.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ namespace CommunityToolkit.Maui.SourceGenerators.Benchmarks;
66
[MemoryDiagnoser]
77
public class BindablePropertyAttributeSourceGeneratorBenchmarks
88
{
9-
static readonly CommonUsageTests commonUsageTests = new();
10-
static readonly EdgeCaseTests edgeCaseTests = new();
11-
static readonly IntegrationTests integrationTests = new();
9+
static readonly BindablePropertyAttributeSourceGenerator_CommonUsageTests commonUsageTests = new();
10+
static readonly BindablePropertyAttributeSourceGenerator_EdgeCaseTests edgeCaseTests = new();
11+
static readonly BindablePropertyAttributeSourceGenerator_IntegrationTests integrationTests = new();
1212

1313
[Benchmark]
1414
public Task GenerateBindableProperty_SimpleExample_GeneratesCorrectCode()

src/CommunityToolkit.Maui.SourceGenerators.Benchmarks/Program.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ public static void Main(string[] args)
99
{
1010
var config = DefaultConfig.Instance;
1111
BenchmarkRunner.Run<BindablePropertyAttributeSourceGeneratorBenchmarks>(config, args);
12+
BenchmarkRunner.Run<AttachedBindablePropertyAttributeSourceGeneratorBenchmarks>(config, args);
1213
}
1314
}

0 commit comments

Comments
 (0)