Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

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

未关闭 适合新手
#539 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

@NUAAwqy 已经在做这个了。

开始于 2026年10月13日。

  • #540 来自 @NUAAwqy —— 未关闭

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
72/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
javascript
领域
tooling

调研方向

从复现脚本开始,它使用 SourceMapConsumer,其中包含两个索引段,偏移量位于第 4 行。调用 computeColumnSpans(),并检查 generatedPositionFor、allGeneratedPositionsFor 和 eachMapping。问题在于,段边界检查在应用偏移量之前,就将段内的生成行与下一段的绝对行进行比较。完成的标准是:第一个映射结束于第 9 列,三个 API 的回归测试全部通过,包括边界位于后面局部行的情况。

由索引模型根据 Issue 内容生成。

描述

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.

主要语言
JavaScript
星标
3.7k
派生
376
平均合并
4 天 18 小时
30 天内合并 PR
1

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

mozilla/source-map 的其他 Issue

查看 mozilla/source-map 的全部 Issue

相似的 Issue

更多 JavaScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。