Bug 1457954 - Update Debugger Frontend v45.1. r=jdescottes

MozReview-Commit-ID: 2pJD6SVNCdZ
This commit is contained in:
Jason Laster 2018-04-30 11:59:07 -04:00
parent a3bec6ffb7
commit f122eb780d
8 changed files with 132 additions and 64 deletions

View File

@ -1,9 +1,9 @@
This is the debugger.html project output.
See https://github.com/devtools-html/debugger.html
Version 45.0
Version 45.1
Comparison: https://github.com/devtools-html/debugger.html/compare/release-44...release-45
Comparison: https://github.com/devtools-html/debugger.html/compare/release-45...release-45.1
Packages:
- babel-plugin-transform-es2015-modules-commonjs @6.26.0

View File

@ -22595,7 +22595,9 @@ function findFunctionText(line, source, symbols) {
return null;
}
const { location: { start, end } } = func;
const {
location: { start, end }
} = func;
const lines = source.text.split("\n");
const firstLine = lines[start.line - 1].slice(start.column);
const lastLine = lines[end.line - 1].slice(0, end.column);
@ -26035,7 +26037,7 @@ function isReliableScope(scope) {
}
// As determined by fair dice roll.
return totalBindings === 0 || unknownBindings / totalBindings < 0.9;
return totalBindings === 0 || unknownBindings / totalBindings < 0.1;
}
function generateClientScope(scopes, originalScopes) {
@ -26202,6 +26204,13 @@ function buildGeneratedBindingList(scopes, generatedAstScopes, thisBinding) {
}
for (const name of Object.keys(generated.bindings)) {
// If there is no 'this' value, we exclude the binding entirely.
// Otherwise it would pass through as found, but "(unscoped)", causing
// the search logic to stop with a match.
if (name === "this" && !bindings[name]) {
continue;
}
const { refs } = generated.bindings[name];
for (const loc of refs) {
acc.push({
@ -34800,43 +34809,51 @@ async function findGeneratedBindingFromPosition(sourceMaps, client, source, pos,
const locationType = pos.type;
const generatedRanges = await getGeneratedLocationRanges(source, pos, bindingType, locationType, sourceMaps);
const applicableBindings = filterApplicableBindings(generatedAstBindings, generatedRanges);
let applicableBindings = filterApplicableBindings(generatedAstBindings, generatedRanges);
// We can adjust this number as we go, but these are a decent start as a
// general heuristic to assume the bindings were bad or just map a chunk of
// whole line or something.
if (applicableBindings.length > 4) {
// Babel's for..of generates at least 3 bindings inside one range for
// block-scoped loop variables, so we shouldn't go below that.
applicableBindings = [];
}
let result;
if (bindingType === "import") {
result = await findGeneratedImportReference(applicableBindings);
if (!result && pos.type === "decl") {
const importName = pos.importName;
if (typeof importName !== "string") {
// Should never happen, just keeping Flow happy.
return null;
}
let applicableImportBindings = applicableBindings;
if (generatedRanges.length === 0) {
// If the imported name itself does not map to a useful range, fall back
// to resolving the bindinding using the location of the overall
// import declaration.
const declarationRanges = await getGeneratedLocationRanges(source, pos.declaration, bindingType, locationType, sourceMaps);
applicableImportBindings = filterApplicableBindings(generatedAstBindings, declarationRanges);
if (applicableImportBindings.length > 10) {
// Import declarations tend to have a large number of bindings for
// for things like 'require' and 'interop', so this number is larger
// than other binding count checks.
applicableImportBindings = [];
}
}
result = await findGeneratedImportDeclaration(applicableImportBindings, importName);
}
} else {
result = await findGeneratedReference(applicableBindings);
}
if (result) {
return result;
}
if (bindingType === "import" && pos.type === "decl") {
const importName = pos.importName;
if (typeof importName !== "string") {
// Should never happen, just keeping Flow happy.
return null;
}
let applicableImportBindings = applicableBindings;
if (generatedRanges.length === 0) {
// If the imported name itself does not map to a useful range, fall back
// to resolving the bindinding using the location of the overall
// import declaration.
const importRanges = await getGeneratedLocationRanges(source, pos.declaration, bindingType, locationType, sourceMaps);
applicableImportBindings = filterApplicableBindings(generatedAstBindings, importRanges);
if (applicableImportBindings.length === 0) {
return null;
}
}
return await findGeneratedImportDeclaration(applicableImportBindings, importName);
}
return null;
return result;
}
// eslint-disable-next-line max-len
@ -35155,6 +35172,14 @@ async function getGeneratedLocationRanges(source, {
const ranges = await sourceMaps.getGeneratedRanges(start, source);
const resultRanges = ranges.reduce((acc, mapRange) => {
// Some tooling creates ranges that map a line as a whole, which is useful
// for step-debugging, but can easily lead to finding the wrong binding.
// To avoid these false-positives, we entirely ignore ranges that cover
// full lines.
if (locationType === "ref" && mapRange.columnStart === 0 && mapRange.columnEnd === Infinity) {
return acc;
}
const range = {
start: {
line: mapRange.line,

View File

@ -1103,6 +1103,35 @@ function htmlParser({ source, line }) {
return parse(source, { startLine: line });
}
const VUE_COMPONENT_START = /^\s*</;
function vueParser({ source, line }) {
return parse(source, _extends({
startLine: line
}, sourceOptions.original));
}
function parseVueScript(code) {
if (typeof code !== "string") {
return;
}
let ast;
// .vue files go through several passes, so while there is a
// single-file-component Vue template, there are also generally .vue files
// that are still just JS as well.
if (code.match(VUE_COMPONENT_START)) {
ast = (0, _parseScriptTags2.default)(code, vueParser);
if (t.isFile(ast)) {
// parseScriptTags is currently hard-coded to return scripts, but Vue
// always expects ESM syntax, so we just hard-code it.
ast.program.sourceType = "module";
}
} else {
ast = parse(code, sourceOptions.original);
}
return ast;
}
function parseScript(text, opts) {
return _parse(text, opts);
}
@ -1118,13 +1147,15 @@ function getAst(sourceId) {
const { contentType } = source;
if (contentType == "text/html") {
ast = (0, _parseScriptTags2.default)(source.text, htmlParser) || {};
} else if (contentType && contentType.match(/(javascript|jsx)/)) {
} else if (contentType && contentType === "text/vue") {
ast = parseVueScript(source.text) || {};
} else if (contentType && contentType.match(/(javascript|jsx)/) && !contentType.match(/typescript-jsx/)) {
const type = source.id.includes("original") ? "original" : "generated";
const options = sourceOptions[type];
ast = parse(source.text, options);
} else if (contentType && contentType.match(/typescript/)) {
const options = _extends({}, sourceOptions.original, {
plugins: [...sourceOptions.original.plugins.filter(p => p !== "flow" && p !== "decorators" && p !== "decorators2"), "decorators", "typescript"]
plugins: [...sourceOptions.original.plugins.filter(p => p !== "flow" && p !== "decorators" && p !== "decorators2" && (p !== "jsx" || contentType.match(/typescript-jsx/))), "decorators", "typescript"]
});
ast = parse(source.text, options);
}
@ -19499,23 +19530,40 @@ const scopeCollectionVisitor = {
};
}
} else if (t.isClass(node)) {
if (t.isClassDeclaration(node) && t.isIdentifier(node.id)) {
state.declarationBindingIds.add(node.id);
state.scope.bindings[node.id.name] = {
type: "let",
refs: [{
type: "decl",
start: fromBabelLocation(node.id.loc.start, state.sourceId),
end: fromBabelLocation(node.id.loc.end, state.sourceId),
declaration: {
start: fromBabelLocation(node.loc.start, state.sourceId),
end: fromBabelLocation(node.loc.end, state.sourceId)
}
}]
};
}
if (t.isIdentifier(node.id)) {
// For decorated classes, the AST considers the first the decorator
// to be the start of the class. For the purposes of mapping class
// declarations however, we really want to look for the "class Foo"
// piece. To achieve that, we estimate the location of the declaration
// instead.
let declStart = node.loc.start;
if (node.decorators && node.decorators.length > 0) {
// Estimate the location of the "class" keyword since it
// is unlikely to be a different line than the class name.
declStart = {
line: node.id.loc.start.line,
column: node.id.loc.start.column - "class ".length
};
}
const declaration = {
start: fromBabelLocation(declStart, state.sourceId),
end: fromBabelLocation(node.loc.end, state.sourceId)
};
if (t.isClassDeclaration(node)) {
state.declarationBindingIds.add(node.id);
state.scope.bindings[node.id.name] = {
type: "let",
refs: [{
type: "decl",
start: fromBabelLocation(node.id.loc.start, state.sourceId),
end: fromBabelLocation(node.id.loc.end, state.sourceId),
declaration
}]
};
}
const scope = pushTempScope(state, "block", "Class", {
start: fromBabelLocation(node.loc.start, state.sourceId),
end: fromBabelLocation(node.loc.end, state.sourceId)
@ -19528,10 +19576,7 @@ const scopeCollectionVisitor = {
type: "decl",
start: fromBabelLocation(node.id.loc.start, state.sourceId),
end: fromBabelLocation(node.id.loc.end, state.sourceId),
declaration: {
start: fromBabelLocation(node.loc.start, state.sourceId),
end: fromBabelLocation(node.loc.end, state.sourceId)
}
declaration
}]
};
}

View File

@ -95,14 +95,13 @@ add_task(async function() {
]
);
// No '<this>' binding here because Babel does not currently general
// the current mappings for 'this' bindings.
await breakpointScopes(
dbg,
"this-arguments-bindings",
{ line: 8, column: 6 },
[
"arrow",
["<this>", '"this-value"'],
["argArrow", '"arrow-arg"'],
"Block",
"arrow()",
@ -116,8 +115,6 @@ add_task(async function() {
]
);
// Babel 6's imports aren't fully mapped, so they show as unavailable.
// The call-based ones work, but the single-identifier ones do not.
await breakpointScopes(dbg, "imported-bindings", { line: 20, column: 2 }, [
"Module",
["aDefault", '"a-default"'],

View File

@ -1 +1 @@
{"version":3,"sources":["webpack:///webpack/bootstrap 4f5a475903003c64fcaa","webpack:///./fixtures/out-of-order-declarations/input.js","webpack:///./fixtures/out-of-order-declarations/src/mod.js"],"names":["root","val","fn","outerFn","outer","callback","console","log","inner"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;kBC3DwBA,I;;AAcxB;;;;;;AAhBA,IAAIC,MAAM,aAAV;;AAEe,SAASD,IAAT,GAAgB;AAC7B,MAAIC,MAAM,cAAV;AACA,MAAIC,KAAK,SAASC,OAAT,CAAiBC,KAAjB,EAAuB,CAAE,CAAlC;;AAEA,WAASC,QAAT,GAAoB;AAClBC,YAAQC,GAAR,CAAY,YAAZ,EAA0BN,GAA1B,iBAAyCC,EAAzC;;AAEA,QAAID,MAAM,aAAV;AACA,aAASC,EAAT,CAAYM,KAAZ,EAAkB,CAAE;AACrB;;AAEDH;AACD;;;;;;;;;;;;;;kBCdc,W","file":"fixtures/out-of-order-declarations/output.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 4f5a475903003c64fcaa","var val = \"outer-value\";\n\nexport default function root() {\n var val = \"middle-value\";\n var fn = function outerFn(outer){};\n\n function callback() {\n console.log(\"pause here\", val, aDefault, fn);\n\n var val = \"inner-value\";\n function fn(inner){};\n }\n\n callback();\n}\n\nimport aDefault from \"./src/mod\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/out-of-order-declarations/input.js","export default \"a-default\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/out-of-order-declarations/src/mod.js"],"sourceRoot":""}
{"version":3,"sources":["webpack:///webpack/bootstrap 4f5a475903003c64fcaa","webpack:///./fixtures/out-of-order-declarations/input.js","webpack:///./fixtures/out-of-order-declarations/src/mod.js"],"names":["root","val","fn","outerFn","outer","callback","console","log","aDefault","inner"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;kBC3DwBA,I;;AAcxB;;;;;;AAhBA,IAAIC,MAAM,aAAV;;AAEe,SAASD,IAAT,GAAgB;AAC7B,MAAIC,MAAM,cAAV;AACA,MAAIC,KAAK,SAASC,OAAT,CAAiBC,KAAjB,EAAuB,CAAE,CAAlC;;AAEA,WAASC,QAAT,GAAoB;AAClBC,YAAQC,GAAR,CAAY,YAAZ,EAA0BN,GAA1B,EAA+BO,aAA/B,EAAyCN,EAAzC;;AAEA,QAAID,MAAM,aAAV;AACA,aAASC,EAAT,CAAYO,KAAZ,EAAkB,CAAE;AACrB;;AAEDJ;AACD;;;;;;;;;;;;;;kBCdc,W","file":"fixtures/out-of-order-declarations/output.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 4f5a475903003c64fcaa","var val = \"outer-value\";\n\nexport default function root() {\n var val = \"middle-value\";\n var fn = function outerFn(outer){};\n\n function callback() {\n console.log(\"pause here\", val, aDefault, fn);\n\n var val = \"inner-value\";\n function fn(inner){};\n }\n\n callback();\n}\n\nimport aDefault from \"./src/mod\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/out-of-order-declarations/input.js","export default \"a-default\";\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/out-of-order-declarations/src/mod.js"],"sourceRoot":""}

View File

@ -1 +1 @@
{"version":3,"sources":["webpack:///webpack/bootstrap 864a96309d7d728f6b47","webpack:///./fixtures/this-arguments-bindings/input.js"],"names":["root","fn","arg","console","log","arguments","arrow","call"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;kBC7DwBA,I;AAAT,SAASA,IAAT,GAAgB;AAC7B,WAASC,EAAT,CAAYC,GAAZ,EAAiB;AAAA;AAAA;;AACfC,YAAQC,GAAR,CAAY,IAAZ,EAAkBC,SAAlB;AACAF,YAAQC,GAAR,CAAY,YAAZ,EAA0BH,EAA1B,EAA8BD,IAA9B;;AAEA,QAAMM,QAAQ,SAARA,KAAQ,WAAY;AACxBH,cAAQC,GAAR;AACAD,cAAQC,GAAR,CAAY,YAAZ,EAA0BH,EAA1B,EAA8BD,IAA9B;AACD,KAHD;AAIAM,UAAM,WAAN;AACD;;AAEDL,KAAGM,IAAH,CAAQ,YAAR,EAAsB,WAAtB;AACD","file":"fixtures/this-arguments-bindings/output.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 864a96309d7d728f6b47","export default function root() {\n function fn(arg) {\n console.log(this, arguments);\n console.log(\"pause here\", fn, root);\n\n const arrow = argArrow => {\n console.log(this, arguments);\n console.log(\"pause here\", fn, root);\n };\n arrow(\"arrow-arg\");\n }\n\n fn.call(\"this-value\", \"arg-value\");\n}\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/this-arguments-bindings/input.js"],"sourceRoot":""}
{"version":3,"sources":["webpack:///webpack/bootstrap 864a96309d7d728f6b47","webpack:///./fixtures/this-arguments-bindings/input.js"],"names":["root","fn","arg","console","log","arguments","arrow","call"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;kBC7DwBA,I;AAAT,SAASA,IAAT,GAAgB;AAC7B,WAASC,EAAT,CAAYC,GAAZ,EAAiB;AAAA;AAAA;;AACfC,YAAQC,GAAR,CAAY,IAAZ,EAAkBC,SAAlB;AACAF,YAAQC,GAAR,CAAY,YAAZ,EAA0BH,EAA1B,EAA8BD,IAA9B;;AAEA,QAAMM,QAAQ,SAARA,KAAQ,WAAY;AACxBH,cAAQC,GAAR,CAAY,KAAZ,EAAkBC,UAAlB;AACAF,cAAQC,GAAR,CAAY,YAAZ,EAA0BH,EAA1B,EAA8BD,IAA9B;AACD,KAHD;AAIAM,UAAM,WAAN;AACD;;AAEDL,KAAGM,IAAH,CAAQ,YAAR,EAAsB,WAAtB;AACD","file":"fixtures/this-arguments-bindings/output.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 864a96309d7d728f6b47","export default function root() {\n function fn(arg) {\n console.log(this, arguments);\n console.log(\"pause here\", fn, root);\n\n const arrow = argArrow => {\n console.log(this, arguments);\n console.log(\"pause here\", fn, root);\n };\n arrow(\"arrow-arg\");\n }\n\n fn.call(\"this-value\", \"arg-value\");\n}\n\n\n\n// WEBPACK FOOTER //\n// ./fixtures/this-arguments-bindings/input.js"],"sourceRoot":""}

View File

@ -670,6 +670,7 @@ const contentMap = {
"ts": "text/typescript",
"tsx": "text/typescript-jsx",
"jsx": "text/jsx",
vue: "text/vue",
"coffee": "text/coffeescript",
"elm": "text/elm",
"cljs": "text/x-clojure"
@ -3563,7 +3564,7 @@ IndexedSourceMapConsumer.prototype.sourceContentFor =
* and an object is returned with the following properties:
*
* - line: The line number in the generated source, or null. The
* line number is 1-based.
* line number is 1-based.
* - column: The column number in the generated source, or null.
* The column number is 0-based.
*/
@ -4414,4 +4415,4 @@ module.exports = { fetchSourceMap };
/***/ })
/******/ ]);
});
});