diff options
| author | Sahnvour <sahnvour@pm.me> | 2019-09-21 23:29:55 +0200 |
|---|---|---|
| committer | Sahnvour <sahnvour@pm.me> | 2019-11-24 21:33:58 +0100 |
| commit | 696567d9d7870e5bf640186193fe0b7fbccdb6b6 (patch) | |
| tree | fc6318964c8536666512c9ae8f97c3a626ebadc2 /src/analyze.cpp | |
| parent | 912c1c24c32799c63949fdf466fccd31f84a1aa1 (diff) | |
| download | zig-696567d9d7870e5bf640186193fe0b7fbccdb6b6.tar.gz zig-696567d9d7870e5bf640186193fe0b7fbccdb6b6.zip | |
export: check variable type
also fixed existing occurrences
Diffstat (limited to 'src/analyze.cpp')
| -rw-r--r-- | src/analyze.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp index 0a8b32dca7..97f1fd5227 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -3773,6 +3773,16 @@ ZigVar *add_variable(CodeGen *g, AstNode *source_node, Scope *parent_scope, Buf return variable_entry; } +static void validate_export_var_type(CodeGen *g, ZigType* type, AstNode *source_node) { + switch (type->id) { + case ZigTypeIdMetaType: + add_node_error(g, source_node, buf_sprintf("cannot export variable of type 'type'")); + break; + default: + break; + } +} + static void resolve_decl_var(CodeGen *g, TldVar *tld_var, bool allow_lazy) { AstNode *source_node = tld_var->base.source_node; AstNodeVariableDeclaration *var_decl = &source_node->data.variable_declaration; @@ -3862,6 +3872,7 @@ static void resolve_decl_var(CodeGen *g, TldVar *tld_var, bool allow_lazy) { } if (is_export) { + validate_export_var_type(g, type, source_node); add_var_export(g, tld_var->var, tld_var->var->name, GlobalLinkageIdStrong); } |
