Avoid a clone of Content

This commit is contained in:
Richard Feldman 2021-07-30 23:26:30 -04:00
parent d0d7721aaf
commit 402e0e739e

View file

@ -77,11 +77,11 @@ fn find_names_needed(
use crate::subs::FlatType::*; use crate::subs::FlatType::*;
while let Some((recursive, _chain)) = subs.occurs(variable) { while let Some((recursive, _chain)) = subs.occurs(variable) {
let content = subs.get_content_without_compacting(recursive).clone(); let rec_var = subs.fresh_unnamed_flex_var();
let content = subs.get_content_without_compacting(recursive);
match content { match content {
Content::Structure(FlatType::TagUnion(tags, ext_var)) => { Content::Structure(FlatType::TagUnion(tags, ext_var)) => {
let rec_var = subs.fresh_unnamed_flex_var();
let mut new_tags = MutMap::default(); let mut new_tags = MutMap::default();
for (label, args) in tags { for (label, args) in tags {
@ -94,7 +94,7 @@ fn find_names_needed(
new_tags.insert(label.clone(), new_args); new_tags.insert(label.clone(), new_args);
} }
let flat_type = FlatType::RecursiveTagUnion(rec_var, new_tags, ext_var); let flat_type = FlatType::RecursiveTagUnion(rec_var, new_tags, *ext_var);
subs.set_content(recursive, Content::Structure(flat_type)); subs.set_content(recursive, Content::Structure(flat_type));
} }
_ => panic!( _ => panic!(