summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-12-12 22:54:37 +0800
committerJohn Hodge <tpg@mutabah.net>2016-12-12 22:54:37 +0800
commit382c9dd2ed03f2d5c76af24de07cd22d74e8d6dd (patch)
treeae391a3c6daa49eb86c6ea43352ae670eeb9142a /src
parent4c97c1d984eb2812fe3e9dbd4656826a54d80d9f (diff)
downloadmrust-382c9dd2ed03f2d5c76af24de07cd22d74e8d6dd.tar.gz
Trans - Enumerate through consts
Diffstat (limited to 'src')
-rw-r--r--src/trans/codegen_c.cpp1
-rw-r--r--src/trans/enumerate.cpp11
2 files changed, 9 insertions, 3 deletions
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp
index 67fbb79e..bbd3fbdc 100644
--- a/src/trans/codegen_c.cpp
+++ b/src/trans/codegen_c.cpp
@@ -1041,6 +1041,7 @@ namespace {
emit_dst(); m_of << " = " << e;
),
(BorrowOf,
+ // TODO: If the type is Borrow of a DST, do a fat assign.
emit_dst(); m_of << " = ";
if( ! ty.m_data.is_Function() )
m_of << "&";
diff --git a/src/trans/enumerate.cpp b/src/trans/enumerate.cpp
index cb63bcc8..259bee47 100644
--- a/src/trans/enumerate.cpp
+++ b/src/trans/enumerate.cpp
@@ -17,6 +17,7 @@
void Trans_Enumerate_FillFrom(TransList& out, const ::HIR::Crate& crate, const ::HIR::Function& function, TransList_Function& fcn_out, Trans_Params pp={});
void Trans_Enumerate_FillFrom(TransList& out, const ::HIR::Crate& crate, const ::HIR::Static& stat, TransList_Static& stat_out, Trans_Params pp={});
+void Trans_Enumerate_FillFrom_Literal(TransList& out, const ::HIR::Crate& crate, const ::HIR::Literal& lit, const Trans_Params& pp);
/// Enumerate trans items starting from `::main` (binary crate)
TransList Trans_Enumerate_Main(const ::HIR::Crate& crate)
@@ -98,7 +99,8 @@ namespace {
(NotFound, struct{}),
(AutoGenerate, struct{}),
(Function, const ::HIR::Function*),
- (Static, const ::HIR::Static*)
+ (Static, const ::HIR::Static*),
+ (Constant, const ::HIR::Constant*)
);
EntPtr get_ent_simplepath(const Span& sp, const ::HIR::Crate& crate, const ::HIR::SimplePath& path)
{
@@ -146,7 +148,7 @@ namespace {
return EntPtr { &e };
),
(Constant,
- //return EntPtr { &e };
+ return EntPtr { &e };
),
(Static,
return EntPtr { &e };
@@ -352,6 +354,9 @@ void Trans_Enumerate_FillFrom_Path(TransList& out, const ::HIR::Crate& crate, co
{
Trans_Enumerate_FillFrom(out,crate, *e, *ptr, mv$(sub_pp));
}
+ ),
+ (Constant,
+ Trans_Enumerate_FillFrom_Literal(out, crate, e->m_value_res, sub_pp);
)
)
}
@@ -406,7 +411,7 @@ void Trans_Enumerate_FillFrom_MIR(TransList& out, const ::HIR::Crate& crate, con
(Bytes, ),
(StaticString, ), // String
(Const,
- // TODO: Should this trigger anything?
+ Trans_Enumerate_FillFrom_Path(out,crate, ce.p, pp);
),
(ItemAddr,
Trans_Enumerate_FillFrom_Path(out,crate, ce, pp);