Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Indexed column spans ignore section line offsets when clipping at the next section

Offen Anfängerfreundlich
#539 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

@NUAAwqy arbeitet bereits daran.

Seit 13.10.2026.

  • #540 von @NUAAwqy — offen

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

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus mozilla/source-map

Alle Issues in mozilla/source-map

Ähnliche Issues

Weitere Issues zu JavaScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.