File tree Expand file tree Collapse file tree 7 files changed +326
-0
lines changed
struct_change_field_type_cross_crate Expand file tree Collapse file tree 7 files changed +326
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ // Test incremental compilation tracking where we change field names
12
+ // in between revisions (hashing should be stable).
13
+
14
+ // revisions:rpass1 rpass2
15
+
16
+ #![ feature( rustc_attrs) ]
17
+
18
+ pub struct X {
19
+ pub x : u32 ,
20
+
21
+ #[ cfg( rpass2) ]
22
+ pub x2 : u32 ,
23
+ }
24
+
25
+ pub struct EmbedX {
26
+ x : X
27
+ }
28
+
29
+ pub struct Y {
30
+ pub y : char
31
+ }
32
+
33
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="rpass2" ) ]
34
+ pub fn use_X ( x : X ) -> u32 {
35
+ x. x as u32
36
+ }
37
+
38
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="rpass2" ) ]
39
+ pub fn use_EmbedX ( embed : EmbedX ) -> u32 {
40
+ embed. x . x as u32
41
+ }
42
+
43
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="rpass2" ) ] // FIXME(#33850) should be clean
44
+ pub fn use_Y ( ) {
45
+ let x: Y = Y { y : 'c' } ;
46
+ }
47
+
48
+ pub fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ // Test incremental compilation tracking where we change field names
12
+ // in between revisions (hashing should be stable).
13
+
14
+ // revisions:rpass1 cfail2
15
+
16
+ #![ feature( rustc_attrs) ]
17
+
18
+ #[ cfg( rpass1) ]
19
+ pub struct X {
20
+ pub x : u32
21
+ }
22
+
23
+ #[ cfg( cfail2) ]
24
+ pub struct X {
25
+ pub y : u32
26
+ }
27
+
28
+ pub struct EmbedX {
29
+ x : X
30
+ }
31
+
32
+ pub struct Y {
33
+ pub y : char
34
+ }
35
+
36
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="cfail2" ) ]
37
+ pub fn use_X ( ) -> u32 {
38
+ let x: X = X { x : 22 } ;
39
+ //[cfail2]~^ ERROR structure `X` has no field named `x`
40
+ x. x as u32
41
+ //[cfail2]~^ ERROR attempted access of field `x`
42
+ }
43
+
44
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="cfail2" ) ]
45
+ pub fn use_EmbedX ( embed : EmbedX ) -> u32 {
46
+ embed. x . x as u32
47
+ //[cfail2]~^ ERROR attempted access of field `x`
48
+ }
49
+
50
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="cfail2" ) ] // FIXME(#33850) should be clean
51
+ pub fn use_Y ( ) {
52
+ let x: Y = Y { y : 'c' } ;
53
+ }
54
+
55
+ pub fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ // Test incremental compilation tracking where we change nothing
12
+ // in between revisions (hashing should be stable).
13
+
14
+ // revisions:rpass1 rpass2
15
+
16
+ #![ feature( rustc_attrs) ]
17
+
18
+ #[ cfg( rpass1) ]
19
+ pub struct X {
20
+ pub x : u32
21
+ }
22
+
23
+ #[ cfg( rpass2) ]
24
+ pub struct X {
25
+ pub x : i32
26
+ }
27
+
28
+ pub struct EmbedX {
29
+ x : X
30
+ }
31
+
32
+ pub struct Y {
33
+ pub y : char
34
+ }
35
+
36
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="rpass2" ) ]
37
+ pub fn use_X ( ) -> u32 {
38
+ let x: X = X { x : 22 } ;
39
+ x. x as u32
40
+ }
41
+
42
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="rpass2" ) ]
43
+ pub fn use_EmbedX ( x : EmbedX ) -> u32 {
44
+ let x: X = X { x : 22 } ;
45
+ x. x as u32
46
+ }
47
+
48
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="rpass2" ) ] // FIXME(#33850) should be clean
49
+ pub fn use_Y ( ) {
50
+ let x: Y = Y { y : 'c' } ;
51
+ }
52
+
53
+ pub fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ #![ crate_type="rlib" ]
12
+
13
+ #[ cfg( rpass1) ]
14
+ pub struct X {
15
+ pub x : u32
16
+ }
17
+
18
+ #[ cfg( rpass2) ]
19
+ pub struct X {
20
+ pub x : i32
21
+ }
22
+
23
+ pub struct EmbedX {
24
+ pub x : X
25
+ }
26
+
27
+ pub struct Y {
28
+ pub y : char
29
+ }
Original file line number Diff line number Diff line change
1
+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ // aux-build:a.rs
12
+ // revisions:rpass1 rpass2
13
+
14
+ #![ feature( rustc_attrs) ]
15
+
16
+ extern crate a;
17
+
18
+ use a:: * ;
19
+
20
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="rpass2" ) ]
21
+ pub fn use_X ( ) -> u32 {
22
+ let x: X = X { x : 22 } ;
23
+ x. x as u32
24
+ }
25
+
26
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="rpass2" ) ]
27
+ pub fn use_EmbedX ( embed : EmbedX ) -> u32 {
28
+ embed. x . x as u32
29
+ }
30
+
31
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="rpass2" ) ] // FIXME(#33850) should be clean
32
+ pub fn use_Y ( ) {
33
+ let x: Y = Y { y : 'c' } ;
34
+ }
35
+
36
+ pub fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ // Test incremental compilation tracking where we change nothing
12
+ // in between revisions (hashing should be stable).
13
+
14
+ // revisions:rpass1 rpass2
15
+
16
+ #![ feature( rustc_attrs) ]
17
+
18
+ #[ cfg( rpass1) ]
19
+ pub struct X {
20
+ pub x : u32
21
+ }
22
+
23
+ #[ cfg( rpass2) ]
24
+ pub struct X {
25
+ pub x : u32
26
+ }
27
+
28
+ pub struct EmbedX {
29
+ x : X
30
+ }
31
+
32
+ pub struct Y {
33
+ pub y : char
34
+ }
35
+
36
+ #[ rustc_clean( label="TypeckItemBody" , cfg="rpass2" ) ]
37
+ pub fn use_X ( ) -> u32 {
38
+ let x: X = X { x : 22 } ;
39
+ x. x as u32
40
+ }
41
+
42
+ #[ rustc_clean( label="TypeckItemBody" , cfg="rpass2" ) ]
43
+ pub fn use_EmbedX ( x : EmbedX ) -> u32 {
44
+ let x: X = X { x : 22 } ;
45
+ x. x as u32
46
+ }
47
+
48
+ #[ rustc_clean( label="TypeckItemBody" , cfg="rpass2" ) ]
49
+ pub fn use_Y ( ) {
50
+ let x: Y = Y { y : 'c' } ;
51
+ }
52
+
53
+ pub fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ // Test incremental compilation tracking where we change field names
12
+ // in between revisions (hashing should be stable).
13
+
14
+ // revisions:rpass1 rpass2
15
+
16
+ #![ feature( rustc_attrs) ]
17
+
18
+ #[ cfg( rpass1) ]
19
+ pub struct X {
20
+ pub x : u32 ,
21
+ pub x2 : u32 ,
22
+ }
23
+
24
+ #[ cfg( rpass2) ]
25
+ pub struct X {
26
+ pub x : u32 ,
27
+ }
28
+
29
+ pub struct EmbedX {
30
+ x : X
31
+ }
32
+
33
+ pub struct Y {
34
+ pub y : char
35
+ }
36
+
37
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="rpass2" ) ]
38
+ pub fn use_X ( x : X ) -> u32 {
39
+ x. x as u32
40
+ }
41
+
42
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="rpass2" ) ]
43
+ pub fn use_EmbedX ( embed : EmbedX ) -> u32 {
44
+ embed. x . x as u32
45
+ }
46
+
47
+ #[ rustc_dirty( label="TypeckItemBody" , cfg="rpass2" ) ] // FIXME(#33850) should be clean
48
+ pub fn use_Y ( ) {
49
+ let x: Y = Y { y : 'c' } ;
50
+ }
51
+
52
+ pub fn main ( ) { }
You can’t perform that action at this time.
0 commit comments