Skip to content

Commit 836d19e

Browse files
committed
codegen: fix enum generation
1 parent 8bc1203 commit 836d19e

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

bsc/codegen/__init__.py

+14-4
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,13 @@ def gen_enum_decl(self, decl):
102102
self.cur_block = LuaBlock()
103103
for i, f in enumerate(decl.fields):
104104
self.cur_block.add_stmt(
105-
LuaAssignment([LuaSelector(LuaIdent(decl.name), f.name)],
106-
[LuaNumberLit(str(i))], False)
105+
LuaAssignment([LuaIdent(f.name)], [LuaNumberLit(str(i))])
107106
)
108107
self.switch_cur_sym(decl.sym)
109108
self.gen_decls(decl.decls)
110-
self.export_public_symbols(decl.sym)
109+
self.export_public_symbols(
110+
decl.sym, custom_fields = [f.name for f in decl.fields]
111+
)
111112
self.switch_cur_sym()
112113
old_block.add_stmt(self.cur_block)
113114
self.cur_block = old_block
@@ -260,13 +261,22 @@ def gen_expr(self, expr):
260261
self.cur_block.add_stmt(LuaReturn(ret_expr))
261262
return LuaSkip()
262263

263-
def export_public_symbols(self, decl_sym, return_table = False):
264+
def export_public_symbols(
265+
self, decl_sym, return_table = False, custom_fields = []
266+
):
264267
exported_fields = []
268+
269+
for custom_field in custom_fields:
270+
exported_fields.append(
271+
LuaTableField(LuaIdent(custom_field), LuaIdent(custom_field))
272+
)
273+
265274
for sym in decl_sym.scope.syms:
266275
if sym.access_modifier.is_public():
267276
exported_fields.append(
268277
LuaTableField(LuaIdent(sym.name), LuaIdent(sym.name))
269278
)
279+
270280
if return_table:
271281
self.cur_block.add_stmt(LuaReturn(LuaTable(exported_fields)))
272282
else:

0 commit comments

Comments
 (0)