44 lines
		
	
	
		
			970 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			970 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| '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;
 |