diff options
| author | gingerBill <bill@gingerbill.org> | 2023-09-06 17:33:38 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2023-09-06 17:33:38 +0100 |
| commit | aaaff9b66ca10edd9cf76bb24463a7b16095325e (patch) | |
| tree | c984778e1b98bf8c1ebc4728fc6290202091f050 /src/checker.cpp | |
| parent | c660b43105f34d54192527f2d052346213702dfa (diff) | |
Fix bug: Disallow non-specialized polymorphic in typeid assignment
Diffstat (limited to 'src/checker.cpp')
| -rw-r--r-- | src/checker.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/checker.cpp b/src/checker.cpp index a8efa39ab..18d403d80 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -1922,6 +1922,12 @@ gb_internal void add_type_info_type_internal(CheckerContext *c, Type *t) { for_array(i, bt->Union.variants) { add_type_info_type_internal(c, bt->Union.variants[i]); } + if (bt->Union.scope != nullptr) { + for (auto const &entry : bt->Union.scope->elements) { + Entity *e = entry.value; + add_type_info_type_internal(c, e->type); + } + } break; case Type_Struct: @@ -2265,7 +2271,6 @@ gb_internal void add_dependency_to_set(Checker *c, Entity *entity) { if (decl == nullptr) { return; } - for (Type *t : decl->type_info_deps) { add_min_dep_type_info(c, t); } |