# 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

    346x
    346x
    6x

    6x
    6x
    6x
    6x

    6x

    340x

     // @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
    }