进行了优化,减少了上帝结构体的符号表占用
This commit is contained in:
@@ -528,7 +528,7 @@ class ExprBuiltinHandle(BaseHandle):
|
||||
type_info = Gen.var_type_info[arg_name]
|
||||
if isinstance(type_info, dict) and type_info.get('type') == 'enum':
|
||||
enum_type_name = type_info.get('name')
|
||||
if not enum_type_name and arg_name in self.Trans.SymbolTable:
|
||||
if not enum_type_name and self.Trans.SymbolTable.has(arg_name):
|
||||
TypeInfo = self.Trans.SymbolTable[arg_name]
|
||||
if TypeInfo.IsEnum:
|
||||
enum_type_name = arg_name
|
||||
@@ -537,7 +537,7 @@ class ExprBuiltinHandle(BaseHandle):
|
||||
enum_class_name = None
|
||||
if isinstance(arg.value, ast.Name):
|
||||
LastPart = arg.attr
|
||||
if LastPart in self.Trans.SymbolTable:
|
||||
if self.Trans.SymbolTable.has(LastPart):
|
||||
AttrInfo = self.Trans.SymbolTable[LastPart]
|
||||
if AttrInfo.IsEnumMember and AttrInfo.EnumName:
|
||||
enum_type_name = AttrInfo.EnumName
|
||||
@@ -552,7 +552,7 @@ class ExprBuiltinHandle(BaseHandle):
|
||||
qualified_name_under = f"{enum_class_name}_{LastPart}"
|
||||
enum_member_found = None
|
||||
for qname in (qualified_name_dot, qualified_name_under):
|
||||
if qname in self.Trans.SymbolTable:
|
||||
if self.Trans.SymbolTable.has(qname):
|
||||
info = self.Trans.SymbolTable[qname]
|
||||
if info.IsEnumMember and info.EnumName == enum_class_name:
|
||||
enum_member_found = info
|
||||
|
||||
Reference in New Issue
Block a user