Skip to content

Commit c8ce94b

Browse files
authored
Merge pull request #3274 from sharwell/single-line-record
Support records without braces
2 parents 2bf353c + 9c5c071 commit c8ce94b

File tree

8 files changed

+110
-0
lines changed

8 files changed

+110
-0
lines changed

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp9/LayoutRules/SA1500CSharp9UnitTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,28 @@
33

44
namespace StyleCop.Analyzers.Test.CSharp9.LayoutRules
55
{
6+
using System.Threading;
7+
using System.Threading.Tasks;
8+
using Microsoft.CodeAnalysis.Testing;
69
using StyleCop.Analyzers.Test.CSharp8.LayoutRules;
10+
using Xunit;
11+
using static StyleCop.Analyzers.Test.Verifiers.StyleCopCodeFixVerifier<
12+
StyleCop.Analyzers.LayoutRules.SA1500BracesForMultiLineStatementsMustNotShareLine,
13+
StyleCop.Analyzers.LayoutRules.SA1500CodeFixProvider>;
714

815
public class SA1500CSharp9UnitTests : SA1500CSharp8UnitTests
916
{
17+
[Fact]
18+
[WorkItem(3272, "https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3272")]
19+
public async Task TestSingleLineRecordAsync()
20+
{
21+
var testCode = @"namespace TestNamespace
22+
{
23+
public record TestRecord;
24+
}
25+
";
26+
27+
await VerifyCSharpFixAsync(testCode, DiagnosticResult.EmptyDiagnosticResults, testCode, CancellationToken.None).ConfigureAwait(false);
28+
}
1029
}
1130
}

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp9/LayoutRules/SA1502CSharp9UnitTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,28 @@
33

44
namespace StyleCop.Analyzers.Test.CSharp9.LayoutRules
55
{
6+
using System.Threading;
7+
using System.Threading.Tasks;
8+
using Microsoft.CodeAnalysis.Testing;
69
using StyleCop.Analyzers.Test.CSharp8.LayoutRules;
10+
using Xunit;
11+
using static StyleCop.Analyzers.Test.Verifiers.StyleCopCodeFixVerifier<
12+
StyleCop.Analyzers.LayoutRules.SA1502ElementMustNotBeOnASingleLine,
13+
StyleCop.Analyzers.LayoutRules.SA1502CodeFixProvider>;
714

815
public class SA1502CSharp9UnitTests : SA1502CSharp8UnitTests
916
{
17+
[Fact]
18+
[WorkItem(3272, "https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3272")]
19+
public async Task TestSingleLineRecordAsync()
20+
{
21+
var testCode = @"namespace TestNamespace
22+
{
23+
public record TestRecord;
24+
}
25+
";
26+
27+
await VerifyCSharpFixAsync(testCode, DiagnosticResult.EmptyDiagnosticResults, testCode, CancellationToken.None).ConfigureAwait(false);
28+
}
1029
}
1130
}

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp9/LayoutRules/SA1505CSharp9UnitTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,28 @@
33

44
namespace StyleCop.Analyzers.Test.CSharp9.LayoutRules
55
{
6+
using System.Threading;
7+
using System.Threading.Tasks;
8+
using Microsoft.CodeAnalysis.Testing;
69
using StyleCop.Analyzers.Test.CSharp8.LayoutRules;
10+
using Xunit;
11+
using static StyleCop.Analyzers.Test.Verifiers.StyleCopCodeFixVerifier<
12+
StyleCop.Analyzers.LayoutRules.SA1505OpeningBracesMustNotBeFollowedByBlankLine,
13+
StyleCop.Analyzers.LayoutRules.SA1505CodeFixProvider>;
714

815
public class SA1505CSharp9UnitTests : SA1505CSharp8UnitTests
916
{
17+
[Fact]
18+
[WorkItem(3272, "https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3272")]
19+
public async Task TestSingleLineRecordAsync()
20+
{
21+
var testCode = @"namespace TestNamespace
22+
{
23+
public record TestRecord;
24+
}
25+
";
26+
27+
await VerifyCSharpFixAsync(testCode, DiagnosticResult.EmptyDiagnosticResults, testCode, CancellationToken.None).ConfigureAwait(false);
28+
}
1029
}
1130
}

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp9/LayoutRules/SA1508CSharp9UnitTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,28 @@
33

