Indexed column spans ignore section line offsets when clipping at the next section
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 72/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- javascript
- Bereich
- tooling
Rechercherichtung
Beginne mit dem Reproduktionsskript, das SourceMapConsumer mit zwei indizierten Abschnitten verwendet, deren Offsets in Zeile 4 liegen. Rufe computeColumnSpans() auf und prüfe generatedPositionFor, allGeneratedPositionsFor und eachMapping. Der Fehler besteht darin, dass die Prüfung der Abschnittsgrenze eine abschnittslokale generierte Zeile mit der absoluten Zeile des nächsten Abschnitts vergleicht, bevor der Offset angewendet wird. Fertig ist es, wenn das erste Mapping in Spalte 9 endet und die Regressionstests für alle drei APIs bestehen, einschließlich eines Falls mit einer Grenze in einer späteren lokalen Zeile.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Indexed maps whose first section has a nonzero line offset return a column span that extends into the next section on the same generated line.
Minimal reproduction on master (8c668f3):
const { SourceMapConsumer } = require("source-map");
(async () => {
const consumer = await new SourceMapConsumer({
version: 3,
sections: [
{
offset: { line: 4, column: 3 },
map: { version: 3, sources: ["first.js"], names: [], mappings: "AAAA" },
},
{
offset: { line: 4, column: 10 },
map: { version: 3, sources: ["second.js"], names: [], mappings: "AAAA" },
},
],
});
try {
consumer.computeColumnSpans();
console.log(consumer.generatedPositionFor({
source: "first.js", line: 1, column: 0,
}));
console.log(consumer.allGeneratedPositionsFor({
source: "first.js", line: 1, column: 0,
}));
consumer.eachMapping(console.log);
} finally {
consumer.destroy();
}
})();
Expected: the first mapping is at generated line 5, column 3, with an inclusive last column of 9 because the second section starts at column 10.
Actual: both position queries return lastColumn: Infinity, and eachMapping returns lastGeneratedColumn: Infinity for that mapping.
The section-boundary check compares a section-local generated line to the next section's absolute generated line before applying the line offset. The same ordering occurs in all three APIs. A boundary on a later local line is affected too; a zero line offset hides the problem.
I have a focused fix and regression tests ready. All 202 tests and lint pass with the fix; the three affected API tests fail on the original code.
- Vorherrschende Sprache
- JavaScript
- Sterne
- 3.7k
- Forks
- 374
- Ø Merge
- 4 T. 18 Std.
- Gemergte PRs (30 T.)
- 1
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus mozilla/source-map
-
wasm-mappings fail to build with Rust 1.96+Evtl. vergeben @MatrixNeoKozak hat das vor 3 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
mozilla/source-map#530 ·
-
allow wasm to be bundledOffen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
mozilla/source-map#527 ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
mozilla/source-map#524 · 6 Kommentare ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
mozilla/source-map#516 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
mozilla/source-map#510 · 1 Reaktion ·
Alle Issues in mozilla/source-map
Ähnliche Issues
-
Four problem loader browser tests fail on WindowsEvtl. vergeben @Patriciaath999 hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
juice-shop/juice-shop#3686 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
ScottKirvan/GOMAC#56 ·
-
area:install bug needs-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
yetone/magpie#2406 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag