diff --git a/packages/babel-parser/src/parser/statement.js b/packages/babel-parser/src/parser/statement.js index ea5b295a9dab..a3e17975d1eb 100644 --- a/packages/babel-parser/src/parser/statement.js +++ b/packages/babel-parser/src/parser/statement.js @@ -629,9 +629,7 @@ export default class StatementParser extends ExpressionParser { parseThrowStatement(node: N.ThrowStatement): N.ThrowStatement { this.next(); - if ( - lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start)) - ) { + if (this.hasPrecedingLineBreak()) { this.raise(this.state.lastTokEnd, Errors.NewlineAfterThrow); } node.argument = this.parseExpression(); diff --git a/packages/babel-parser/src/tokenizer/context.js b/packages/babel-parser/src/tokenizer/context.js index 101ac725969a..ebf8b98fd638 100644 --- a/packages/babel-parser/src/tokenizer/context.js +++ b/packages/babel-parser/src/tokenizer/context.js @@ -5,7 +5,6 @@ // See https://github.com/mozilla/sweet.js/wiki/design import { types as tt } from "./types"; -import { lineBreak } from "../util/whitespace"; export class TokContext { constructor( @@ -111,10 +110,7 @@ tt._function.updateContext = tt._class.updateContext = function (prevType) { prevType.beforeExpr && prevType !== tt.semi && prevType !== tt._else && - !( - prevType === tt._return && - lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start)) - ) && + !(prevType === tt._return && this.hasPrecedingLineBreak()) && !( (prevType === tt.colon || prevType === tt.braceL) && this.curContext() === types.b_stat diff --git a/packages/babel-parser/src/tokenizer/index.js b/packages/babel-parser/src/tokenizer/index.js index d8104c4f9b45..cbc0efab0fe8 100644 --- a/packages/babel-parser/src/tokenizer/index.js +++ b/packages/babel-parser/src/tokenizer/index.js @@ -114,6 +114,7 @@ export default class Tokenizer extends ParserErrors { // Forward-declarations // parser/util.js /*:: + +hasPrecedingLineBreak: () => boolean; +unexpected: (pos?: ?number, messageOrType?: string | TokenType) => empty; +expectPlugin: (name: string, pos?: ?number) => true; */ @@ -603,10 +604,7 @@ export default class Tokenizer extends ParserErrors { next === charCodes.dash && !this.inModule && this.input.charCodeAt(this.state.pos + 2) === charCodes.greaterThan && - (this.state.lastTokEnd === 0 || - lineBreak.test( - this.input.slice(this.state.lastTokEnd, this.state.pos), - )) + (this.state.lastTokEnd === 0 || this.hasPrecedingLineBreak()) ) { // A `-->` line comment this.skipLineComment(3); @@ -1525,9 +1523,7 @@ export default class Tokenizer extends ParserErrors { prevType === tt._return || (prevType === tt.name && this.state.exprAllowed) ) { - return lineBreak.test( - this.input.slice(this.state.lastTokEnd, this.state.start), - ); + return this.hasPrecedingLineBreak(); } if (