UNPKG

decaffeinate-parser

Version:

A better AST for CoffeeScript, inspired by CoffeeScriptRedux.

49 lines (48 loc) 1.76 kB
/* eslint-disable @typescript-eslint/camelcase */ var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; /** * Assumes first_line/first_column are correct. */ export default function fixInvalidLocationData(locationData, linesAndColumns) { var last_line = locationData.last_line, last_column = locationData.last_column; var indexForLocation = linesAndColumns.indexForLocation({ line: last_line, column: last_column }); if (indexForLocation !== null) { return locationData; } else { var offset = 1; for (;;) { var index = linesAndColumns.indexForLocation({ line: last_line, column: last_column - offset }); offset++; if (index !== null) { var location = linesAndColumns.locationForIndex(index + offset); if (!location) { throw new Error("Unable to determine adjustment offset for incorrect location data: " + (JSON.stringify(locationData) + ". No valid location found for index: ") + ("" + (index + offset))); } last_line = location.line; last_column = location.column; break; } } return __assign(__assign({}, locationData), { last_line: last_line, last_column: last_column }); } }