summaryrefslogtreecommitdiff
path: root/src/trans/monomorphise.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/trans/monomorphise.cpp')
-rw-r--r--src/trans/monomorphise.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/trans/monomorphise.cpp b/src/trans/monomorphise.cpp
index 50924e2f..6c331d9c 100644
--- a/src/trans/monomorphise.cpp
+++ b/src/trans/monomorphise.cpp
@@ -376,7 +376,8 @@ void Trans_Monomorphise_List(const ::HIR::Crate& crate, TransList& list)
}
// Also do constants and statics (stored in where?)
- for(auto& ent : list.m_constants)
+ // - NOTE: Done in reverse order, because consteval needs used constants to be evaluated
+ for(auto& ent : reverse(list.m_constants))
{
const auto& path = ent.first;
const auto& pp = ent.second->pp;
@@ -396,6 +397,7 @@ void Trans_Monomorphise_List(const ::HIR::Crate& crate, TransList& list)
ms.pp_impl = &pp.pp_impl;
ms.pp_method = &pp.pp_method;
auto new_lit = eval.evaluate_constant(path, c.m_value, ::std::move(ty), ::std::move(ms));
+ ASSERT_BUG(Span(), !new_lit.is_Defer(), "Result of evaluating " << path << " was still Defer");
// 2. Store evaluated HIR::Literal in c.m_monomorph_cache
c.m_monomorph_cache.insert(::std::make_pair( path.clone(), ::std::move(new_lit) ));
}