mirror of https://github.com/rust-lang/rust
57 lines
1.3 KiB
Rust
57 lines
1.3 KiB
Rust
// Test that changing what a `type` points to does not go unnoticed.
|
|
|
|
//@ incremental
|
|
//@ compile-flags: -Z query-dep-graph
|
|
|
|
#![feature(rustc_attrs)]
|
|
#![allow(dead_code)]
|
|
#![allow(unused_variables)]
|
|
|
|
fn main() { }
|
|
|
|
|
|
#[rustc_if_this_changed]
|
|
type TypeAlias = u32;
|
|
|
|
// The type alias directly affects the type of the field,
|
|
// not the enclosing struct:
|
|
#[rustc_then_this_would_need(type_of)] //~ ERROR no path
|
|
struct Struct {
|
|
#[rustc_then_this_would_need(type_of)] //~ ERROR OK
|
|
x: TypeAlias,
|
|
y: u32
|
|
}
|
|
|
|
#[rustc_then_this_would_need(type_of)] //~ ERROR no path
|
|
enum Enum {
|
|
Variant1 {
|
|
#[rustc_then_this_would_need(type_of)] //~ ERROR OK
|
|
t: TypeAlias
|
|
},
|
|
Variant2(i32)
|
|
}
|
|
|
|
#[rustc_then_this_would_need(type_of)] //~ ERROR no path
|
|
trait Trait {
|
|
#[rustc_then_this_would_need(fn_sig)] //~ ERROR OK
|
|
fn method(&self, _: TypeAlias);
|
|
}
|
|
|
|
struct SomeType;
|
|
|
|
#[rustc_then_this_would_need(type_of)] //~ ERROR no path
|
|
impl SomeType {
|
|
#[rustc_then_this_would_need(fn_sig)] //~ ERROR OK
|
|
#[rustc_then_this_would_need(typeck)] //~ ERROR OK
|
|
fn method(&self, _: TypeAlias) {}
|
|
}
|
|
|
|
#[rustc_then_this_would_need(type_of)] //~ ERROR OK
|
|
type TypeAlias2 = TypeAlias;
|
|
|
|
#[rustc_then_this_would_need(fn_sig)] //~ ERROR OK
|
|
#[rustc_then_this_would_need(typeck)] //~ ERROR OK
|
|
fn function(_: TypeAlias) {
|
|
|
|
}
|