diff options
author | John Hodge <tpg@mutabah.net> | 2016-12-12 22:54:37 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-12-12 22:54:37 +0800 |
commit | 382c9dd2ed03f2d5c76af24de07cd22d74e8d6dd (patch) | |
tree | ae391a3c6daa49eb86c6ea43352ae670eeb9142a /src | |
parent | 4c97c1d984eb2812fe3e9dbd4656826a54d80d9f (diff) | |
download | mrust-382c9dd2ed03f2d5c76af24de07cd22d74e8d6dd.tar.gz |
Trans - Enumerate through consts
Diffstat (limited to 'src')
-rw-r--r-- | src/trans/codegen_c.cpp | 1 | ||||
-rw-r--r-- | src/trans/enumerate.cpp | 11 |
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); |