aboutsummaryrefslogtreecommitdiff
path: root/src/ast_render.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-04-23 13:22:36 -0400
committerAndrew Kelley <superjoe30@gmail.com>2017-04-23 14:34:40 -0400
commit6de33ded81981554ccffc3ecbfcd5b0f628cf502 (patch)
tree520cfac3890b90d5357866a6c4b6e7e9509ee735 /src/ast_render.cpp
parent2ed47070efa5933365da724e79f6ed87d603ee27 (diff)
downloadzig-6de33ded81981554ccffc3ecbfcd5b0f628cf502.tar.gz
zig-6de33ded81981554ccffc3ecbfcd5b0f628cf502.zip
make undefined as a constant value lazy
closes #268
Diffstat (limited to 'src/ast_render.cpp')
-rw-r--r--src/ast_render.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/ast_render.cpp b/src/ast_render.cpp
index 3e939c43e5..37fb067067 100644
--- a/src/ast_render.cpp
+++ b/src/ast_render.cpp
@@ -273,6 +273,7 @@ void ast_print(FILE *f, AstNode *node, int indent) {
struct AstRender {
+ CodeGen *codegen;
int indent;
int indent_size;
FILE *f;
@@ -924,8 +925,9 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) {
}
-void ast_render(FILE *f, AstNode *node, int indent_size) {
+void ast_render(CodeGen *codegen, FILE *f, AstNode *node, int indent_size) {
AstRender ar = {0};
+ ar.codegen = codegen;
ar.f = f;
ar.indent_size = indent_size;
ar.indent = 0;
@@ -1030,15 +1032,16 @@ static void ast_render_tld_var(AstRender *ar, Buf *name, TldVar *tld_var) {
} else {
Buf buf = BUF_INIT;
buf_resize(&buf, 0);
- render_const_value(&buf, var->value);
+ render_const_value(ar->codegen, &buf, var->value);
fprintf(ar->f, "%s", buf_ptr(&buf));
}
fprintf(ar->f, ";\n");
}
-void ast_render_decls(FILE *f, int indent_size, ImportTableEntry *import) {
+void ast_render_decls(CodeGen *codegen, FILE *f, int indent_size, ImportTableEntry *import) {
AstRender ar = {0};
+ ar.codegen = codegen;
ar.f = f;
ar.indent_size = indent_size;
ar.indent = 0;