Indexed column spans ignore section line offsets when clipping at the next section
@NUAAwqy y travaille déjà.
Depuis le 13/10/2026.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 72/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- javascript
- Domaine
- tooling
Piste de recherche
Commencez par le script de reproduction, qui utilise SourceMapConsumer avec deux sections indexées dont les offsets se situent à la ligne 4. Appelez computeColumnSpans() et vérifiez generatedPositionFor, allGeneratedPositionsFor et eachMapping. Le bogue vient de ce que la vérification de la frontière de section compare une ligne générée locale à la section avec la ligne absolue de la section suivante, avant l'application de l'offset. Le travail est terminé lorsque le premier mapping se termine à la colonne 9 et que les tests de régression des trois API passent, y compris un cas avec une frontière sur une ligne locale ultérieure.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- JavaScript
- Étoiles
- 3.7k
- Forks
- 388
- Merge moyen
- 4 j 18 h
- PR mergées (30 j)
- 1
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de mozilla/source-map
-
SourceMapConsumer.fromSourceMap ignores its sourceMapUrl argumentPeut-être pris @sebxt l’a pris il y a 13 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
mozilla/source-map#544 ·
-
Indexed source maps: lastColumn is not clamped to the next section when the section does not start on line 1Peut-être pris @sebxt l’a pris il y a 15 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
mozilla/source-map#542 ·
-
wasm-mappings fail to build with Rust 1.96+Peut-être pris @MatrixNeoKozak l’a pris il y a 21 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
mozilla/source-map#530 ·
-
allow wasm to be bundledPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
mozilla/source-map#527 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
mozilla/source-map#524 · 6 commentaires ·
Toutes les issues de mozilla/source-map
Issues similaires
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
mongoosejs/mquery#142 ·
-
Site Suggestion: bullseyeOuverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 65/100
Les mainteneurs répondent en général sous 1 jour
-
Add toro4n to the data modeling toolsPeut-être pris @henriklantzhedstrom-prog l’a pris aujourd’hui. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 62/100
neo4j/docs-getting-started#546 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
Les mainteneurs répondent en général sous 25 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
libnativeapi/nativeapi#21 ·