aboutsummaryrefslogtreecommitdiff
path: root/src/parsec.cpp
diff options
context:
space:
mode:
authordimenus <ryan.saunderson88@gmail.com>2017-11-13 16:37:46 -0600
committerRyan Saunderson <ryan.saunderson88@gmail.com>2017-11-13 20:10:36 -0600
commitb3b4786c245d7e49241ab65a56af0e4ac83d080b (patch)
tree61dc9f6cb9ab3cac21e4d6997ba2e978173ad11c /src/parsec.cpp
parentdf89291d1ca04a5891dd48ea5f6d1a99b6006bcb (diff)
downloadzig-b3b4786c245d7e49241ab65a56af0e4ac83d080b.tar.gz
zig-b3b4786c245d7e49241ab65a56af0e4ac83d080b.zip
Fixed duplicate decl detection for typedefs/enums
Diffstat (limited to 'src/parsec.cpp')
-rw-r--r--src/parsec.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/parsec.cpp b/src/parsec.cpp
index 01334fb24c..fbd3f21948 100644
--- a/src/parsec.cpp
+++ b/src/parsec.cpp
@@ -2572,11 +2572,10 @@ static AstNode *resolve_typdef_as_builtin(Context *c, const TypedefNameDecl *typ
}
static AstNode *resolve_typedef_decl(Context *c, const TypedefNameDecl *typedef_decl) {
- auto existing_entry = c->decl_table.maybe_get((void*)typedef_decl);
+ auto existing_entry = c->decl_table.maybe_get((void*)typedef_decl->getCanonicalDecl());
if (existing_entry) {
return existing_entry->value;
}
-
QualType child_qt = typedef_decl->getUnderlyingType();
Buf *type_name = buf_create_from_str(decl_name(typedef_decl));
@@ -2619,7 +2618,7 @@ static AstNode *resolve_typedef_decl(Context *c, const TypedefNameDecl *typedef_
add_global_var(c, type_name, type_node);
AstNode *symbol_node = trans_create_node_symbol(c, type_name);
- c->decl_table.put(typedef_decl, symbol_node);
+ c->decl_table.put(typedef_decl->getCanonicalDecl(), symbol_node);
return symbol_node;
}
@@ -2745,6 +2744,7 @@ static AstNode *resolve_enum_decl(Context *c, const EnumDecl *enum_decl) {
AstNode *symbol_node = trans_create_node_symbol(c, full_type_name);
add_global_weak_alias(c, bare_name, full_type_name);
add_global_var(c, full_type_name, enum_node);
+ c->decl_table.put(enum_decl->getCanonicalDecl(), symbol_node);
return symbol_node;
}
}