diff --git a/include/bolt/CST.hpp b/include/bolt/CST.hpp index d4e6cbdfb..5efc4e968 100644 --- a/include/bolt/CST.hpp +++ b/include/bolt/CST.hpp @@ -252,6 +252,7 @@ namespace bolt { Var, Class, Type, + Constructor, }; class Scope { diff --git a/src/CST.cc b/src/CST.cc index dc5a6705e..2126333b3 100644 --- a/src/CST.cc +++ b/src/CST.cc @@ -140,6 +140,24 @@ namespace bolt { { auto Decl = static_cast(X); addSymbol(Decl->Name->getCanonicalText(), Decl, SymbolKind::Type); + for (auto Member: Decl->Members) { + switch (Member->getKind()) { + case NodeKind::TupleVariantDeclarationMember: + { + auto T = static_cast(Member); + addSymbol(T->Name->getCanonicalText(), Decl, SymbolKind::Constructor); + break; + } + case NodeKind::RecordVariantDeclarationMember: + { + auto R = static_cast(Member); + addSymbol(R->Name->getCanonicalText(), Decl, SymbolKind::Constructor); + break; + } + default: + ZEN_UNREACHABLE + } + } break; } default: