blob: 88ba87edadcbf51559a6e6a6c34745962b218fc1 [file]
//@ run-rustfix
// Regression test for https://github.com/rust-lang/rust/issues/144319.
// Function-local constructors cannot be named through the enclosing function
// path. The suggestion must omit path segments that cannot be written in source,
// while preserving real path segments like local modules and enums.
#![allow(dead_code)]
fn direct_tuple_struct() {
struct Foo(bool);
struct Bar(Foo);
_ = Bar(false);
//~^ ERROR mismatched types
//~| HELP try wrapping the expression in `Foo`
}
fn enum_variant() {
enum LocalResult<T> {
Ok(T),
}
struct Bar(LocalResult<bool>);
_ = Bar(false);
//~^ ERROR mismatched types
//~| HELP try wrapping the expression in `LocalResult::Ok`
}
fn local_module() {
mod inner {
pub struct Foo(pub bool);
}
struct Bar(inner::Foo);
_ = Bar(false);
//~^ ERROR mismatched types
//~| HELP try wrapping the expression in `inner::Foo`
}
fn closure_body() {
let _ = || {
struct Foo(bool);
struct Bar(Foo);
_ = Bar(false);
//~^ ERROR mismatched types
//~| HELP try wrapping the expression in `Foo`
};
}
fn inline_const_block() {
const {
struct Foo(bool);
struct Bar(Foo);
_ = Bar(false);
//~^ ERROR mismatched types
//~| HELP try wrapping the expression in `Foo`
};
}
pub fn main() {}