@@ -61,8 +61,13 @@ ASTLoweringPattern::visit (AST::TupleStructPattern &pattern)
61
61
break ;
62
62
}
63
63
64
+ auto crate_num = mappings->get_current_crate ();
65
+ Analysis::NodeMapping mapping (crate_num, pattern.get_node_id (),
66
+ mappings->get_next_hir_id (crate_num),
67
+ UNKNOWN_LOCAL_DEFID);
68
+
64
69
translated = new HIR::TupleStructPattern (
65
- *path, std::unique_ptr<HIR::TupleStructItems> (lowered));
70
+ mapping, *path, std::unique_ptr<HIR::TupleStructItems> (lowered));
66
71
}
67
72
68
73
void
@@ -96,19 +101,38 @@ ASTLoweringPattern::visit (AST::StructPattern &pattern)
96
101
AST::StructPatternFieldIdent &ident
97
102
= static_cast <AST::StructPatternFieldIdent &> (*field.get ());
98
103
104
+ auto crate_num = mappings->get_current_crate ();
105
+ Analysis::NodeMapping mapping (crate_num, ident.get_node_id (),
106
+ mappings->get_next_hir_id (
107
+ crate_num),
108
+ UNKNOWN_LOCAL_DEFID);
109
+
99
110
f = new HIR::StructPatternFieldIdent (
100
- ident.get_identifier (), ident.is_ref (),
111
+ mapping, ident.get_identifier (), ident.is_ref (),
101
112
ident.is_mut () ? Mutability::Mut : Mutability::Imm,
102
113
ident.get_outer_attrs (), ident.get_locus ());
103
114
}
104
115
break ;
105
116
}
106
117
118
+ // insert the reverse mappings and locations
119
+ auto crate_num = f->get_mappings ().get_crate_num ();
120
+ auto field_id = f->get_mappings ().get_hirid ();
121
+ auto field_node_id = f->get_mappings ().get_nodeid ();
122
+ mappings->insert_location (crate_num, field_id, f->get_locus ());
123
+ mappings->insert_node_to_hir (crate_num, field_node_id, field_id);
124
+
125
+ // add it to the lowered fields list
107
126
fields.push_back (std::unique_ptr<HIR::StructPatternField> (f));
108
127
}
109
128
129
+ auto crate_num = mappings->get_current_crate ();
130
+ Analysis::NodeMapping mapping (crate_num, pattern.get_node_id (),
131
+ mappings->get_next_hir_id (crate_num),
132
+ UNKNOWN_LOCAL_DEFID);
133
+
110
134
HIR::StructPatternElements elems (std::move (fields));
111
- translated = new HIR::StructPattern (*path, std::move (elems));
135
+ translated = new HIR::StructPattern (mapping, *path, std::move (elems));
112
136
}
113
137
114
138
} // namespace HIR
0 commit comments