Skip to content

Commit

Permalink
Merge e9184b0 into 8cb3ee5
Browse files Browse the repository at this point in the history
  • Loading branch information
GerHobbelt committed Jun 18, 2019
2 parents 8cb3ee5 + e9184b0 commit 6ab7fe1
Showing 1 changed file with 64 additions and 28 deletions.
92 changes: 64 additions & 28 deletions lib/source-map-generator.js
Expand Up @@ -263,37 +263,73 @@ class SourceMapGenerator {
* in to one of these categories.
*/
_validateMapping(aGenerated, aOriginal, aSource, aName) {
// When aOriginal is truthy but has empty values for .line and .column,
// it is most likely a programmer error. In this case we throw a very
// specific error message to try to guide them the right way.
// For example: https://github.com/Polymer/polymer-bundler/pull/519
if (aOriginal && typeof aOriginal.line !== "number" && typeof aOriginal.column !== "number") {
throw new Error(
"original.line and original.column are not numbers -- you probably meant to omit " +
"the original mapping entirely and only map the generated position. If so, pass " +
"null for the original mapping instead of an object with empty or null values."
);
}

if (aGenerated && "line" in aGenerated && "column" in aGenerated
&& aGenerated.line > 0 && aGenerated.column >= 0
&& !aOriginal && !aSource && !aName) {
if (
aGenerated &&
typeof aGenerated.line === "number" &&
typeof aGenerated.column === "number" &&
aGenerated.line > 0 &&
aGenerated.column >= 0 &&
!aOriginal &&
!aSource &&
!aName
) {
// Case 1.

} else if (aGenerated && "line" in aGenerated && "column" in aGenerated
&& aOriginal && "line" in aOriginal && "column" in aOriginal
&& aGenerated.line > 0 && aGenerated.column >= 0
&& aOriginal.line > 0 && aOriginal.column >= 0
&& aSource) {
return;
} else if (
aGenerated &&
typeof aGenerated.line === "number" &&
typeof aGenerated.column === "number" &&
aOriginal &&
typeof aOriginal.line === "number" &&
typeof aOriginal.column === "number" &&
aGenerated.line > 0 &&
aGenerated.column >= 0 &&
aOriginal.line > 0 &&
aOriginal.column >= 0 &&
aSource
) {
// Cases 2 and 3.

return;
} else {
throw new Error("Invalid mapping: " + JSON.stringify({
generated: aGenerated,
source: aSource,
original: aOriginal,
name: aName
}));
let errMsg;

// When `aOriginal` is truthy but has empty values for .line and .column,
// it is most likely a programmer error. In this case we throw a very
// specific error message to try to guide them the right way.
// For example: https://github.com/Polymer/polymer-bundler/pull/519
if (
aOriginal &&
(typeof aOriginal.line !== "number" ||
typeof aOriginal.column !== "number")
) {
errMsg =
"original.line and/or original.column are not numbers -- you probably meant to omit " +
"the original mapping entirely and only map the generated position. If so, pass " +
"null for the original mapping instead of an object with empty or null values.";
}

// When `aGenerated` is truthy but has empty values for .line and .column,
// it is most likely a programmer error. In this case we throw a very
// specific error message to try to guide them the right way.
else if (
aGenerated &&
(typeof aGenerated.line !== "number" ||
typeof aGenerated.column !== "number")
) {
errMsg =
"generated.line and/or generated.column are not numbers -- you MUST specify " +
"a valid generated position.";
}

throw new Error(
(errMsg ? errMsg + " " : "") + "Invalid mapping: " +
JSON.stringify({
generated: aGenerated,
source: aSource,
original: aOriginal,
name: aName
})
);
}
}

Expand Down

0 comments on commit 6ab7fe1

Please sign in to comment.