aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2016-01-24 14:51:47 -0700
committerAndrew Kelley <superjoe30@gmail.com>2016-01-24 14:51:47 -0700
commitca7b85b32e26acfd716c02047966254a34cd2237 (patch)
tree85457f08b9cd94e9fb23e73240a7a6a79478e325 /src/codegen.cpp
parent5c18826240fe983a30a9de6e04d3848643db7cf6 (diff)
downloadzig-ca7b85b32e26acfd716c02047966254a34cd2237.tar.gz
zig-ca7b85b32e26acfd716c02047966254a34cd2237.zip
fix number literal implicit cast
Diffstat (limited to 'src/codegen.cpp')
-rw-r--r--src/codegen.cpp20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp
index be96fe1b9f..10395dd892 100644
--- a/src/codegen.cpp
+++ b/src/codegen.cpp
@@ -1239,14 +1239,20 @@ static LLVMValueRef gen_bin_op_expr(CodeGen *g, AstNode *node) {
static LLVMValueRef gen_return_expr(CodeGen *g, AstNode *node) {
assert(node->type == NodeTypeReturnExpr);
AstNode *param_node = node->data.return_expr.expr;
- if (param_node) {
- LLVMValueRef value = gen_expr(g, param_node);
+ assert(param_node);
- add_debug_source_node(g, node);
- return LLVMBuildRet(g->builder, value);
- } else {
- add_debug_source_node(g, node);
- return LLVMBuildRetVoid(g->builder);
+ switch (node->data.return_expr.kind) {
+ case ReturnKindUnconditional:
+ {
+ LLVMValueRef value = gen_expr(g, param_node);
+
+ add_debug_source_node(g, node);
+ return LLVMBuildRet(g->builder, value);
+ }
+ case ReturnKindError:
+ zig_panic("TODO");
+ case ReturnKindMaybe:
+ zig_panic("TODO");
}
}