refactor(includes): R12 下标 while 循环改 for range,R13 c.Set 迁移为赋值
R12(wiki/新规范 L27-39):把「i: int = 0 与 while i < N: … i += 1」形式的下标循环改写为「for i in range(N):」。保守判定:仅当条件为裸 NAME < EXPR、循环体无 continue、NAME 在体内无其它赋值、无嵌套重绑定、循环后同层不再引用 NAME 时才改写。共 269 处 / 48 文件。 R13:c.Set 是正在退化的路径——c.Set(*p, v) 期望写作 *p = v,c.Set(a, b) 等于 a = b。本次把 includes 内 45 处 c.Set 全部迁移为赋值,includes 已无 c.Set 调用。 验证:bootstrap 三重重编 SUCCESS(无 vast_c 解析回退);全量 77/77 顺序回归通过;ZlibTest 内部断言 79 passed / 0 failed。
This commit is contained in:
1 parent
3e1ed0992b
commit
27121f56a7
27 files changed
+208
-534
No files matched your search
+1
-3
@@ -1004,12 +1004,10 @@ def _read_operator(lx: rawptr[Lexer]):
|
||||
if cur.length <= int(remaining):
|
||||
# Compare cur.name with src[pos:pos+cur.length]
|
||||
Matched: int = 1
|
||||
i: sizet = 0
|
||||
while i < sizet(cur.length):
|
||||
for i in range(sizet(cur.length)):
|
||||
if lx.src[lx.pos + i] != cur.name[i]:
|
||||
Matched = 0
|
||||
break
|
||||
i += 1
|
||||
if Matched != 0:
|
||||
if cur.length > best_len:
|
||||
best_len = cur.length
|
||||
|
||||
+11
-33
@@ -635,10 +635,8 @@ def _ParseVirtualModified(ps: rawptr[Parser], parent: rawptr[AST]):
|
||||
return
|
||||
if ps.pending_decorators is not None:
|
||||
dn: sizet = len(ps.pending_decorators)
|
||||
di: sizet = 0
|
||||
while di < dn:
|
||||
for di in range(dn):
|
||||
merged.append(ps.pending_decorators.get(di))
|
||||
di += 1
|
||||
merged.append(marker)
|
||||
ps.pending_decorators = merged
|
||||
stmt: rawptr[AST] = None
|
||||
@@ -719,10 +717,8 @@ def _ParseInlineModified(ps: rawptr[Parser], parent: rawptr[AST]):
|
||||
return
|
||||
if ps.pending_decorators is not None:
|
||||
dn: sizet = len(ps.pending_decorators)
|
||||
di: sizet = 0
|
||||
while di < dn:
|
||||
for di in range(dn):
|
||||
merged.append(ps.pending_decorators.get(di))
|
||||
di += 1
|
||||
merged.append(marker)
|
||||
ps.pending_decorators = merged
|
||||
stmt: rawptr[AST] = _parse_funcdef(ps, 0)
|
||||
@@ -840,10 +836,8 @@ def _ParseStaticModified(ps: rawptr[Parser], parent: rawptr[AST]) -> int:
|
||||
return 1
|
||||
if ps.pending_decorators is not None:
|
||||
dn: sizet = len(ps.pending_decorators)
|
||||
di: sizet = 0
|
||||
while di < dn:
|
||||
for di in range(dn):
|
||||
merged.append(ps.pending_decorators.get(di))
|
||||
di += 1
|
||||
merged.append(marker)
|
||||
ps.pending_decorators = merged
|
||||
stmt: rawptr[AST] = _parse_funcdef(ps, 0)
|
||||
@@ -1012,12 +1006,10 @@ def _dbg_lookup_lit_val(ptr: uint64) -> double:
|
||||
_g_dbg_lit_found = 0
|
||||
if _g_dbg_pts is None or _g_dbg_vals is None:
|
||||
return 0.0
|
||||
i: sizet = 0
|
||||
while i < _g_dbg_cnt:
|
||||
for i in range(_g_dbg_cnt):
|
||||
if _g_dbg_pts[i] == ptr:
|
||||
_g_dbg_lit_found = 1
|
||||
return _g_dbg_vals[i]
|
||||
i += 1
|
||||
return 0.0
|
||||
|
||||
|
||||
@@ -1107,11 +1099,9 @@ def _fix_store_ctx(node: rawptr[AST]):
|
||||
tp_elts = ls.elts
|
||||
if tp_elts is not None:
|
||||
n: sizet = tp_elts.__len__()
|
||||
i: sizet = 0
|
||||
while i < n:
|
||||
for i in range(n):
|
||||
cur: rawptr[AST] = tp_elts.get(i)
|
||||
_fix_store_ctx(cur)
|
||||
i += 1
|
||||
elif k == ASTKind.Starred:
|
||||
st2: rawptr[Starred] = (rawptr[Starred])(node)
|
||||
_fix_store_ctx(st2.value)
|
||||
@@ -2642,13 +2632,11 @@ def _parse_type_ann(ps: rawptr[Parser]) -> rawptr[AST]:
|
||||
ac: Call* = Call*(ac_node)
|
||||
if ac.args is not None:
|
||||
acn: sizet = len(ac.args)
|
||||
aci: sizet = 0
|
||||
while aci < acn:
|
||||
for aci in range(acn):
|
||||
mk: rawptr[AST] = _MakeTAttrMarker(ps, ac.args.get(aci))
|
||||
if mk is not None:
|
||||
mods.append(mk)
|
||||
mod_count += 1
|
||||
aci += 1
|
||||
continue
|
||||
mods.append(_MakeDescriptorMarker(ps))
|
||||
mod_count += 1
|
||||
@@ -2710,13 +2698,11 @@ def _parse_type_ann(ps: rawptr[Parser]) -> rawptr[AST]:
|
||||
_advance(ps)
|
||||
ptr_level += 1
|
||||
# 嵌套构造 rawptr[base](n 层)
|
||||
li_an: int = 0
|
||||
while li_an < ptr_level:
|
||||
for li_an in range(ptr_level):
|
||||
cptr_an: rawptr[AST] = Attribute(ps.pool,
|
||||
Name(ps.pool, "t", ASTCtx.Load),
|
||||
"CPtr", ASTCtx.Load)
|
||||
base = BinOp(ps.pool, base, OpKind.BitOr, cptr_an)
|
||||
li_an += 1
|
||||
# 描述符最后粘贴:与 TPC 文本展开同形(见 _PrependDescriptorMarkers)
|
||||
if mod_count > 0:
|
||||
base = _PrependDescriptorMarkers(ps, base, mods, mod_count)
|
||||
@@ -3750,8 +3736,7 @@ def _convert_enum_bare_members(ps: rawptr[Parser], node: rawptr[ClassDef]):
|
||||
# 与 AST.append(base.vp:358 `self.children = list[rawptr[AST]](...)`)逐字同形。
|
||||
node.children = list[rawptr[AST]](ps.pool, 8)
|
||||
out: rawptr[list[rawptr[AST]]] = node.children
|
||||
i: sizet = 0
|
||||
while i < cn:
|
||||
for i in range(cn):
|
||||
stmt: rawptr[AST] = children.get(i)
|
||||
handled: int = 0
|
||||
if stmt is not None and stmt.kind() == ASTKind.Expr:
|
||||
@@ -3783,7 +3768,6 @@ def _convert_enum_bare_members(ps: rawptr[Parser], node: rawptr[ClassDef]):
|
||||
handled = 1
|
||||
if handled == 0 and stmt is not None:
|
||||
out.append(stmt)
|
||||
i += 1
|
||||
|
||||
|
||||
def _parse_define_const(ps: rawptr[Parser]) -> rawptr[AST]:
|
||||
@@ -4170,10 +4154,8 @@ def _parse_structdef(ps: rawptr[Parser]) -> rawptr[AST]:
|
||||
if merged is not None:
|
||||
if dec_list is not None:
|
||||
dn_s: sizet = len(dec_list)
|
||||
di_s: sizet = 0
|
||||
while di_s < dn_s:
|
||||
for di_s in range(dn_s):
|
||||
merged.append(dec_list.get(di_s))
|
||||
di_s += 1
|
||||
merged.append(marker)
|
||||
node: rawptr[ClassDef] = ClassDef(ps.pool, name, bases, keywords, merged, type_params)
|
||||
# owner_is_class=1:与 class 同口径(类体期间 ps.in_class_body=1)
|
||||
@@ -4182,8 +4164,7 @@ def _parse_structdef(ps: rawptr[Parser]) -> rawptr[AST]:
|
||||
chk: rawptr[list[rawptr[AST]]] = node.children
|
||||
if chk is not None:
|
||||
cn_s: sizet = len(chk)
|
||||
ci_s: sizet = 0
|
||||
while ci_s < cn_s:
|
||||
for ci_s in range(cn_s):
|
||||
it_s: rawptr[AST] = chk.get(ci_s)
|
||||
if it_s is not None and it_s.kind() == ASTKind.FunctionDef:
|
||||
fd_s: rawptr[FunctionDef] = (rawptr[FunctionDef])(it_s)
|
||||
@@ -4196,7 +4177,6 @@ def _parse_structdef(ps: rawptr[Parser]) -> rawptr[AST]:
|
||||
"若确实需要方法与虚表,请把该类型写成 class。")
|
||||
ps.error_count += 1
|
||||
break
|
||||
ci_s += 1
|
||||
_set_pos(node, lineno, col, 0, 0)
|
||||
return node
|
||||
|
||||
@@ -4802,12 +4782,10 @@ def _DesugarMagicAttribute(ps: rawptr[Parser], expr: AST*) -> AST*:
|
||||
return expr
|
||||
if cl.args is not None:
|
||||
an: sizet = len(cl.args)
|
||||
ai: sizet = 0
|
||||
while ai < an:
|
||||
for ai in range(an):
|
||||
mk: AST* = _MakeTAttrMarker(ps, cl.args.get(ai))
|
||||
if mk is not None:
|
||||
new_args.append(mk)
|
||||
ai += 1
|
||||
new_call: AST* = Call(ps.pool, c_func, new_args, None)
|
||||
_set_pos(new_call, cl.lineno, cl.col_offset, 0, 0)
|
||||
return new_call
|
||||
|
||||
+3
-9
@@ -291,8 +291,7 @@ def _kw_index_put(entry: rawptr[KwEntry]):
|
||||
h: uint64 = _kw_hash_str(entry.name)
|
||||
mask: sizet = sizet(_KW_IDX_CAP - 1)
|
||||
idx: sizet = sizet(h) & mask
|
||||
i: int = 0
|
||||
while i < _KW_IDX_CAP:
|
||||
for i in range(_KW_IDX_CAP):
|
||||
slot: sizet* = (sizet*)(t.CPtr(uint64(_kw_index) + uint64(idx * 8)))
|
||||
cur_s: sizet = slot[0]
|
||||
if cur_s == 0:
|
||||
@@ -302,7 +301,6 @@ def _kw_index_put(entry: rawptr[KwEntry]):
|
||||
if string.strcmp(cur.name, entry.name) == 0:
|
||||
return
|
||||
idx = (idx + 1) & mask
|
||||
i += 1
|
||||
|
||||
|
||||
def _kw_intern(pool: rawptr[memhub.MemManager], name: str, kw_id: int):
|
||||
@@ -337,8 +335,7 @@ def _kw_lookup(name: str) -> int:
|
||||
h: uint64 = _kw_hash_str(name)
|
||||
mask: sizet = sizet(_KW_IDX_CAP - 1)
|
||||
idx: sizet = sizet(h) & mask
|
||||
i: int = 0
|
||||
while i < _KW_IDX_CAP:
|
||||
for i in range(_KW_IDX_CAP):
|
||||
slot: sizet* = (sizet*)(t.CPtr(uint64(_kw_index) + uint64(idx * 8)))
|
||||
cur_s: sizet = slot[0]
|
||||
if cur_s == 0:
|
||||
@@ -347,7 +344,6 @@ def _kw_lookup(name: str) -> int:
|
||||
if string.strcmp(cur.name, name) == 0:
|
||||
return cur.kw_id
|
||||
idx = (idx + 1) & mask
|
||||
i += 1
|
||||
return 0
|
||||
cur2: rawptr[KwEntry] = _kw_head
|
||||
while cur2 != None:
|
||||
@@ -557,10 +553,8 @@ def token_set_str(pool: rawptr[memhub.MemManager], tok: rawptr[Token],
|
||||
buf: str = pool.alloc(length + 1)
|
||||
if buf == None:
|
||||
_ast_pool_fatal("token.str_val", length + 1)
|
||||
i: sizet = 0
|
||||
while i < length:
|
||||
for i in range(length):
|
||||
buf[i] = src[start + i]
|
||||
i += 1
|
||||
buf[length] = '\0'
|
||||
tok.str_val = buf
|
||||
|
||||
|
||||
Reference in new issue
Block a user