This repository was archived by the owner on Jul 12, 2022. It is now read-only.
File tree Expand file tree Collapse file tree 4 files changed +111
-10
lines changed
Microsoft.DotNet.CodeFormatting.Tests/Rules
Microsoft.DotNet.CodeFormatting/Rules Expand file tree Collapse file tree 4 files changed +111
-10
lines changed Original file line number Diff line number Diff line change @@ -29,6 +29,25 @@ class C
2929
3030 var expected = @"// test
3131
32+ class C
33+ {
34+ }" ;
35+ Verify ( source , expected ) ;
36+
37+ }
38+
39+ [ Fact ]
40+ public void CSharpSimpleMultiline ( )
41+ {
42+ _options . CopyrightHeader = ImmutableArray . Create ( "test1" , "test2" ) ;
43+ var source = @"
44+ class C
45+ {
46+ }" ;
47+
48+ var expected = @"// test1
49+ // test2
50+
3251class C
3352{
3453}" ;
@@ -48,6 +67,62 @@ class C
4867
4968 var expected = @"// test
5069
70+ class C
71+ {
72+ }" ;
73+ Verify ( source , expected ) ;
74+
75+ }
76+
77+ [ Fact ]
78+ public void CSharpPreserveExistingMultiline ( )
79+ {
80+ _options . CopyrightHeader = ImmutableArray . Create ( "test1" , "test2" ) ;
81+ var source = @"// test1
82+ // test2
83+
84+ class C
85+ {
86+ }" ;
87+
88+ var expected = @"// test1
89+ // test2
90+
91+ class C
92+ {
93+ }" ;
94+ Verify ( source , expected ) ;
95+
96+ }
97+
98+ [ Fact ]
99+ public void CSharpPreserveExistingWithCommentMultiline ( )
100+ {
101+ _options . CopyrightHeader = ImmutableArray . Create ( "test1" , "test2" ) ;
102+ var source = @"// test1
103+ // test2
104+
105+
106+
107+
108+
109+ // test3
110+
111+
112+ class C
113+ {
114+ }" ;
115+
116+ var expected = @"// test1
117+ // test2
118+
119+
120+
121+
122+
123+ // test3
124+
125+
51126class C
52127{
53128}" ;
Original file line number Diff line number Diff line change @@ -32,11 +32,14 @@ protected override bool IsLineComment(SyntaxTrivia trivia)
3232 return trivia . Kind ( ) == SyntaxKind . SingleLineCommentTrivia ;
3333 }
3434
35- protected override bool IsWhiteSpaceOrNewLine ( SyntaxTrivia trivia )
35+ protected override bool IsWhitespace ( SyntaxTrivia trivia )
3636 {
37- return
38- trivia . Kind ( ) == SyntaxKind . WhitespaceTrivia ||
39- trivia . Kind ( ) == SyntaxKind . EndOfLineTrivia ;
37+ return trivia . Kind ( ) == SyntaxKind . WhitespaceTrivia ;
38+ }
39+
40+ protected override bool IsNewLine ( SyntaxTrivia trivia )
41+ {
42+ return trivia . Kind ( ) == SyntaxKind . EndOfLineTrivia ;
4043 }
4144
4245 protected override SyntaxTrivia CreateLineComment ( string commentText )
Original file line number Diff line number Diff line change @@ -31,11 +31,14 @@ protected override bool IsLineComment(SyntaxTrivia trivia)
3131 return trivia . Kind ( ) == SyntaxKind . CommentTrivia ;
3232 }
3333
34- protected override bool IsWhiteSpaceOrNewLine ( SyntaxTrivia trivia )
34+ protected override bool IsWhitespace ( SyntaxTrivia trivia )
3535 {
36- return
37- trivia . Kind ( ) == SyntaxKind . WhitespaceTrivia ||
38- trivia . Kind ( ) == SyntaxKind . EndOfLineTrivia ;
36+ return trivia . Kind ( ) == SyntaxKind . WhitespaceTrivia ;
37+ }
38+
39+ protected override bool IsNewLine ( SyntaxTrivia trivia )
40+ {
41+ return trivia . Kind ( ) == SyntaxKind . EndOfLineTrivia ;
3942 }
4043
4144 protected override SyntaxTrivia CreateLineComment ( string commentText )
Original file line number Diff line number Diff line change @@ -79,6 +79,7 @@ private List<string> GetExistingHeader(SyntaxTriviaList triviaList)
7979 {
8080 headerList . Add ( GetCommentText ( triviaList [ i ] . ToFullString ( ) ) ) ;
8181 i ++ ;
82+ MoveToNextLineOrTrivia ( triviaList , ref i ) ;
8283 }
8384
8485 return headerList ;
@@ -113,7 +114,25 @@ private SyntaxTriviaList RemoveExistingHeader(SyntaxTriviaList oldList)
113114
114115 private void MovePastBlankLines ( SyntaxTriviaList list , ref int index )
115116 {
116- while ( index < list . Count && IsWhiteSpaceOrNewLine ( list [ index ] ) )
117+ while ( index < list . Count && ( IsWhitespace ( list [ index ] ) || IsNewLine ( list [ index ] ) ) )
118+ {
119+ index ++ ;
120+ }
121+ }
122+
123+ private void MoveToNextLineOrTrivia ( SyntaxTriviaList list , ref int index )
124+ {
125+ MovePastWhitespaces ( list , ref index ) ;
126+
127+ if ( index < list . Count && IsNewLine ( list [ index ] ) )
128+ {
129+ index ++ ;
130+ }
131+ }
132+
133+ private void MovePastWhitespaces ( SyntaxTriviaList list , ref int index )
134+ {
135+ while ( index < list . Count && IsWhitespace ( list [ index ] ) )
117136 {
118137 index ++ ;
119138 }
@@ -123,7 +142,8 @@ private void MovePastBlankLines(SyntaxTriviaList list, ref int index)
123142
124143 protected abstract bool IsLineComment ( SyntaxTrivia trivia ) ;
125144
126- protected abstract bool IsWhiteSpaceOrNewLine ( SyntaxTrivia trivia ) ;
145+ protected abstract bool IsWhitespace ( SyntaxTrivia trivia ) ;
146+ protected abstract bool IsNewLine ( SyntaxTrivia trivia ) ;
127147
128148 protected abstract SyntaxTrivia CreateLineComment ( string commentText ) ;
129149
You can’t perform that action at this time.
0 commit comments