Make def_key and HIR parenting consistent.
This commit is contained in:
parent
17a07d71bf
commit
445b4e379c
11 changed files with 177 additions and 54 deletions
|
|
@ -93,9 +93,6 @@
|
|||
59| 1| used_only_from_this_lib_crate_generic_function(some_vec);
|
||||
60| 1| used_only_from_this_lib_crate_generic_function("used ONLY from library used_crate.rs");
|
||||
61| 1|}
|
||||
------------------
|
||||
| Unexecuted instantiation: used_crate::use_this_lib_crate
|
||||
------------------
|
||||
62| |
|
||||
63| |// FIXME(#79651): `used_from_bin_crate_and_lib_crate_generic_function()` is covered and executed
|
||||
64| |// `2` times, but the coverage output also shows (at the bottom of the coverage report):
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@ error[E0080]: could not evaluate static initializer
|
|||
--> $DIR/tls.rs:12:25
|
||||
|
|
||||
LL | unsafe { let _val = A; }
|
||||
| ^ cannot access thread local static (DefId(0:4 ~ tls[317d]::A))
|
||||
| ^ cannot access thread local static (DefId(0:6 ~ tls[317d]::A))
|
||||
|
||||
error[E0080]: could not evaluate static initializer
|
||||
--> $DIR/tls.rs:19:26
|
||||
|
|
||||
LL | unsafe { let _val = &A; }
|
||||
| ^ cannot access thread local static (DefId(0:4 ~ tls[317d]::A))
|
||||
| ^ cannot access thread local static (DefId(0:6 ~ tls[317d]::A))
|
||||
|
||||
warning: skipping const checks
|
||||
|
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ note: generator is not `Send` as this value is used across a yield
|
|||
--> $DIR/generator-print-verbose-1.rs:35:9
|
||||
|
|
||||
LL | let _non_send_gen = make_non_send_generator();
|
||||
| ------------- has type `Opaque(DefId(0:24 ~ generator_print_verbose_1[317d]::make_non_send_generator::{opaque#0}), [])` which is not `Send`
|
||||
| ------------- has type `Opaque(DefId(0:34 ~ generator_print_verbose_1[317d]::make_non_send_generator::{opaque#0}), [])` which is not `Send`
|
||||
LL | yield;
|
||||
| ^^^^^ yield occurs here, with `_non_send_gen` maybe used later
|
||||
LL | };
|
||||
|
|
@ -30,10 +30,10 @@ LL | require_send(send_gen);
|
|||
= help: the trait `Sync` is not implemented for `RefCell<i32>`
|
||||
= note: required because of the requirements on the impl of `Send` for `Arc<RefCell<i32>>`
|
||||
= note: required because it appears within the type `[make_gen2<Arc<RefCell<i32>>>::{closure#0} upvar_tys=(Arc<RefCell<i32>>) {()}]`
|
||||
= note: required because it appears within the type `Opaque(DefId(0:29 ~ generator_print_verbose_1[317d]::make_gen2::{opaque#0}), [std::sync::Arc<std::cell::RefCell<i32>>])`
|
||||
= note: required because it appears within the type `Opaque(DefId(0:32 ~ generator_print_verbose_1[317d]::make_non_send_generator2::{opaque#0}), [])`
|
||||
= note: required because it appears within the type `{Opaque(DefId(0:32 ~ generator_print_verbose_1[317d]::make_non_send_generator2::{opaque#0}), []), ()}`
|
||||
= note: required because it appears within the type `[test2::{closure#0} upvar_tys=() {Opaque(DefId(0:32 ~ generator_print_verbose_1[317d]::make_non_send_generator2::{opaque#0}), []), ()}]`
|
||||
= note: required because it appears within the type `Opaque(DefId(0:39 ~ generator_print_verbose_1[317d]::make_gen2::{opaque#0}), [std::sync::Arc<std::cell::RefCell<i32>>])`
|
||||
= note: required because it appears within the type `Opaque(DefId(0:42 ~ generator_print_verbose_1[317d]::make_non_send_generator2::{opaque#0}), [])`
|
||||
= note: required because it appears within the type `{Opaque(DefId(0:42 ~ generator_print_verbose_1[317d]::make_non_send_generator2::{opaque#0}), []), ()}`
|
||||
= note: required because it appears within the type `[test2::{closure#0} upvar_tys=() {Opaque(DefId(0:42 ~ generator_print_verbose_1[317d]::make_non_send_generator2::{opaque#0}), []), ()}]`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
|
|
|||
20
src/test/ui/impl-trait/impl-trait-in-macro.rs
Normal file
20
src/test/ui/impl-trait/impl-trait-in-macro.rs
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
use std::fmt::Debug;
|
||||
|
||||
macro_rules! i {
|
||||
($($tr:tt)*) => { impl $($tr)* };
|
||||
}
|
||||
|
||||
fn foo(x: i!(Debug), y: i!(Debug)) -> String {
|
||||
let mut a = x;
|
||||
a = y; //~ ERROR mismatched
|
||||
format!("{:?}", a)
|
||||
}
|
||||
|
||||
trait S<T> {}
|
||||
|
||||
fn much_universe<T: S<i!(Debug)>, U: IntoIterator<Item = i!(Iterator<Item = i!(Clone)>)>>(
|
||||
_: i!(Debug + Clone),
|
||||
) {
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
20
src/test/ui/impl-trait/impl-trait-in-macro.stderr
Normal file
20
src/test/ui/impl-trait/impl-trait-in-macro.stderr
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
error[E0308]: mismatched types
|
||||
--> $DIR/impl-trait-in-macro.rs:9:9
|
||||
|
|
||||
LL | ($($tr:tt)*) => { impl $($tr)* };
|
||||
| ----
|
||||
| |
|
||||
| expected type parameter
|
||||
| found type parameter
|
||||
...
|
||||
LL | a = y;
|
||||
| ^ expected type parameter `impl Debug`, found a different type parameter `impl Debug`
|
||||
|
|
||||
= note: expected type parameter `impl Debug` (type parameter `impl Debug`)
|
||||
found type parameter `impl Debug` (type parameter `impl Debug`)
|
||||
= note: a type parameter was expected, but a different one was found; you might be missing a type parameter or trait bound
|
||||
= note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
|
|
@ -6,4 +6,11 @@ fn foo(x: impl Debug, y: impl Debug) -> String {
|
|||
format!("{:?}", a)
|
||||
}
|
||||
|
||||
fn main() { }
|
||||
trait S<T> {}
|
||||
|
||||
fn much_universe<T: S<impl Debug>, U: IntoIterator<Item = impl Iterator<Item = impl Clone>>>(
|
||||
_: impl Debug + Clone,
|
||||
) {
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue