From da300aa9c352e9fa4a99b2368d0268be834bfa81 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 13 Feb 2018 18:01:42 +0000 Subject: Fix `enum #export` does not work with `export` #185 --- src/checker.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/checker.cpp') diff --git a/src/checker.cpp b/src/checker.cpp index d0495e2d3..941ae09b0 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -2424,7 +2424,16 @@ void check_add_export_decl(Checker *c, AstNodeExportDecl *ed) { // NOTE(bill): Add imported entities to this file's scope for_array(elem_index, scope->elements.entries) { Entity *e = scope->elements.entries[elem_index].value; + String name = e->token.string; if (e->scope == parent_scope) continue; + DeclInfo *d = e->decl_info; + // NOTE(bill): The enum #export must be evaluated before use + if (d != nullptr && d->init_expr != nullptr) { + AstNode *expr = unparen_expr(d->init_expr); + if (expr->kind == AstNode_EnumType && expr->EnumType.is_export) { + check_entity_decl(c, e, d, nullptr); + } + } if (is_entity_kind_exported(e->kind)) { add_entity(c, parent_scope, e->identifier, e); -- cgit v1.2.3