| 'use strict'; |
| |
| const Mixin = require('../../utils/mixin'); |
| |
| class ErrorReportingMixinBase extends Mixin { |
| constructor(host, opts) { |
| super(host); |
| |
| this.posTracker = null; |
| this.onParseError = opts.onParseError; |
| } |
| |
| _setErrorLocation(err) { |
| err.startLine = err.endLine = this.posTracker.line; |
| err.startCol = err.endCol = this.posTracker.col; |
| err.startOffset = err.endOffset = this.posTracker.offset; |
| } |
| |
| _reportError(code) { |
| const err = { |
| code: code, |
| startLine: -1, |
| startCol: -1, |
| startOffset: -1, |
| endLine: -1, |
| endCol: -1, |
| endOffset: -1 |
| }; |
| |
| this._setErrorLocation(err); |
| this.onParseError(err); |
| } |
| |
| _getOverriddenMethods(mxn) { |
| return { |
| _err(code) { |
| mxn._reportError(code); |
| } |
| }; |
| } |
| } |
| |
| module.exports = ErrorReportingMixinBase; |