ExportContext::emit_trait (const HIR::Trait &trait)
{
// lookup the AST node for this
- AST::Item *item = nullptr;
- bool ok
- = mappings.lookup_ast_item (trait.get_mappings ().get_nodeid (), &item);
- rust_assert (ok);
+ AST::Item *item
+ = mappings.lookup_ast_item (trait.get_mappings ().get_nodeid ()).value ();
std::stringstream oss;
AST::Dump dumper (oss);
ExportContext::emit_function (const HIR::Function &fn)
{
// lookup the AST node for this
- AST::Item *item = nullptr;
- bool ok = mappings.lookup_ast_item (fn.get_mappings ().get_nodeid (), &item);
- rust_assert (ok);
+ AST::Item *item
+ = mappings.lookup_ast_item (fn.get_mappings ().get_nodeid ()).value ();
// is this a CFG macro or not
if (item->is_marked_for_strip ())
std::stringstream oss;
AST::Dump dumper (oss);
- AST::Item *item;
- auto ok = mappings.lookup_ast_item (macro, &item);
- rust_assert (ok);
+ AST::Item *item = mappings.lookup_ast_item (macro).value ();
dumper.go (*item);
ast_item_mappings[item->get_node_id ()] = item;
}
-bool
-Mappings::lookup_ast_item (NodeId id, AST::Item **result)
+tl::optional<AST::Item *>
+Mappings::lookup_ast_item (NodeId id)
{
auto it = ast_item_mappings.find (id);
if (it == ast_item_mappings.end ())
- return false;
+ return tl::nullopt;
- *result = it->second;
- return true;
+ return it->second;
}
HIR::ImplBlock *
bool node_is_module (NodeId query);
void insert_ast_item (AST::Item *item);
- bool lookup_ast_item (NodeId id, AST::Item **result);
+ tl::optional<AST::Item *> lookup_ast_item (NodeId id);
HIR::ImplBlock *lookup_builtin_marker ();