Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

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

Abierto Apto para principiantes
#539 0 comentarios 0 reacciones 0 asignados Ver en GitHub

@NUAAwqy ya está trabajando en esto.

Desde el 13/10/2026.

  • #540 de @NUAAwqy — abierto

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

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de mozilla/source-map

Todos los issues de mozilla/source-map

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.