感谢提出新需求。 | Thanks for proposing a new feature.
LSP
原始问题:自动导包补全项持续重复 工程结构:
新增功能: 当 LSP 能够从实际依赖路径关系确认以下冲突时: 工作区内部模块 boo │ └── 直接依赖外部模块 boo 会在内部 boo 模块所有 .cj 文件的 package boo 声明位置报告错误: modules with name 'boo' in dependency tree are conflicted. If existing dependency was updated in cjpm.toml then do cjpm update 诊断属性: category: 503 code: 503 severity: 1 source: Cangjie range: package boo 声明范围
cjpm update
带来的价值
感谢提出新需求。 | Thanks for proposing a new feature.
领域 | Domain
LSP
新需求提供了什么功能? | What functionality does the new feature provide?
原始问题:自动导包补全项持续重复
工程结构:
异常表现:
根因:
根因位于增量索引的符号收集顺序。
原实现中,SymbolCollector.cpp
按 package.files 原始顺序处理文件:
当内部、外部模块同名并被编译器组织到同一个包上下文时,可能先继承未覆盖文件的旧符号,再收集当前文件的新符号。此时用于去重的 symbolRefMap 尚未写入刷新后的 Symbol ID,因此旧符号没有被识别为已存在,重复加入 pkgSymsMap。
每次增量编译都会再继承一次,最终表现为补全项逐次累加。
新增功能:
当 LSP 能够从实际依赖路径关系确认以下冲突时:
工作区内部模块 boo
│
└── 直接依赖外部模块 boo
会在内部 boo 模块所有 .cj 文件的 package boo 声明位置报告错误:
modules with name 'boo' in dependency tree are conflicted. If existing dependency was updated in cjpm.toml then do
cjpm update诊断属性:
category: 503
code: 503
severity: 1
source: Cangjie
range: package boo 声明范围
该需求带来的价值、应用场景? | Value and application scenarios of the feature?
带来的价值
新需求涉及的分支版本 | Branch versions involved in the new feature