#include "optional.h"
#include "rust-ast-full.h"
+#include "rust-diagnostics.h"
#include "rust-hir-map.h"
#include "rust-late-name-resolver-2.0.h"
#include "rust-default-resolver.h"
Definition (resolved->get_node_id ()));
}
+void
+Late::visit (AST::LangItemPath &type)
+{
+ auto &mappings = Rust::Analysis::Mappings::get ();
+ auto lang_item = mappings.lookup_lang_item_node (type.get_lang_item_kind ());
+
+ if (!lang_item)
+ {
+ rust_fatal_error (
+ type.get_locus (), "use of undeclared lang item %qs",
+ LangItem::ToString (type.get_lang_item_kind ()).c_str ());
+ return;
+ }
+
+ ctx.map_usage (Usage (type.get_node_id ()), Definition (lang_item.value ()));
+
+ DefaultResolver::visit (type);
+}
+
void
Late::visit (AST::TypePath &type)
{
// resolutions
void visit (AST::IdentifierExpr &) override;
void visit (AST::PathInExpression &) override;
+ void visit (AST::LangItemPath &) override;
void visit (AST::TypePath &) override;
void visit (AST::StructExprStruct &) override;
void visit (AST::StructExprStructBase &) override;