Handle type-closing chevrons adjacent to an initializer assignment
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
Start with type parsing in front/parser/src/parser/types.rs and storage declarations in front/parser/src/parser/decl.rs, then inspect the lexer’s compound-operator handling. Reproduce with array<i32,1>=[1] and ptr<i32>=null while comparing the spaced forms and genuine >=/>> expressions. Done means the agreed compact-or-spaced policy is consistent across the listed generic types, diagnostics identify the exact boundary when rejected, AST/HIR behavior is equivalent for accepted forms, and source spans remain accurate.
由索引模型根据 Issue 内容生成。
描述
Problem
A storage declaration using array<i32,1>=[1] or ptr<i32>=null fails while the same declaration with whitespace between > and = succeeds. The diagnostic consumes past the chevron/operator boundary and says a semicolon is missing, rather than explaining the actual boundary problem.
Starting points: type parsing, storage declarations, and the lexer compound-operator handling. This differs from the error-message preservation work in #971 and nested generic comma/chevron tests in #393.
Reproduction
Audited canonical master 540728c2eb6cc12f5c69c3fb3fdb96e07ba059a4 on Linux amd64 with a checkout-built Wave 0.0.1-alpha-dev, matching checkout std, Rust 1.89.0 and LLVM 21.1.8. Both check and build --emit=ir, with --error-format=json, reject:
fun main() {
var a: array<i32,1>=[1];
var p: ptr<i32>=null;
}
array<i32,1> = [1] and ptr<i32> = null are accepted controls. The errors are expected ';' in storage declaration; the pointer case highlights null, after the problematic boundary.
Scope
Resolve the type/assignment token boundary in its parsing context, retaining correct spans for any split tokens. Keep actual expression >=, >> and compound shifts unchanged. If the language intentionally requires whitespace here, document that choice and issue a boundary-specific diagnostic instead of the misleading semicolon error.
Please mention @LunaStev to discuss the design before starting implementation.
Completion criteria
- The agreed policy is consistent for pointer, array, nested generic and ordinary named generic types.
- Accepted compact/spaced forms have equivalent AST/HIR, or intentionally rejected forms identify the exact boundary with actionable help.
- Genuine comparison/shift operators retain maximal-munch expression behavior; human/JSON source ranges remain accurate.
- 主要语言
- Rust
- 星标
- 56
- 派生
- 21
- 平均合并
- 23 小时 20 分钟
- 30 天内合并 PR
- 45
环境准备
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
wavefnd/Wave 的其他 Issue
-
Reject unrepresentable POSIX listener descriptors before Unix-domain accept可能已有人在做 @ShahadatTest 于 6 天前认领。 未关闭bug good first issue
难度 2/5 1-3 小时 新手友好度 84/100
维护者通常 1 天内回复
-
Preserve expression assembly result types when recording HIR conversions可能已有人在做 @hiyouwhatsapp 于 2 天前认领。 未关闭bug help wanted
难度 5/5 一周以上 新手友好度 35/100
维护者通常 1 天内回复
-
bug help wanted
难度 4/5 3-5 天 新手友好度 53/100
维护者通常 1 天内回复
-
Preserve the previous build output when writing its Cargo receipt fails可能已有人在做 @hiyouwhatsapp 于 2 天前认领。 未关闭bug build help wanted
难度 4/5 3-5 天 新手友好度 56/100
维护者通常 1 天内回复
-
Reconcile obsolete staging assets before verifying a new Nightly generation可能已有人在做 @hiyouwhatsapp 于 2 天前认领。 未关闭bug ci help wanted
难度 4/5 3-5 天 新手友好度 48/100
维护者通常 1 天内回复
相似的 Issue
-
bug good first issue help wanted linux macos testing
难度 2/5 1-3 小时 新手友好度 85/100
维护者通常 1 天内回复
-
area: app type: test
难度 2/5 1-3 小时 新手友好度 82/100
维护者通常 1 天内回复
-
bug priority: medium
难度 2/5 1-3 小时 新手友好度 78/100
storytold/photocraft#12706 · 1 条评论 ·
维护者通常 1 天内回复
-
bug priority-low to-agent
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
-
examples/dca and limit-order: swap always fails on the real Soroswap router (deadline equals now)未关闭
难度 2/5 1-3 小时 新手友好度 76/100
sorocon-labs/sorocron#172 ·
维护者通常 1 天内回复