@@ -96,19 +96,23 @@ EnumMatchBuilder::tuple (EnumItem &variant_raw)
96
96
});
97
97
}
98
98
99
+ // TODO: Replace with `reconstruct()` instead of building these twice
100
+ auto self_variant_path = builder.variant_path (enum_path, variant_path);
101
+ auto other_variant_path = builder.variant_path (enum_path, variant_path);
102
+
99
103
auto self_pattern_items = std::unique_ptr<TupleStructItems> (
100
104
new TupleStructItemsNoRange (std::move (self_patterns)));
101
105
auto other_pattern_items = std::unique_ptr<TupleStructItems> (
102
106
new TupleStructItemsNoRange (std::move (other_patterns)));
103
107
104
108
auto self_pattern = std::unique_ptr<Pattern> (
105
109
new ReferencePattern (std::unique_ptr<Pattern> (new TupleStructPattern (
106
- variant_path, std::move (self_pattern_items))),
107
- false , false , builder.loc ));
108
- auto other_pattern = std::unique_ptr<Pattern> (
109
- new ReferencePattern (std::unique_ptr<Pattern> (new TupleStructPattern (
110
- variant_path, std::move (other_pattern_items))),
110
+ self_variant_path, std::move (self_pattern_items))),
111
111
false , false , builder.loc ));
112
+ auto other_pattern = std::unique_ptr<Pattern> (new ReferencePattern (
113
+ std::unique_ptr<Pattern> (new TupleStructPattern (
114
+ other_variant_path, std::move (other_pattern_items))),
115
+ false , false , builder.loc ));
112
116
113
117
auto tuple_items = std::make_unique<TuplePatternItemsMultiple> (
114
118
vec (std::move (self_pattern), std::move (other_pattern)));
@@ -155,16 +159,21 @@ EnumMatchBuilder::strukt (EnumItem &variant_raw)
155
159
});
156
160
}
157
161
162
+ // TODO: Replace with `reconstruct()` instead of building these twice
163
+ auto self_variant_path = builder.variant_path (enum_path, variant_path);
164
+ auto other_variant_path = builder.variant_path (enum_path, variant_path);
165
+
158
166
auto self_elts = StructPatternElements (std::move (self_fields));
159
167
auto other_elts = StructPatternElements (std::move (other_fields));
160
168
161
- auto self_pattern = std::unique_ptr<Pattern> (
162
- new ReferencePattern ( std::unique_ptr<Pattern> (new StructPattern (
163
- variant_path, builder. loc , std::move (self_elts))),
164
- false , false , builder.loc ));
169
+ auto self_pattern = std::unique_ptr<Pattern> (new ReferencePattern (
170
+ std::unique_ptr<Pattern> (new StructPattern (self_variant_path, builder. loc ,
171
+ std::move (self_elts))),
172
+ false , false , builder.loc ));
165
173
auto other_pattern = std::unique_ptr<Pattern> (
166
- new ReferencePattern (std::unique_ptr<Pattern> (new StructPattern (
167
- variant_path, builder.loc , std::move (other_elts))),
174
+ new ReferencePattern (std::unique_ptr<Pattern> (
175
+ new StructPattern (other_variant_path, builder.loc ,
176
+ std::move (other_elts))),
168
177
false , false , builder.loc ));
169
178
170
179
auto tuple_items = std::make_unique<TuplePatternItemsMultiple> (
0 commit comments