Indexed source maps: lastColumn is not clamped to the next section when the section does not start on line 1
Maintainer antworten meist innerhalb von 5 Tagen
@sebxt arbeitet bereits daran.
Seit 18.10.2026.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 78/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- javascript
- Bereich
- devtools
Rechercherichtung
Lies IndexedSourceMapConsumer und untersuche die Vergleiche von generatedPositionFor, allGeneratedPositionsFor und eachMapping mit der generierten Zeile des nächsten Abschnitts. Reproduziere das Problem mit der bereitgestellten Map mit drei Abschnitten und führe die relevanten Source-Map-Tests aus. Fertig ist die Arbeit, wenn alle drei APIs die letzte Spalte des Abschnitts auf die Grenze des nächsten Abschnitts begrenzen, wenn der Abschnitt nach Zeile 1 beginnt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
After computeColumnSpans(), IndexedSourceMapConsumer is supposed to clamp a mapping's lastColumn (or lastGeneratedColumn) so it ends where the next section begins on the same generated line. This only works for the first section, or more precisely for sections whose offset line is 0. For any later section the clamp is skipped, and in some layouts it is applied to the wrong line.
Repro:
const { SourceMapConsumer } = require("source-map");
const section = source => ({ version: 3, sources: [source], names: [], mappings: "AAAA" });
const map = await new SourceMapConsumer({
version: 3,
sections: [
{ offset: { line: 0, column: 0 }, map: section("a.js") },
{ offset: { line: 2, column: 0 }, map: section("b.js") },
{ offset: { line: 2, column: 10 }, map: section("c.js") },
],
});
map.computeColumnSpans();
map.generatedPositionFor({ source: "b.js", line: 1, column: 0 });
// actual: { line: 3, column: 0, lastColumn: Infinity }
// expected: { line: 3, column: 0, lastColumn: 9 }
allGeneratedPositionsFor and eachMapping (lastGeneratedColumn) return the same wrong value.
Root cause: in generatedPositionFor, allGeneratedPositionsFor and eachMapping of IndexedSourceMapConsumer, the comparison line === nextSection.generatedOffset.generatedLine runs before lineShift is added, so a section relative line is compared with an absolute line from the next section's offset. It only lines up when lineShift is 0. Adding the shift before the comparison fixes it.
- Vorherrschende Sprache
- JavaScript
- Sterne
- 3.7k
- Forks
- 392
- Ø 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
-
SourceMapConsumer.fromSourceMap ignores its sourceMapUrl argumentEvtl. vergeben @sebxt hat das vor 19 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
mozilla/source-map#544 ·
Maintainer antworten meist innerhalb von 5 Tagen
-
Indexed column spans ignore section line offsets when clipping at the next sectionEvtl. vergeben @NUAAwqy hat das vor 26 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
mozilla/source-map#539 ·
Maintainer antworten meist innerhalb von 5 Tagen
-
wasm-mappings fail to build with Rust 1.96+Evtl. vergeben @MatrixNeoKozak hat das vor 27 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
mozilla/source-map#530 ·
Maintainer antworten meist innerhalb von 5 Tagen
-
Indexed source maps: allGeneratedPositionsFor only returns positions from the first section that contains the sourceEvtl. vergeben @RaphaelFakhri hat das vor 4 Tagen übernommen. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 30/100
mozilla/source-map#564 ·
Maintainer antworten meist innerhalb von 5 Tagen
-
allow wasm to be bundledEvtl. wieder frei Ein Pull Request dazu wurde ohne Merge geschlossen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
mozilla/source-map#527 ·
Maintainer antworten meist innerhalb von 5 Tagen
Alle Issues in mozilla/source-map
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
obsidianmd/obsidian-help#1169 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
[docs] RELEASE.md: wrong branch name, no check that the prepare PR merged with the right subject, manual publish stepEvtl. vergeben @albertteoh hat das heute übernommen. Offendocumentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
jaegertracing/jaeger-ui#4739 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
-
documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
keepassxreboot/keepassxc-browser#3159 · 1 Kommentar ·
-
Add: ESP 2 RSOffenapproved check:passed feeds:add
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 67/100