feat(parser): new 的类型改按注解规则解析,认 [N]T 前导数组声明符与 T* 后缀
This commit is contained in:
1 parent
17b1d6bb60
commit
7f32042c21
1 file changed
+4
-4
+4
-4
@@ -1853,10 +1853,10 @@ def _parse_new_expr(ps: Parser*) -> AST*:
|
||||
src = NEW_SRC_MEMGR
|
||||
continue
|
||||
break
|
||||
# 类型 + 可选实参:`T(args)` 复用普通表达式解析;`T`(无实参)是基本类型/别名的简写形式
|
||||
# (`new stack char`:标量没有构造序列,Gen 侧只需取存储 + 零初始化)。非类型原子(如
|
||||
# `new stack f * 2`)仍在此 fail-fast,不能让错误落到"class ... is not registered"那种远离根因的报文。
|
||||
callee: AST* = _parse_atom_expr(ps)
|
||||
# 类型 + 可选实参:类型用**注解规则**解析 —— 这样前导数组声明符 `[N]T`、指针后缀 `T*`、
|
||||
# 泛型下标 `list[int]`、描述符前缀都与注解位置同口径;`T(args)` 的实参括号会被 `_parse_test`
|
||||
# 自身吃成 Call,故这里按"是不是 Call"分流,行为与旧版一致。
|
||||
callee: AST* = _parse_type_ann(ps)
|
||||
if callee is None:
|
||||
_record_parse_err(ps)
|
||||
ps.error_count += 1
|
||||
|
||||
Reference in new issue
Block a user