Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[[FIX]] Correct ASI for break and continue
  • Loading branch information
jugglinmike authored and rwaldron committed May 5, 2020
1 parent f786002 commit 3eb1b02
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 18 deletions.
6 changes: 0 additions & 6 deletions src/jshint.js
Expand Up @@ -5267,9 +5267,6 @@ var JSHINT = (function() {
stmt("break", function() {
var v = state.tokens.next.value;

if (!state.option.asi)
nolinebreak(this);

if (state.tokens.next.identifier &&
sameLine(state.tokens.curr, state.tokens.next)) {
if (!state.funct["(scope)"].funct.hasLabel(v)) {
Expand All @@ -5295,9 +5292,6 @@ var JSHINT = (function() {
warning("W052", state.tokens.next, this.value);
}

if (!state.option.asi)
nolinebreak(this);

if (state.tokens.next.identifier) {
if (sameLine(state.tokens.curr, state.tokens.next)) {
if (!state.funct["(scope)"].funct.hasLabel(v)) {
Expand Down
8 changes: 0 additions & 8 deletions tests/test262/expectations.txt
Expand Up @@ -118,15 +118,11 @@ test/annexB/language/statements/for-in/nonstrict-initializer.js(default)
test/built-ins/Function/prototype/toString/unicode.js(default)
test/built-ins/Function/prototype/toString/unicode.js(strict mode)
test/language/asi/S7.9.2_A1_T2.js(default)
test/language/asi/S7.9_A1.js(default)
test/language/asi/S7.9_A1.js(strict mode)
test/language/asi/S7.9_A10_T11.js(default)
test/language/asi/S7.9_A10_T10.js(default)
test/language/asi/S7.9_A10_T12.js(default)
test/language/asi/S7.9_A10_T7.js(default)
test/language/asi/S7.9_A10_T9.js(default)
test/language/asi/S7.9_A2.js(default)
test/language/asi/S7.9_A2.js(strict mode)
test/language/asi/S7.9_A6.1_T10.js(default)
test/language/asi/S7.9_A6.1_T10.js(strict mode)
test/language/asi/S7.9_A6.1_T11.js(default)
Expand Down Expand Up @@ -255,10 +251,6 @@ test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-inv
test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters-expression-body.js(strict mode)
test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters.js(default)
test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters.js(strict mode)
test/language/statements/break/12.8-1.js(default)
test/language/statements/break/12.8-1.js(strict mode)
test/language/statements/continue/12.7-1.js(default)
test/language/statements/continue/12.7-1.js(strict mode)
test/language/statements/do-while/decl-cls.js(default)
test/language/statements/do-while/decl-cls.js(strict mode)
test/language/statements/for-in/decl-cls.js(default)
Expand Down
4 changes: 0 additions & 4 deletions tests/unit/options.js
Expand Up @@ -574,17 +574,13 @@ exports.asi = function (test) {
.addError(2, 13, "Missing semicolon.")
.addError(4, 21, "Missing semicolon.")
.addError(5, 14, "Missing semicolon.")
.addError(9, 18, "Line breaking error 'continue'.")
.addError(9, 26, "Missing semicolon.")
.addError(10, 14, "Missing semicolon.")
.addError(11, 18, "Line breaking error 'break'.")
.addError(11, 23, "Missing semicolon.")
.addError(12, 14, "Missing semicolon.")
.addError(16, 23, "Missing semicolon.")
.addError(17, 19, "Missing semicolon.")
.addError(19, 13, "Line breaking error 'break'.")
.addError(19, 18, "Missing semicolon.")
.addError(21, 13, "Line breaking error 'break'.")
.addError(21, 18, "Missing semicolon.")
.addError(25, 6, "Missing semicolon.")
.addError(26, 10, "Missing semicolon.")
Expand Down
34 changes: 34 additions & 0 deletions tests/unit/parser.js
Expand Up @@ -6148,6 +6148,40 @@ exports.ASI.followingPostfix = function (test) {
test.done();
};

exports.ASI.followingContinue = function (test) {
var code = [
"while (false) {",
" continue",
"}"
];

TestRun(test)
.addError(2, 11, "Missing semicolon.")
.test(code);

TestRun(test)
.test(code, { asi: true });

test.done();
};

exports.ASI.followingBreak = function (test) {
var code = [
"while (false) {",
" break",
"}"
];

TestRun(test)
.addError(2, 8, "Missing semicolon.")
.test(code);

TestRun(test)
.test(code, { asi: true });

test.done();
};

exports["fat arrows support"] = function (test) {
var code = [
"let empty = () => {};",
Expand Down

0 comments on commit 3eb1b02

Please sign in to comment.