(token?: any, message?: string)
| 199 | |
| 200 | // Throw an exception because of the token. |
| 201 | unexpectedTokenError(token?: any, message?: string): Error { |
| 202 | let msg = message || Messages.UnexpectedToken; |
| 203 | |
| 204 | let value; |
| 205 | if (token) { |
| 206 | if (!message) { |
| 207 | msg = (token.type === Token.EOF) ? Messages.UnexpectedEOS : |
| 208 | (token.type === Token.Identifier) ? Messages.UnexpectedIdentifier : |
| 209 | (token.type === Token.NumericLiteral) ? Messages.UnexpectedNumber : |
| 210 | (token.type === Token.StringLiteral) ? Messages.UnexpectedString : |
| 211 | (token.type === Token.Template) ? Messages.UnexpectedTemplate : |
| 212 | Messages.UnexpectedToken; |
| 213 | |
| 214 | if (token.type === Token.Keyword) { |
| 215 | if (this.scanner.isFutureReservedWord(token.value)) { |
| 216 | msg = Messages.UnexpectedReserved; |
| 217 | } else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) { |
| 218 | msg = Messages.StrictReservedWord; |
| 219 | } |
| 220 | } |
| 221 | } |
| 222 | |
| 223 | value = token.value; |
| 224 | } else { |
| 225 | value = 'ILLEGAL'; |
| 226 | } |
| 227 | |
| 228 | msg = msg.replace('%0', value); |
| 229 | |
| 230 | if (token && typeof token.lineNumber === 'number') { |
| 231 | const index = token.start; |
| 232 | const line = token.lineNumber; |
| 233 | const lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column; |
| 234 | const column = token.start - lastMarkerLineStart + 1; |
| 235 | return this.errorHandler.createError(index, line, column, msg); |
| 236 | } else { |
| 237 | const index = this.lastMarker.index; |
| 238 | const line = this.lastMarker.line; |
| 239 | const column = this.lastMarker.column + 1; |
| 240 | return this.errorHandler.createError(index, line, column, msg); |
| 241 | } |
| 242 | } |
| 243 | |
| 244 | throwUnexpectedToken(token?, message?): never { |
| 245 | throw this.unexpectedTokenError(token, message); |
no test coverage detected