From 0326bbe7f9c52d49a79627a2605e9390e07d0fd7 Mon Sep 17 00:00:00 2001 From: Sam Vervaeck Date: Mon, 5 Jun 2023 15:53:24 +0200 Subject: [PATCH] Record variant constructors for future use --- include/bolt/CST.hpp | 1 + src/CST.cc | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) 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: