Skip to content

Commit 72be65d

Browse files
committed
Fix formatting in code gen when file scoped namespace
1 parent fbe6afb commit 72be65d

2 files changed

Lines changed: 46 additions & 8 deletions

File tree

WpfAnalyzers.Test/Refactorings/AutoPropertyRefactoringTests.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,43 @@ public double? Value
8888
RoslynAssert.Refactoring(Refactoring, before, after);
8989
}
9090

91+
[Test]
92+
public static void AutoPropertyFileScopedNamespace()
93+
{
94+
var before = @"
95+
namespace N;
96+
97+
using System.Windows.Controls;
98+
99+
public class C : Control
100+
{
101+
public int ↓Number { get; set; }
102+
}";
103+
104+
var after = @"
105+
namespace N;
106+
107+
using System.Windows;
108+
using System.Windows.Controls;
109+
110+
public class C : Control
111+
{
112+
/// <summary>Identifies the <see cref=""Number""/> dependency property.</summary>
113+
public static readonly DependencyProperty NumberProperty = DependencyProperty.Register(
114+
nameof(Number),
115+
typeof(int),
116+
typeof(C),
117+
new PropertyMetadata(default(int)));
118+
119+
public int Number
120+
{
121+
get => (int)this.GetValue(NumberProperty);
122+
set => this.SetValue(NumberProperty, value);
123+
}
124+
}";
125+
RoslynAssert.Refactoring(Refactoring, before, after);
126+
}
127+
91128
[Test]
92129
public static void AutoPropertyNotQualifiedMethodAccess()
93130
{

WpfAnalyzers/Refactorings/AutoPropertyRefactoring.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ PropertyDeclarationSyntax Property(string field, string keyField, bool qualifyMe
391391
.WithAccessorList(
392392
SyntaxFactory.AccessorList(
393393
openBraceToken: SyntaxFactory.Token(
394-
leading: SyntaxFactory.TriviaList(SyntaxFactory.Whitespace(" ")),
394+
leading: SyntaxFactory.TriviaList(SyntaxFactory.Whitespace(containingClass.LeadingWhitespace() + new string(' ', 4))),
395395
kind: SyntaxKind.OpenBraceToken,
396396
trailing: SyntaxFactory.TriviaList(SyntaxFactory.LineFeed)),
397397
accessors: SyntaxFactory.List(
@@ -416,7 +416,7 @@ PropertyDeclarationSyntax Property(string field, string keyField, bool qualifyMe
416416
leading: default,
417417
kind: SyntaxKind.SemicolonToken,
418418
trailing: SyntaxFactory.TriviaList(SyntaxFactory.LineFeed)))
419-
.WithLeadingTrivia(SyntaxFactory.Whitespace(" ")),
419+
.WithLeadingTrivia(SyntaxFactory.Whitespace(containingClass.LeadingWhitespace() + new string(' ', 8))),
420420
SyntaxFactory.AccessorDeclaration(
421421
kind: SyntaxKind.SetAccessorDeclaration,
422422
attributeLists: property.Setter()!.AttributeLists,
@@ -439,10 +439,10 @@ PropertyDeclarationSyntax Property(string field, string keyField, bool qualifyMe
439439
leading: default,
440440
kind: SyntaxKind.SemicolonToken,
441441
trailing: SyntaxFactory.TriviaList(SyntaxFactory.LineFeed)))
442-
.WithLeadingTrivia(SyntaxFactory.Whitespace(" ")),
442+
.WithLeadingTrivia(SyntaxFactory.Whitespace(containingClass.LeadingWhitespace() + new string(' ', 8))),
443443
}),
444444
closeBraceToken: SyntaxFactory.Token(
445-
leading: SyntaxFactory.TriviaList(SyntaxFactory.Whitespace(" ")),
445+
leading: SyntaxFactory.TriviaList(SyntaxFactory.Whitespace(containingClass.LeadingWhitespace() + new string(' ', 4))),
446446
kind: SyntaxKind.CloseBraceToken,
447447
trailing: SyntaxFactory.TriviaList(SyntaxFactory.LineFeed))));
448448

@@ -528,6 +528,7 @@ SyntaxToken PublicOrPrivate()
528528

529529
static InvocationExpressionSyntax Register(string methodName, ExpressionSyntax name, TypeSyntax type, ClassDeclarationSyntax containingClass)
530530
{
531+
var leadingWhitespace = SyntaxFactory.Whitespace(containingClass.LeadingWhitespace() + new string(' ', 8));
531532
return SyntaxFactory.InvocationExpression(
532533
expression: SyntaxFactory.MemberAccessExpression(
533534
kind: SyntaxKind.SimpleMemberAccessExpression,
@@ -541,13 +542,13 @@ static InvocationExpressionSyntax Register(string methodName, ExpressionSyntax n
541542
arguments: SyntaxFactory.SeparatedList(
542543
new[]
543544
{
544-
SyntaxFactory.Argument(expression: name.WithLeadingTrivia(SyntaxFactory.Whitespace(" "))),
545+
SyntaxFactory.Argument(expression: name.WithLeadingTrivia(leadingWhitespace)),
545546
SyntaxFactory.Argument(
546547
nameColon: default,
547548
refKindKeyword: default,
548549
expression: SyntaxFactory.TypeOfExpression(
549550
keyword: SyntaxFactory.Token(
550-
leading: SyntaxFactory.TriviaList(SyntaxFactory.Whitespace(" ")),
551+
leading: SyntaxFactory.TriviaList(leadingWhitespace),
551552
kind: SyntaxKind.TypeOfKeyword,
552553
trailing: default),
553554
openParenToken: SyntaxFactory.Token(SyntaxKind.OpenParenToken),
@@ -558,7 +559,7 @@ static InvocationExpressionSyntax Register(string methodName, ExpressionSyntax n
558559
refKindKeyword: default,
559560
expression: SyntaxFactory.TypeOfExpression(
560561
keyword: SyntaxFactory.Token(
561-
leading: SyntaxFactory.TriviaList(SyntaxFactory.Whitespace(" ")),
562+
leading: SyntaxFactory.TriviaList(leadingWhitespace),
562563
kind: SyntaxKind.TypeOfKeyword,
563564
trailing: default),
564565
openParenToken: SyntaxFactory.Token(SyntaxKind.OpenParenToken),
@@ -569,7 +570,7 @@ static InvocationExpressionSyntax Register(string methodName, ExpressionSyntax n
569570
refKindKeyword: default,
570571
expression: SyntaxFactory.ObjectCreationExpression(
571572
newKeyword: SyntaxFactory.Token(
572-
leading: SyntaxFactory.TriviaList(SyntaxFactory.Whitespace(" ")),
573+
leading: SyntaxFactory.TriviaList(leadingWhitespace),
573574
kind: SyntaxKind.NewKeyword,
574575
trailing: SyntaxFactory.TriviaList(SyntaxFactory.Space)),
575576
type: SyntaxFactory.IdentifierName("PropertyMetadata"),

0 commit comments

Comments
 (0)