44
namespace StyleCop.Analyzers.Test.CSharp9.LayoutRules
55
{
6+
using System.Threading;
7+
using System.Threading.Tasks;
8+
using Microsoft.CodeAnalysis.Testing;
69
using StyleCop.Analyzers.Test.CSharp8.LayoutRules;
10+
using Xunit;
11+
using static StyleCop.Analyzers.Test.Verifiers.StyleCopCodeFixVerifier<
12+
StyleCop.Analyzers.LayoutRules.SA1508ClosingBracesMustNotBePrecededByBlankLine,
13+
StyleCop.Analyzers.LayoutRules.SA1508CodeFixProvider>;
714

815
public class SA1508CSharp9UnitTests : SA1508CSharp8UnitTests
916
{
17+
[Fact]
18+
[WorkItem(3272, "https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3272")]
19+
public async Task TestSingleLineRecordAsync()
20+
{
21+
var testCode = @"namespace TestNamespace
22+
{
23+
public record TestRecord;
24+
}
25+
";
26+
27+
await VerifyCSharpFixAsync(testCode, DiagnosticResult.EmptyDiagnosticResults, testCode, CancellationToken.None).ConfigureAwait(false);
28+
}
1029
}
1130
}

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp9/LayoutRules/SA1509CSharp9UnitTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,28 @@
33

44
namespace StyleCop.Analyzers.Test.CSharp9.LayoutRules
55
{
6+
using System.Threading;
7+
using System.Threading.Tasks;
8+
using Microsoft.CodeAnalysis.Testing;
69
using StyleCop.Analyzers.Test.CSharp8.LayoutRules;
10+
using Xunit;
11+
using static StyleCop.Analyzers.Test.Verifiers.StyleCopCodeFixVerifier<
12+
StyleCop.Analyzers.LayoutRules.SA1509OpeningBracesMustNotBePrecededByBlankLine,
13+
StyleCop.Analyzers.LayoutRules.SA1509CodeFixProvider>;
714

815
public class SA1509CSharp9UnitTests : SA1509CSharp8UnitTests
916
{
17+
[Fact]
18+
[WorkItem(3272, "https://github.com/DotNetAnalyzers/StyleCopAnalyzers/issues/3272")]
19+
public async Task TestSingleLineRecordAsync()
20+
{
21+
var testCode = @"namespace TestNamespace
22+
{
23+
public record TestRecord;
24+
}
25+
";
26+
27+
await VerifyCSharpFixAsync(testCode, DiagnosticResult.EmptyDiagnosticResults, testCode, CancellationToken.None).ConfigureAwait(false);
28+
}
1029
}
1130
}

StyleCop.Analyzers/StyleCop.Analyzers/LayoutRules/SA1500BracesForMultiLineStatementsMustNotShareLine.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,11 @@ private static void HandleAnonymousObjectCreationExpression(SyntaxNodeAnalysisCo
140140

141141
private static void CheckBraces(SyntaxNodeAnalysisContext context, SyntaxToken openBraceToken, SyntaxToken closeBraceToken)
142142
{
143+
if (openBraceToken.IsKind(SyntaxKind.None) || closeBraceToken.IsKind(SyntaxKind.None))
144+
{
145+
return;
146+
}
147+
143148
bool checkCloseBrace = true;
144149
int openBraceTokenLine = openBraceToken.GetLine();
145150

StyleCop.Analyzers/StyleCop.Analyzers/LayoutRules/SA1502ElementMustNotBeOnASingleLine.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,11 @@ private static void HandleNamespaceDeclaration(SyntaxNodeAnalysisContext context
126126

127127
private static void CheckViolation(SyntaxNodeAnalysisContext context, SyntaxToken openBraceToken, SyntaxToken closeBraceToken)
128128
{
129+
if (openBraceToken.IsKind(SyntaxKind.None) || closeBraceToken.IsKind(SyntaxKind.None))
130+
{
131+
return;
132+
}
133+
129134
var openingBraceLineSpan = openBraceToken.GetLineSpan();
130135
var closingBraceLineSpan = closeBraceToken.GetLineSpan();
131136

StyleCop.Analyzers/StyleCop.Analyzers/LayoutRules/SA1508ClosingBracesMustNotBePrecededByBlankLine.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,11 @@ private static void HandleAccessorList(SyntaxNodeAnalysisContext context)
123123

124124
private static void AnalyzeCloseBrace(SyntaxNodeAnalysisContext context, SyntaxToken closeBraceToken)
125125
{
126+
if (closeBraceToken.IsKind(SyntaxKind.None))
127+
{
128+
return;
129+
}
130+
126131
var previousToken = closeBraceToken.GetPreviousToken();
127132
if ((closeBraceToken.GetLineSpan().StartLinePosition.Line - previousToken.GetLineSpan().EndLinePosition.Line) < 2)
128133
{

0 commit comments

Comments
 (0)