All files / src/parsers parser.js

100% Statements 9/9
100% Branches 2/2
100% Functions 1/1
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24            331x 331x 6x         6x 6x 6x 6x     6x   325x    
// @flow
 
import Program from './program'
import type { SourceCodeType, ParserReturnValueType } from '../types'
 
export default (sourceCode: SourceCodeType): ParserReturnValueType => {
  const results = Program.parse(sourceCode)
  if (!results.status) {
    const badPart = sourceCode
      .split('\n')[results.index.line - 1].slice(
        results.index.column - 1,
        results.index.column + 9
      )
    let error = new SyntaxError()
    error.lineNumber = results.index.line
    error.columnNumber = results.index.column
    error.message = `Expected ${results.expected.join(' or ')} on line ${
      results.index.line
    } column ${results.index.column}, found '${badPart}' instead`
    throw error
  }
  return results
}