Skip to content

Commit d69dd65

Browse files
Merge #1176
1176: Keep `SimplePath{Segment}`s in mappings r=CohenArthur a=CohenArthur Addresses #1159 Co-authored-by: Arthur Cohen <[email protected]>
2 parents 8b2e6da + 6f07a76 commit d69dd65

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

gcc/rust/util/rust-hir-map.cc

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,56 @@ Mappings::lookup_hir_path_expr_seg (CrateNum crateNum, HirId id)
426426
return iy->second;
427427
}
428428

429+
void
430+
Mappings::insert_simple_path_segment (CrateNum crateNum, HirId id,
431+
AST::SimplePathSegment *path)
432+
{
433+
rust_assert (lookup_simple_path_segment (crateNum, id) == nullptr);
434+
435+
astSimplePathSegmentMappings[crateNum][id] = path;
436+
nodeIdToHirMappings[crateNum][path->get_node_id ()] = id;
437+
insert_location (crateNum, id, path->get_locus ());
438+
}
439+
440+
AST::SimplePathSegment *
441+
Mappings::lookup_simple_path_segment (CrateNum crateNum, HirId id)
442+
{
443+
auto it = astSimplePathSegmentMappings.find (crateNum);
444+
if (it == astSimplePathSegmentMappings.end ())
445+
return nullptr;
446+
447+
auto iy = it->second.find (id);
448+
if (iy == it->second.end ())
449+
return nullptr;
450+
451+
return iy->second;
452+
}
453+
454+
void
455+
Mappings::insert_simple_path (CrateNum crateNum, HirId id,
456+
AST::SimplePath *path)
457+
{
458+
rust_assert (lookup_simple_path (crateNum, id) == nullptr);
459+
460+
astSimplePathMappings[crateNum][id] = path;
461+
nodeIdToHirMappings[crateNum][path->get_node_id ()] = id;
462+
insert_location (crateNum, id, path->get_locus ());
463+
}
464+
465+
AST::SimplePath *
466+
Mappings::lookup_simple_path (CrateNum crateNum, HirId id)
467+
{
468+
auto it = astSimplePathMappings.find (crateNum);
469+
if (it == astSimplePathMappings.end ())
470+
return nullptr;
471+
472+
auto iy = it->second.find (id);
473+
if (iy == it->second.end ())
474+
return nullptr;
475+
476+
return iy->second;
477+
}
478+
429479
void
430480
Mappings::insert_hir_generic_param (CrateNum crateNum, HirId id,
431481
HIR::GenericParam *param)

gcc/rust/util/rust-hir-map.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,14 @@ class Mappings
147147
HIR::PathExprSegment *expr);
148148
HIR::PathExprSegment *lookup_hir_path_expr_seg (CrateNum crateNum, HirId id);
149149

150+
void insert_simple_path_segment (CrateNum crateNum, HirId id,
151+
AST::SimplePathSegment *path);
152+
AST::SimplePathSegment *lookup_simple_path_segment (CrateNum crateNum,
153+
HirId id);
154+
155+
void insert_simple_path (CrateNum crateNum, HirId id, AST::SimplePath *path);
156+
AST::SimplePath *lookup_simple_path (CrateNum crateNum, HirId id);
157+
150158
void insert_hir_generic_param (CrateNum crateNum, HirId id,
151159
HIR::GenericParam *expr);
152160
HIR::GenericParam *lookup_hir_generic_param (CrateNum crateNum, HirId id);
@@ -330,6 +338,9 @@ class Mappings
330338
std::map<CrateNum, std::map<HirId, HIR::TraitItem *>> hirTraitItemMappings;
331339
std::map<CrateNum, std::map<HirId, HIR::ExternalItem *>>
332340
hirExternItemMappings;
341+
std::map<CrateNum, std::map<HirId, AST::SimplePath *>> astSimplePathMappings;
342+
std::map<CrateNum, std::map<HirId, AST::SimplePathSegment *>>
343+
astSimplePathSegmentMappings;
333344
std::map<CrateNum, std::map<HirId, HIR::PathExprSegment *>>
334345
hirPathSegMappings;
335346
std::map<CrateNum, std::map<HirId, HIR::GenericParam *>>

0 commit comments

Comments
 (0)