Indexed column spans ignore section line offsets when clipping at the next section
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 72/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- javascript
- Área
- tooling
Línea de trabajo
Empieza por el script de reproducción, que usa SourceMapConsumer con dos secciones indexadas cuyos offsets están en la línea 4. Llama a computeColumnSpans() y comprueba generatedPositionFor, allGeneratedPositionsFor y eachMapping. El error es que la comprobación del límite de sección compara una línea generada local de la sección con la línea absoluta de la siguiente sección antes de aplicar el offset. Se considera terminado cuando el primer mapeo termina en la columna 9 y las pruebas de regresión de las tres APIs pasan, incluido un caso con un límite en una línea local posterior.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- JavaScript
- Estrellas
- 3.7k
- Forks
- 376
- Merge medio
- 4 d 18 h
- PR fusionados (30 d)
- 1
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de mozilla/source-map
-
wasm-mappings fail to build with Rust 1.96+Posiblemente ocupada @MatrixNeoKozak la tomó hace 3 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
mozilla/source-map#530 ·
-
allow wasm to be bundledAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
mozilla/source-map#527 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
mozilla/source-map#524 · 6 comentarios ·
-
source map seems like not work, is there some hints from the perspective of source-map tool?Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
mozilla/source-map#516 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
mozilla/source-map#510 · 1 reacción ·
Todos los issues de mozilla/source-map
Issues similares
-
Four problem loader browser tests fail on WindowsPosiblemente ocupada @Patriciaath999 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
juice-shop/juice-shop#3686 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
TheOdinProject/curriculum#31465 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
TurboDocx/html-to-docx#254 ·
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día