-use crate::{
- assist_context::{AssistContext, Assists},
- AssistId,
-};
use ide_db::helpers::FamousDefs;
use itertools::Itertools;
use stdx::format_to;
use syntax::{
- ast::{self, GenericParamsOwner, Impl, NameOwner, TypeBoundsOwner},
+ ast::{self, HasGenericParams, HasName, HasTypeBounds, Impl},
AstNode,
};
+use crate::{
+ assist_context::{AssistContext, Assists},
+ AssistId,
+};
+
// Assist: generate_default_from_new
//
// Generates default implementation from new method.
#[cfg(test)]
mod tests {
- use ide_db::helpers::FamousDefs;
-
use crate::tests::{check_assist, check_assist_not_applicable};
use super::*;
#[test]
fn generate_default() {
- check_pass(
+ check_assist(
+ generate_default_from_new,
r#"
+//- minicore: default
struct Example { _inner: () }
impl Example {
#[test]
fn generate_default2() {
- check_pass(
+ check_assist(
+ generate_default_from_new,
r#"
+//- minicore: default
struct Test { value: u32 }
impl Test {
#[test]
fn new_function_with_generic() {
- check_pass(
+ check_assist(
+ generate_default_from_new,
r#"
+//- minicore: default
pub struct Foo<T> {
_bar: *mut T,
}
#[test]
fn new_function_with_generics() {
- check_pass(
+ check_assist(
+ generate_default_from_new,
r#"
+//- minicore: default
pub struct Foo<T, B> {
_tars: *mut T,
_bar: *mut B,
#[test]
fn new_function_with_generic_and_bound() {
- check_pass(
+ check_assist(
+ generate_default_from_new,
r#"
+//- minicore: default
pub struct Foo<T> {
t: T,
}
#[test]
fn new_function_with_generics_and_bounds() {
- check_pass(
+ check_assist(
+ generate_default_from_new,
r#"
+//- minicore: default
pub struct Foo<T, B> {
_tars: T,
_bar: B,
#[test]
fn new_function_with_generic_and_where() {
- check_pass(
+ check_assist(
+ generate_default_from_new,
r#"
+//- minicore: default
pub struct Foo<T> {
t: T,
}
#[test]
fn new_function_with_generics_and_wheres() {
- check_pass(
+ check_assist(
+ generate_default_from_new,
r#"
+//- minicore: default
pub struct Foo<T, B> {
_tars: T,
_bar: B,
#[test]
fn new_function_with_parameters() {
cov_mark::check!(new_function_with_parameters);
- check_not_applicable(
+ check_assist_not_applicable(
+ generate_default_from_new,
r#"
+//- minicore: default
struct Example { _inner: () }
impl Example {
#[test]
fn other_function_than_new() {
cov_mark::check!(other_function_than_new);
- check_not_applicable(
+ check_assist_not_applicable(
+ generate_default_from_new,
r#"
struct Example { _inner: () }
#[test]
fn default_block_is_already_present() {
cov_mark::check!(default_block_is_already_present);
- check_not_applicable(
+ check_assist_not_applicable(
+ generate_default_from_new,
r#"
+//- minicore: default
struct Example { _inner: () }
impl Example {
#[test]
fn standalone_new_function() {
- check_not_applicable(
+ check_assist_not_applicable(
+ generate_default_from_new,
r#"
fn n$0ew() -> u32 {
0
#[test]
fn multiple_struct_blocks() {
- check_pass(
+ check_assist(
+ generate_default_from_new,
r#"
+//- minicore: default
struct Example { _inner: () }
struct Test { value: u32 }
#[test]
fn when_struct_is_after_impl() {
- check_pass(
+ check_assist(
+ generate_default_from_new,
r#"
+//- minicore: default
impl Example {
pub fn $0new() -> Self {
Self { _inner: () }
#[test]
fn struct_in_module() {
- check_pass(
+ check_assist(
+ generate_default_from_new,
r#"
+//- minicore: default
mod test {
struct Example { _inner: () }
#[test]
fn struct_in_module_with_default() {
cov_mark::check!(struct_in_module_with_default);
- check_not_applicable(
+ check_assist_not_applicable(
+ generate_default_from_new,
r#"
+//- minicore: default
mod test {
struct Example { _inner: () }
"#,
);
}
-
- fn check_pass(before: &str, after: &str) {
- let before = &format!("//- /main.rs crate:main deps:core{}{}", before, FamousDefs::FIXTURE);
- check_assist(generate_default_from_new, before, after);
- }
-
- fn check_not_applicable(before: &str) {
- let before = &format!("//- /main.rs crate:main deps:core{}{}", before, FamousDefs::FIXTURE);
- check_assist_not_applicable(generate_default_from_new, before);
- }
}