Merge pull request #2995 from jimfb/master

In JSX-source plugin, handle case where filename or line are null
This commit is contained in:
Sebastian McKenzie 2015-11-11 14:12:38 -08:00
commit 0b7b2e4a3a

View File

@ -19,23 +19,12 @@ import path from "path";
const TRACE_ID = "__source";
export default function ({ types: t }) {
function objectToAst(object) {
const properties = Object.keys(object).map((attr) => {
let value;
switch(typeof object[attr]) {
case "number": value = t.numericLiteral(object[attr]); break;
default: value = t.stringLiteral(object[attr].toString());
}
return t.objectProperty(t.identifier(attr), value);
});
return t.objectExpression(properties);
}
function makeTrace(fileName, lineNumber) {
return objectToAst({
fileName,
lineNumber,
});
const fileNameLiteral = fileName != null ? t.stringLiteral(fileName) : t.nullLiteral();
const fileLineLiteral = lineNumber != null ? t.numericLiteral(lineNumber) : t.nullLiteral();
const fileNameProperty = t.objectProperty(t.identifier("fileName"), fileNameLiteral);
const lineNumberProperty = t.objectProperty(t.identifier("lineNumber"), fileLineLiteral);
return t.objectExpression([fileNameProperty, lineNumberProperty]);
}
let visitor = {