Skip to content
This repository was archived by the owner on Feb 21, 2022. It is now read-only.

Commit ce27d46

Browse files
authored
Merge pull request #303 from webschik/ter-newline-after-var
[bug] fixed ter-newline-after-var (closes #302)
2 parents 6ece984 + d880857 commit ce27d46

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

src/rules/terNewlineAfterVarRule.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,15 @@ class RuleWalker extends Lint.AbstractWalker<ITerNewlineAfterVarOptions> {
100100
unexpectedLineFixes.push(Lint.Replacement.deleteText(i, 1));
101101
}
102102
} else if (code !== 9 && code !== 13 && code !== 32) {
103-
const leadingComments: ts.CommentRange[]|undefined = ts.getLeadingCommentRanges(sourceFileText, i - 1);
103+
const leadingComments: ts.CommentRange[]|undefined = ts.getLeadingCommentRanges(
104+
`\n${ sourceFileText.slice(i) }`,
105+
0
106+
);
104107
const lastLeadingComment: ts.CommentRange|undefined = leadingComments && leadingComments.pop();
105108

106109
if (lastLeadingComment && (!isNewLineRequired || (isNewLineRequired && newLinesCount < 2))) {
107110
newLinesCount = 0;
108-
expectedLinePos = lastLeadingComment.end;
111+
expectedLinePos = i - 1 + lastLeadingComment.end;
109112
i = expectedLinePos - 1;
110113
} else {
111114
if (isNewLineRequired && newLinesCount < 2) {

src/test/rules/terNewlineAfterVarRuleTests.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,30 @@ ruleTester.addTestGroup('always', 'should always require an empty line after var
158158
errors: expecting([
159159
['expectedBlankLine', 5]
160160
])
161+
},
162+
{
163+
code: dedent`
164+
const dateOfBirth: string = value.slice(1, 9); // yyyymmdd
165+
166+
value = '';`,
167+
output: dedent`
168+
const dateOfBirth: string = value.slice(1, 9); // yyyymmdd
169+
170+
value = '';`,
171+
options: ['always']
172+
},
173+
{
174+
code: dedent`
175+
const dateOfBirth: string = value.slice(1, 9); // yyyymmdd
176+
value = '';`,
177+
output: dedent`
178+
const dateOfBirth: string = value.slice(1, 9); // yyyymmdd
179+
180+
value = '';`,
181+
options: ['always'],
182+
errors: expecting([
183+
['expectedBlankLine', 1]
184+
])
161185
}
162186
]);
163187

@@ -301,6 +325,28 @@ ruleTester.addTestGroup('never', 'should disallow empty lines after variable dec
301325
errors: expecting([
302326
['unexpectedBlankLine', 5]
303327
])
328+
},
329+
{
330+
code: dedent`
331+
const dateOfBirth: string = value.slice(1, 9); // yyyymmdd
332+
value = '';`,
333+
output: dedent`
334+
const dateOfBirth: string = value.slice(1, 9); // yyyymmdd
335+
value = '';`,
336+
options: ['never']
337+
},
338+
{
339+
code: dedent`
340+
const dateOfBirth: string = value.slice(1, 9); // yyyymmdd
341+
342+
value = '';`,
343+
output: dedent`
344+
const dateOfBirth: string = value.slice(1, 9); // yyyymmdd
345+
value = '';`,
346+
options: ['never'],
347+
errors: expecting([
348+
['unexpectedBlankLine', 1]
349+
])
304350
}
305351
]);
306352

0 commit comments

Comments
 (0)