Skip to content

Commit 22324e6

Browse files
authored
Merge pull request #3079 from sharwell/special-structs
Add special cases for the SA1129 code fix
2 parents 28ef7f4 + 7b32d7b commit 22324e6

2 files changed

Lines changed: 171 additions & 139 deletions

File tree

StyleCop.Analyzers/StyleCop.Analyzers.CodeFixes/ReadabilityRules/SA1129CodeFixProvider.cs

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ namespace StyleCop.Analyzers.ReadabilityRules
66
using System;
77
using System.Collections.Immutable;
88
using System.Composition;
9+
using System.Diagnostics;
910
using System.Linq;
1011
using System.Threading;
1112
using System.Threading.Tasks;
@@ -67,15 +68,37 @@ private static SyntaxNode GetReplacementNode(SyntaxNode node, SemanticModel sema
6768

6869
SyntaxNode replacement;
6970

70-
if (IsType<CancellationToken>(namedTypeSymbol))
71+
if (IsType<CancellationToken>(namedTypeSymbol)
72+
|| namedTypeSymbol?.SpecialType == SpecialType.System_IntPtr
73+
|| namedTypeSymbol?.SpecialType == SpecialType.System_UIntPtr
74+
|| IsType<Guid>(namedTypeSymbol))
7175
{
7276
if (IsDefaultParameterValue(newExpression))
7377
{
7478
replacement = SyntaxFactory.DefaultExpression(newExpression.Type);
7579
}
7680
else
7781
{
78-
replacement = ConstructMemberAccessSyntax(newExpression.Type, nameof(CancellationToken.None));
82+
string fieldName;
83+
if (IsType<CancellationToken>(namedTypeSymbol))
84+
{
85+
fieldName = nameof(CancellationToken.None);
86+
}
87+
else if (namedTypeSymbol.SpecialType == SpecialType.System_IntPtr)
88+
{
89+
fieldName = nameof(IntPtr.Zero);
90+
}
91+
else if (namedTypeSymbol.SpecialType == SpecialType.System_UIntPtr)
92+
{
93+
fieldName = nameof(IntPtr.Zero);
94+
}
95+
else
96+
{
97+
Debug.Assert(IsType<Guid>(namedTypeSymbol), "Assertion failed: IsType<Guid>(namedTypeSymbol)");
98+
fieldName = nameof(Guid.Empty);
99+
}
100+
101+
replacement = ConstructMemberAccessSyntax(newExpression.Type, fieldName);
79102
}
80103
}
81104
else if (IsEnumWithDefaultMember(namedTypeSymbol, out string memberName))

0 commit comments

Comments
 (0)