diff --git a/App/lib/core/Gen/Func/FuncGenBase.vp b/App/lib/core/Gen/Func/FuncGenBase.vp index 1b80bf8..e9ecf13 100644 --- a/App/lib/core/Gen/Func/FuncGenBase.vp +++ b/App/lib/core/Gen/Func/FuncGenBase.vp @@ -56,8 +56,11 @@ novirtual class FuncGenBase(CallGenBase.CallGenBase): c_name: ast.Name* = ast.Name*(func_attr.value) if c_name.id is None: continue if string.strcmp(c_name.id, "c") != 0: continue - imp_c: int = self.Gen.ImportsGen.is_module_imported(imported_modules, "c") - if imp_c == 0: continue + # 不要求 `import c`:`@__attribute__(...)` 会被 ast/parser.vp(_DesugarMagicAttribute) + # 脱糖成 `@c.Attribute(...)`,这里的 `c.` 前缀是编译器自己产生的(用户写的是 + # `@__attribute__`,并非 `@c.Attribute`)。若在此要求 `import c`,用户明明没引入 c + # 就会把整条装饰器静默丢弃(`stackrealign`/`always_inline` 等函数属性全失效)。 + # extract_func_section 本就没有这个守卫,二者保持一致。 # Iterate args and extract attrs if call_node.args is None: continue