The formatted output is structurally different from the input with `--verify-structure` (false positive)
还没有人认领这个 Issue。
评估
调研方向
Start by locating the formatter’s parsing and line-breaking code, then trace how --verify-structure compares the input with formatted output. Reproduce the reported case with the two-line GDScript example and check whether backslash line continuations are treated consistently in both paths. Done means verification accepts the formatter’s output and unnecessary continuations are handled as described; the issue does not name specific files or tests.
由索引模型根据 Issue 内容生成。
描述
I found a case where --verify-structure fails. I think it's a false positive.
$ gdscript-formatter example.gd --verify-structure
Formatting 1 file...Error: "Failed to format file example.gd: The formatted output is structurally different from the input. Please report this to the bug tracker with a copy of the input code: https://github.com/GDQuest/GDScript-formatter/issues/"
I stripped down the failing file to a minimal example with just the line that causes the issue:
func _process(_delta: float) -> void:
unit.followTarget = unit.position.distance_to(unit.targetUnit.position) > Global.getAbility[abilityIdsPrioritized[0]].targetRange
Here is what it becomes after applying the formatting:
func _process(_delta: float) -> void:
unit.followTarget = unit.position.distance_to(unit.targetUnit.position) > Global \
.getAbility[abilityIdsPrioritized[0]] \
.targetRange
I tested this formatted version and it still works.
The problem seems to be that the formatter is able to break long lines with \, but when parsing a file it does not recognize lines broken with \ as one line, so it thinks the file is now different.
That also means that the formatter does not put a line back together if it has unnecessary line breaks.
F.ex. if I do something weird like this (which is still the exact same code):
func _process(_delta: float) -> void:
unit \
.\
followTarget = unit.position.distance_to(unit.targetUnit.position) > Global \
.\
getAbility[abilityIdsPrioritized[0]]\
.targetRange
All the formatter does with it is add some indents. Ideally it should remove the unnecessary line breaks.
Suggestion
The formatter could as part of the format and --verify-structure operations start by replacing all \ line breaks with a whitespace.
Then it will be "blind" to whatever line breaks already exist and always consistently add the line breaks it deems necessary.
It could have an option to enable/disable.
- 主要语言
- Rust
- 星标
- 468
- 派生
- 39
- 平均合并
- 6 小时 24 分钟
- 30 天内合并 PR
- 3
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
GDQuest/GDScript-formatter 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 62/100
GDQuest/GDScript-formatter#365 ·
-
难度 4/5 3-5 天 新手友好度 58/100
GDQuest/GDScript-formatter#360 · 1 条评论 ·
-
难度 4/5 3-5 天 新手友好度 48/100
GDQuest/GDScript-formatter#354 · 2 条评论 ·
-
难度 4/5 3-5 天 新手友好度 48/100
GDQuest/GDScript-formatter#353 · 5 条评论 ·
-
难度 3/5 1-2 天 新手友好度 63/100
GDQuest/GDScript-formatter#348 · 3 条评论 · 2 个 reaction ·
查看 GDQuest/GDScript-formatter 的全部 Issue
相似的 Issue
-
agent:sonnet-high enhancement priority: P2 ready-for-agent
难度 2/5 1-3 小时 新手友好度 82/100
shep-pm/shep-kelpie#652 ·
维护者通常 1 天内回复
-
install.ps1: Windows PowerShell 5.1 aborts after a successful cosign verification (NativeCommandError on 'Verified OK')可能已有人在做 @sly321-pixel 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 1 天内回复
-
ai_p2
难度 2/5 1-3 小时 新手友好度 68/100
ClickHouse/ClickHouse#125522 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
[Bug]: OpenRouter streaming chunks report the requested router name instead of the model OpenRouter served可能已有人在做 @Mrun25 今天认领。 未关闭bug llm translation
难度 2/5 1-3 小时 新手友好度 75/100
BerriAI/litellm#46095 · 1 条评论 ·
维护者通常 1 天内回复