aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/util/rust-hir-map.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/rust/util/rust-hir-map.h')
-rw-r--r--gcc/rust/util/rust-hir-map.h30
1 files changed, 25 insertions, 5 deletions
diff --git a/gcc/rust/util/rust-hir-map.h b/gcc/rust/util/rust-hir-map.h
index 8929ca4..7fc8777 100644
--- a/gcc/rust/util/rust-hir-map.h
+++ b/gcc/rust/util/rust-hir-map.h
@@ -20,6 +20,7 @@
#define RUST_HIR_MAP_H
#include "rust-system.h"
+#include "rust-location.h"
#include "rust-ast-full-decls.h"
#include "rust-hir-full-decls.h"
@@ -40,11 +41,11 @@ typedef uint64_t DefId;
#define DEF_ID_CRATE_MASK 0xFFFFFFFF00000000
#define DEF_ID_LOCAL_DEF_MASK 0x00000000FFFFFFFF
-#define UNKNOWN_CREATENUM ((uint32_t) (-1))
-#define UNKNOWN_NODEID ((uint32_t) (-1))
-#define UNKNOWN_HIRID ((uint32_t) (-1))
-#define UNKNOWN_LOCAL_DEFID ((uint32_t) (-1))
-#define UNKNOWN_DEFID ((uint64_t) (-1))
+#define UNKNOWN_CREATENUM ((uint32_t) (0))
+#define UNKNOWN_NODEID ((uint32_t) (0))
+#define UNKNOWN_HIRID ((uint32_t) (0))
+#define UNKNOWN_LOCAL_DEFID ((uint32_t) (0))
+#define UNKNOWN_DEFID ((uint64_t) (0))
namespace Analysis {
@@ -86,7 +87,10 @@ public:
NodeId get_next_node_id () { return get_next_node_id (get_current_crate ()); }
NodeId get_next_node_id (CrateNum crateNum);
+
+ HirId get_next_hir_id () { return get_next_hir_id (get_current_crate ()); }
HirId get_next_hir_id (CrateNum crateNum);
+
LocalDefId get_next_localdef_id (CrateNum crateNum);
AST::Crate *get_ast_crate (CrateNum crateNum);
@@ -108,9 +112,21 @@ public:
void insert_hir_expr (CrateNum crateNum, HirId id, HIR::Expr *expr);
HIR::Expr *lookup_hir_expr (CrateNum crateNum, HirId id);
+ void insert_hir_type (CrateNum crateNum, HirId id, HIR::Type *type);
+ HIR::Type *lookup_hir_type (CrateNum crateNum, HirId id);
+
void walk_local_defids_for_crate (CrateNum crateNum,
std::function<bool (HIR::Item *)> cb);
+ bool lookup_node_to_hir (CrateNum crate, NodeId id, HirId *ref);
+
+ void insert_location (CrateNum crate, HirId id, Location locus);
+ Location lookup_location (CrateNum crate, HirId id);
+ Location lookup_location (HirId id)
+ {
+ return lookup_location (get_current_crate (), id);
+ }
+
private:
Mappings ();
@@ -127,8 +143,12 @@ private:
std::map<DefId, HIR::Item *> defIdMappings;
std::map<CrateNum, std::map<LocalDefId, HIR::Item *> > localDefIdMappings;
std::map<CrateNum, std::map<HirId, HIR::Item *> > hirItemMappings;
+ std::map<CrateNum, std::map<HirId, HIR::Type *> > hirTypeMappings;
std::map<CrateNum, std::map<HirId, HIR::Expr *> > hirExprMappings;
+ // location info
+ std::map<CrateNum, std::map<NodeId, Location> > locations;
+
// reverse mappings
std::map<CrateNum, std::map<NodeId, HirId> > nodeIdToHirMappings;
};