Skip to content

Commit cd4925d

Browse files
committed
Add tests
1 parent f89e356 commit cd4925d

24 files changed

+1080
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// Copyright 2018 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+
// compile-flags: --edition=2015
12+
13+
#![feature(raw_identifiers)]
14+
15+
// `async`
16+
#[macro_export]
17+
macro_rules! produces_async {
18+
() => (pub fn async() {})
19+
}
20+
21+
#[macro_export]
22+
macro_rules! produces_async_raw {
23+
() => (pub fn r#async() {})
24+
}
25+
26+
#[macro_export]
27+
macro_rules! consumes_async {
28+
(async) => (1)
29+
}
30+
31+
#[macro_export]
32+
macro_rules! consumes_async_raw {
33+
(r#async) => (1)
34+
}
35+
36+
#[macro_export]
37+
macro_rules! passes_ident {
38+
($i: ident) => ($i)
39+
}
40+
41+
// `proc`
42+
#[macro_export]
43+
macro_rules! produces_proc {
44+
() => (pub fn proc() {})
45+
}
46+
47+
#[macro_export]
48+
macro_rules! produces_proc_raw {
49+
() => (pub fn r#proc() {})
50+
}
51+
52+
#[macro_export]
53+
macro_rules! consumes_proc {
54+
(proc) => (1)
55+
}
56+
57+
#[macro_export]
58+
macro_rules! consumes_proc_raw {
59+
(r#proc) => (1)
60+
}
61+
62+
#[macro_export]
63+
macro_rules! passes_ident {
64+
($i: ident) => ($i)
65+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
// Copyright 2018 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+
// compile-flags: --edition=2018
12+
13+
#![feature(raw_identifiers)]
14+
15+
// `async`
16+
#[macro_export]
17+
macro_rules! produces_async {
18+
() => (pub fn async() {})
19+
}
20+
21+
#[macro_export]
22+
macro_rules! produces_async_raw {
23+
() => (pub fn r#async() {})
24+
}
25+
26+
#[macro_export]
27+
macro_rules! consumes_async {
28+
(async) => (1)
29+
}
30+
31+
#[macro_export]
32+
macro_rules! consumes_async_raw {
33+
(r#async) => (1)
34+
}
35+
36+
#[macro_export]
37+
macro_rules! passes_ident {
38+
($i: ident) => ($i)
39+
}
40+
41+
// `proc`
42+
#[macro_export]
43+
macro_rules! produces_proc {
44+
() => (pub fn proc() {})
45+
}
46+
47+
#[macro_export]
48+
macro_rules! produces_proc_raw {
49+
() => (pub fn r#proc() {})
50+
}
51+
52+
#[macro_export]
53+
macro_rules! consumes_proc {
54+
(proc) => (1)
55+
}
56+
57+
#[macro_export]
58+
macro_rules! consumes_proc_raw {
59+
(r#proc) => (1)
60+
}
61+
62+
#[macro_export]
63+
macro_rules! passes_ident {
64+
($i: ident) => ($i)
65+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// Copyright 2018 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+
// compile-flags: --edition=2015
12+
// aux-build:edition-kw-macro-2015.rs
13+
14+
#![feature(raw_identifiers)]
15+
16+
#[macro_use]
17+
extern crate edition_kw_macro_2015;
18+
19+
// `async`
20+
pub fn check_async() {
21+
let mut async = 1; // OK
22+
let mut r#async = 1; // OK
23+
24+
r#async = consumes_async!(async); // OK
25+
// r#async = consumes_async!(r#async); // ERROR, not a match
26+
// r#async = consumes_async_raw!(async); // ERROR, not a match
27+
r#async = consumes_async_raw!(r#async); // OK
28+
29+
if passes_ident!(async) == 1 {} // OK
30+
if passes_ident!(r#async) == 1 {} // OK
31+
one_async::async(); // OK
32+
one_async::r#async(); // OK
33+
two_async::async(); // OK
34+
two_async::r#async(); // OK
35+
}
36+
37+
mod one_async {
38+
produces_async! {} // OK
39+
}
40+
mod two_async {
41+
produces_async_raw! {} // OK
42+
}
43+
44+
// `proc`
45+
pub fn check_proc() {
46+
// let mut proc = 1; // ERROR, reserved
47+
let mut r#proc = 1; // OK
48+
49+
r#proc = consumes_proc!(proc); // OK
50+
// r#proc = consumes_proc!(r#proc); // ERROR, not a match
51+
// r#proc = consumes_proc_raw!(proc); // ERROR, not a match
52+
r#proc = consumes_proc_raw!(r#proc); // OK
53+
54+
// if passes_ident!(proc) == 1 {} // ERROR, reserved
55+
if passes_ident!(r#proc) == 1 {} // OK
56+
// one_proc::proc(); // ERROR, reserved
57+
// one_proc::r#proc(); // ERROR, unresolved name
58+
// two_proc::proc(); // ERROR, reserved
59+
two_proc::r#proc(); // OK
60+
}
61+
62+
mod one_proc {
63+
// produces_proc! {} // ERROR, reserved
64+
}
65+
mod two_proc {
66+
produces_proc_raw! {} // OK
67+
}
68+
69+
fn main() {}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// Copyright 2018 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+
// compile-flags: --edition=2015
12+
// aux-build:edition-kw-macro-2018.rs
13+
14+
#![feature(raw_identifiers)]
15+
16+
#[macro_use]
17+
extern crate edition_kw_macro_2018;
18+
19+
// `async`
20+
pub fn check_async() {
21+
let mut async = 1; // OK
22+
let mut r#async = 1; // OK
23+
24+
r#async = consumes_async!(async); // OK
25+
// r#async = consumes_async!(r#async); // ERROR, not a match
26+
// r#async = consumes_async_raw!(async); // ERROR, not a match
27+
r#async = consumes_async_raw!(r#async); // OK
28+
29+
if passes_ident!(async) == 1 {} // OK
30+
if passes_ident!(r#async) == 1 {} // OK
31+
one_async::async(); // OK
32+
one_async::r#async(); // OK
33+
two_async::async(); // OK
34+
two_async::r#async(); // OK
35+
}
36+
37+
mod one_async {
38+
produces_async! {} // ERROR, FIXME
39+
}
40+
mod two_async {
41+
produces_async_raw! {} // OK
42+
}
43+
44+
// `proc`
45+
pub fn check_proc() {
46+
// let mut proc = 1; // ERROR, reserved
47+
let mut r#proc = 1; // OK
48+
49+
r#proc = consumes_proc!(proc); // OK
50+
// r#proc = consumes_proc!(r#proc); // ERROR, not a match
51+
// r#proc = consumes_proc_raw!(proc); // ERROR, not a match
52+
r#proc = consumes_proc_raw!(r#proc); // OK
53+
54+
// if passes_ident!(proc) == 1 {} // ERROR, reserved
55+
if passes_ident!(r#proc) == 1 {} // OK
56+
// one_proc::proc(); // ERROR, reserved
57+
// one_proc::r#proc(); // OK, FIXME
58+
// two_proc::proc(); // ERROR, reserved
59+
two_proc::r#proc(); // OK
60+
}
61+
62+
mod one_proc {
63+
// produces_proc! {} // OK, FIXME
64+
}
65+
mod two_proc {
66+
produces_proc_raw! {} // OK
67+
}
68+
69+
fn main() {}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// Copyright 2018 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+
// compile-flags: --edition=2018
12+
// aux-build:edition-kw-macro-2015.rs
13+
14+
#![feature(raw_identifiers)]
15+
16+
#[macro_use]
17+
extern crate edition_kw_macro_2015;
18+
19+
// `async`
20+
pub fn check_async() {
21+
// let mut async = 1; // ERROR, reserved
22+
let mut r#async = 1; // OK
23+
24+
r#async = consumes_async!(async); // OK
25+
// r#async = consumes_async!(r#async); // ERROR, not a match
26+
// r#async = consumes_async_raw!(async); // ERROR, not a match
27+
r#async = consumes_async_raw!(r#async); // OK
28+
29+
// if passes_ident!(async) == 1 {} // ERROR, reserved
30+
if passes_ident!(r#async) == 1 {} // OK
31+
// one_async::async(); // ERROR, reserved
32+
// one_async::r#async(); // OK, FIXME
33+
// two_async::async(); // ERROR, reserved
34+
two_async::r#async(); // OK
35+
}
36+
37+
mod one_async {
38+
// produces_async! {} // OK, FIXME
39+
}
40+
mod two_async {
41+
produces_async_raw! {} // OK
42+
}
43+
44+
// `proc`
45+
pub fn check_proc() {
46+
let mut proc = 1; // OK
47+
let mut r#proc = 1; // OK
48+
49+
r#proc = consumes_proc!(proc); // OK
50+
// r#proc = consumes_proc!(r#proc); // ERROR, not a match
51+
// r#proc = consumes_proc_raw!(proc); // ERROR, not a match
52+
r#proc = consumes_proc_raw!(r#proc); // OK
53+
54+
if passes_ident!(proc) == 1 {} // OK
55+
if passes_ident!(r#proc) == 1 {} // OK
56+
one_proc::proc(); // OK
57+
one_proc::r#proc(); // OK
58+
two_proc::proc(); // OK
59+
two_proc::r#proc(); // OK
60+
}
61+
62+
mod one_proc {
63+
produces_proc! {} // ERROR, FIXME
64+
}
65+
mod two_proc {
66+
produces_proc_raw! {} // OK
67+
}
68+
69+
fn main() {}

0 commit comments

Comments
 (0)