aboutsummaryrefslogtreecommitdiff
path: root/src/analyze.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-09-05 03:11:59 -0400
committerAndrew Kelley <superjoe30@gmail.com>2017-09-05 03:11:59 -0400
commitc3362c1cb63ff8d8e79a16c76a574bbbd488967c (patch)
tree47e5c4e90947056a5b5c3e42c87cad1d664dd443 /src/analyze.cpp
parent87970920c493de2f2d4606dfef92bb847e07105f (diff)
downloadzig-c3362c1cb63ff8d8e79a16c76a574bbbd488967c.tar.gz
zig-c3362c1cb63ff8d8e79a16c76a574bbbd488967c.zip
fix void return node and param name nodes, fix dupe macros
all tests passing
Diffstat (limited to 'src/analyze.cpp')
-rw-r--r--src/analyze.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp
index b3e9601102..322bb2f4ba 100644
--- a/src/analyze.cpp
+++ b/src/analyze.cpp
@@ -1180,7 +1180,8 @@ static TypeTableEntry *analyze_fn_type(CodeGen *g, AstNode *proto_node, Scope *c
}
}
- fn_type_id.return_type = analyze_type_expr(g, child_scope, fn_proto->return_type);
+ fn_type_id.return_type = (fn_proto->return_type == nullptr) ?
+ g->builtin_types.entry_void : analyze_type_expr(g, child_scope, fn_proto->return_type);
switch (fn_type_id.return_type->id) {
case TypeTableEntryIdInvalid:
@@ -2056,7 +2057,7 @@ static void resolve_decl_fn(CodeGen *g, TldFn *tld_fn) {
for (size_t i = 0; i < fn_proto->params.length; i += 1) {
AstNode *param_node = fn_proto->params.at(i);
assert(param_node->type == NodeTypeParamDecl);
- if (buf_len(param_node->data.param_decl.name) == 0) {
+ if (param_node->data.param_decl.name == nullptr) {
add_node_error(g, param_node, buf_sprintf("missing parameter name"));
}
}
@@ -2268,7 +2269,7 @@ void scan_decls(CodeGen *g, ScopeDecls *decls_scope, AstNode *node) {
{
// if the name is missing, we immediately announce an error
Buf *fn_name = node->data.fn_proto.name;
- if (buf_len(fn_name) == 0) {
+ if (fn_name == nullptr) {
add_node_error(g, node, buf_sprintf("missing function name"));
break;
}
@@ -2950,6 +2951,9 @@ void define_local_param_variables(CodeGen *g, FnTableEntry *fn_table_entry, Vari
} else {
param_name = buf_sprintf("arg%" ZIG_PRI_usize "", i);
}
+ if (param_name == nullptr) {
+ continue;
+ }
TypeTableEntry *param_type = param_info->type;
bool is_noalias = param_info->is_noalias;