feat(switch): 新增 switch 语句并禁止 match 内 fallthrough

- MatchGenMixin:case 体按 node.is_switch 置 _in_switch_case;_has_no_break 只认 FallThrough 节点(去掉 c.NoBreak() 兼容路径)
- StmtGenDeclMixin:translate_fallthrough 只在 switch 的 case 体内合法,match/switch 之外 fail-fast
- Translator:_in_match_case 更名 _in_switch_case(语义 = 当前 case 体属于 switch)
- FuncGenDef / FuncGenMixin:函数体 / 嵌套函数 / lambda 入口隔离并恢复 _in_switch_case
- 因 match 改为硬关键字,重命名同名局部变量 match -> Matched(StubMergerStore / ImportsGenMixin / ExprGenAttr / CallGenBase)
This commit is contained in:
TermiNexus committed 2026-10-02 23:15:43 +08:00
1 parent 38860a6313
commit fabd92adc7
9 files changed
+78 -84

No files matched your search

+6 -6
View File
@@ -554,14 +554,14 @@ def LookupSha1ByAlias(from_imports: str, alias: str) -> str:
local_len: sizet = colon - ci
if colon < total_len and from_imports[colon] == ':' and local_len == alias_len:
# 比较 local_name == alias
match: int = 1
Matched: int = 1
li: sizet = 0
while li < alias_len:
if from_imports[ci + li] != alias[li]:
match = 0
Matched = 0
break
li += 1
if match == 1:
if Matched == 1:
# 提取 module(colon+1 到下一个 ':' 或空格)
m_start: sizet = colon + 1
m_end: sizet = m_start
@@ -609,14 +609,14 @@ def LookupModNameByAlias(from_imports: str, alias: str) -> str:
local_len: sizet = colon - ci
if colon < total_len and from_imports[colon] == ':' and local_len == alias_len:
# 比较 local_name == alias
match: int = 1
Matched: int = 1
li: sizet = 0
while li < alias_len:
if from_imports[ci + li] != alias[li]:
match = 0
Matched = 0
break
li += 1
if match == 1:
if Matched == 1:
# 提取 module(colon+1 到下一个 ':' 或空格)
m_start: sizet = colon + 1
m_end: sizet = m_start