Skip to content

Commit f32fb07

Browse files
committed
Fix formatting when file scoped namespace
Fix #360
1 parent 6a5b901 commit f32fb07

3 files changed

Lines changed: 52 additions & 6 deletions

File tree

WpfAnalyzers.Test/Refactorings/AutoPropertyRefactoringTests.cs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,50 @@ public static void SetValue(DependencyObject element, double value)
450450
element.SetValue(ValueProperty, value);
451451
}
452452
}
453+
}";
454+
RoslynAssert.Refactoring(Refactoring, before, after);
455+
}
456+
457+
[Test]
458+
public static void StaticAutoPropertyFileScopedNamespace()
459+
{
460+
var before = @"
461+
namespace N;
462+
463+
public static class C
464+
{
465+
public static int ↓Number { get; set; }
466+
}";
467+
468+
var after = @"
469+
namespace N;
470+
471+
using System.Windows;
472+
473+
public static class C
474+
{
475+
public static readonly DependencyProperty NumberProperty = DependencyProperty.RegisterAttached(
476+
""Number"",
477+
typeof(int),
478+
typeof(C),
479+
new PropertyMetadata(default(int)));
480+
481+
/// <summary>Helper for getting <see cref=""NumberProperty""/> from <paramref name=""element""/>.</summary>
482+
/// <param name=""element""><see cref=""DependencyObject""/> to read <see cref=""NumberProperty""/> from.</param>
483+
/// <returns>Number property value.</returns>
484+
[AttachedPropertyBrowsableForType(typeof(DependencyObject))]
485+
public static int GetNumber(DependencyObject element)
486+
{
487+
return (int)element.GetValue(NumberProperty);
488+
}
489+
490+
/// <summary>Helper for setting <see cref=""NumberProperty""/> on <paramref name=""element""/>.</summary>
491+
/// <param name=""element""><see cref=""DependencyObject""/> to set <see cref=""NumberProperty""/> on.</param>
492+
/// <param name=""value"">Number property value.</param>
493+
public static void SetNumber(DependencyObject element, int value)
494+
{
495+
element.SetValue(NumberProperty, value);
496+
}
453497
}";
454498
RoslynAssert.Refactoring(Refactoring, before, after);
455499
}

WpfAnalyzers/Refactorings/AutoPropertyRefactoring.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,9 @@ public override async Task ComputeRefactoringsAsync(CodeRefactoringContext conte
6161
var semanticModel = await context.Document.GetSemanticModelAsync(context.CancellationToken)
6262
.ConfigureAwait(false);
6363

64-
if (syntaxRoot is { } &&
65-
syntaxRoot.FindNode(context.Span) is { } node &&
64+
if (syntaxRoot?.FindNode(context.Span) is { } node &&
6665
node.FirstAncestorOrSelf<PropertyDeclarationSyntax>() is { Parent: ClassDeclarationSyntax containingClass } property &&
67-
property.IsAutoProperty() &&
68-
semanticModel is { })
66+
property.IsAutoProperty() && semanticModel is { })
6967
{
7068
if (property.Modifiers.Any(SyntaxKind.StaticKeyword))
7169
{
@@ -494,7 +492,11 @@ SyntaxToken PublicOrPrivate()
494492

495493
if (!withStandardDocs)
496494
{
497-
return SyntaxFactory.Token(default, keyword, SyntaxFactory.TriviaList(SyntaxFactory.Space));
495+
return SyntaxFactory.Token(
496+
SyntaxFactory.TriviaList(
497+
SyntaxFactory.Whitespace(property.LeadingWhitespace() ?? " ")),
498+
keyword,
499+
SyntaxFactory.TriviaList(SyntaxFactory.Space));
498500
}
499501

500502
return SyntaxFactory.Token(

WpfAnalyzers/WpfAnalyzers.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080

8181
<ItemGroup>
8282
<PackageReference Include="Gu.Analyzers" Version="2.0.2" PrivateAssets="all" />
83-
<PackageReference Include="Gu.Roslyn.Extensions.Source" Version="0.16.5" PrivateAssets="all" />
83+
<PackageReference Include="Gu.Roslyn.Extensions.Source" Version="0.16.6" PrivateAssets="all" />
8484
<PackageReference Include="IDisposableAnalyzers" Version="4.0.1" PrivateAssets="all" />
8585
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.0.1" PrivateAssets="all" />
8686
<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers" Version="17.1.46" PrivateAssets="all" />

0 commit comments

Comments
 (0)