Fix panic when extracting struct

This commit is contained in:
Aleksey Kladov 2020-11-09 16:40:41 +01:00
parent 6b92cc4384
commit 4a16c228e7
2 changed files with 34 additions and 3 deletions

View file

@ -277,10 +277,11 @@ impl AssistBuilder {
algo::diff(old.syntax(), new.syntax()).into_text_edit(&mut self.edit)
}
pub(crate) fn rewrite(&mut self, rewriter: SyntaxRewriter) {
let node = rewriter.rewrite_root().unwrap();
if let Some(node) = rewriter.rewrite_root() {
let new = rewriter.rewrite(&node);
algo::diff(&node, &new).into_text_edit(&mut self.edit);
}
}
fn finish(mut self) -> SourceChange {
self.commit();

View file

@ -378,6 +378,36 @@ use crate::E;
fn f() {
let e = E::V(V(9, 2));
}
"#,
)
}
#[test]
fn test_several_files_record() {
// FIXME: this should fix the usage as well!
check_assist(
extract_struct_from_enum_variant,
r#"
//- /main.rs
enum E {
<|>V { i: i32, j: i32 }
}
mod foo;
//- /foo.rs
use crate::E;
fn f() {
let e = E::V { i: 9, j: 2 };
}
"#,
r#"
struct V{ pub i: i32, pub j: i32 }
enum E {
V(V)
}
mod foo;
"#,
)
}