2017-01-15 19:50:27 -06:00
// rustfmt-normalize_comments: true
2016-01-22 13:40:26 -06:00
itemmacro! ( this , is . now ( ) . formatted ( yay ) ) ;
2015-09-14 15:53:30 -05:00
2016-01-24 13:11:18 -06:00
itemmacro! ( really , long . aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbb ( ) . is . formatted ( ) ) ;
itemmacro! { this , is . bracket ( ) . formatted ( ) }
2016-03-27 07:45:55 -05:00
peg_file ! modname ( " mygrammarfile.rustpeg " ) ;
2015-09-14 15:53:30 -05:00
fn main ( ) {
foo! ( ) ;
bar! ( a , b , c ) ;
2017-06-22 22:57:34 -05:00
bar! ( a , b , c , ) ;
2015-09-14 15:53:30 -05:00
baz! ( 1 + 2 + 3 , quux . kaas ( ) ) ;
quux! ( AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA , BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB ) ;
kaas! ( /* comments */ a /* post macro */ , b /* another */ ) ;
trailingcomma! ( a , b , c , ) ;
2017-10-27 02:35:40 -05:00
// Preserve trailing comma only when necessary.
ok! ( file . seek (
SeekFrom ::Start (
table . map ( | table | fixture . offset ( table ) ) . unwrap_or ( 0 ) ,
)
) ) ;
2015-09-14 15:53:30 -05:00
noexpr! ( i am not an expression , OK ? ) ;
vec! [ a , b , c ] ;
vec! [ AAAAAA , AAAAAA , AAAAAA , AAAAAA , AAAAAA , AAAAAA , AAAAAA , AAAAAA , AAAAAA ,
BBBBB , 5 , 100 - 30 , 1.33 , b , b , b ] ;
vec! [ a /* comment */ ] ;
2016-11-13 22:42:15 -06:00
// Trailing spaces after a comma
vec! [
a ,
] ;
2017-05-19 05:25:53 -05:00
vec! [ a ; b ] ;
vec! ( a ; b ) ;
vec! { a ; b } ;
vec! [ a , b ; c ] ;
vec! [ a ; b , c ] ;
2017-05-21 18:50:46 -05:00
vec! [ a ; ( | x | { let y = x + 1 ; let z = y + 1 ; z } ) ( 2 ) ] ;
vec! [ a ; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ] ;
vec! [ a ; unsafe {
x + 1
} ] ;
2016-11-13 22:42:15 -06:00
unknown_bracket_macro__comma_should_not_be_stripped! [
a ,
] ;
2015-09-14 15:53:30 -05:00
foo ( makro! ( 1 , 3 ) ) ;
hamkaas! { ( ) } ;
macrowithbraces! { dont , format , me }
2015-10-28 01:41:32 -05:00
x! ( fn ) ;
2016-03-27 06:44:08 -05:00
some_macro! (
) ;
some_macro! [
] ;
some_macro! {
// comment
} ;
some_macro! {
// comment
} ;
2016-10-02 23:11:49 -05:00
some_macro! (
// comment
not function like
) ;
2017-05-23 11:18:15 -05:00
2017-06-17 12:35:18 -05:00
// #1712
let image = gray_image! (
00 , 01 , 02 ;
10 , 11 , 12 ;
20 , 21 , 22 ) ;
2017-05-07 16:44:48 -05:00
// #1092
chain! ( input , a :take ! ( max_size ) , | | [ ] ) ;
2016-03-27 06:44:08 -05:00
}
impl X {
empty_invoc! { }
2015-09-14 15:53:30 -05:00
}
2016-04-27 14:08:44 -05:00
2017-01-17 15:38:46 -06:00
fn issue_1279 ( ) {
println! ( " dsfs " ) ; // a comment
}
2017-05-15 08:55:01 -05:00
fn issue_1555 ( ) {
let hello = & format! ( " HTTP/1.1 200 OK \r \n Server: {} \r \n \r \n {} " ,
" 65454654654654654654654655464 " ,
" 4 " ) ;
}
2017-05-27 21:41:16 -05:00
fn issue1178 ( ) {
macro_rules ! foo {
( #[ $attr:meta ] $name :ident ) = > { }
}
foo! ( #[ doc = " bar " ] baz ) ;
}
2017-08-21 09:19:01 -05:00
2017-06-22 22:57:34 -05:00
fn issue1739 ( ) {
sql_function! ( add_rss_item ,
add_rss_item_t ,
( a : types ::Integer ,
b : types ::Timestamptz ,
c : types ::Text ,
d : types ::Text ,
e : types ::Text ) ) ;
w . slice_mut ( s! [ .. , init_size [ 1 ] - extreeeeeeeeeeeeeeeeeeeeeeeem .. init_size [ 1 ] , .. ] )
. par_map_inplace ( | el | * el = 0. ) ;
}
2017-08-21 09:19:01 -05:00
fn issue_1885 ( ) {
let threads = people . into_iter ( ) . map ( | name | {
chan_select! {
rx . recv ( ) = > { }
}
} ) . collect ::< Vec < _ > > ( ) ;
}
2017-08-25 08:35:22 -05:00
fn issue_1917 ( ) {
mod x {
quickcheck! {
fn test ( a : String , s : String , b : String ) -> TestResult {
if a . find ( & s ) . is_none ( ) {
TestResult ::from_bool ( true )
} else {
TestResult ::discard ( )
}
}
}
}
}
2017-08-26 23:44:49 -05:00
fn issue_1921 ( ) {
// Macro with tabs.
lazy_static! {
static ref ONE : u32 = 1 ;
static ref TWO : u32 = 2 ;
static ref THREE : u32 = 3 ;
static ref FOUR : u32 = {
let mut acc = 1 ;
acc + = 1 ;
acc + = 2 ;
acc
}
}
}
2017-06-22 22:57:34 -05:00
// #1577
fn issue1577 ( ) {
let json = json! ( {
" foo " : " bar " ,
} ) ;
}
gfx_pipeline! ( pipe {
vbuf : gfx ::VertexBuffer < Vertex > = ( ) ,
out : gfx ::RenderTarget < ColorFormat > = " Target0 " ,
} ) ;
2017-08-29 22:00:10 -05:00
// #1919
#[ test ]
fn __bindgen_test_layout_HandleWithDtor_open0_int_close0_instantiation ( ) {
assert_eq! (
::std ::mem ::size_of ::< HandleWithDtor < ::std ::os ::raw ::c_int > > ( ) ,
8 usize ,
concat! (
" Size of template specialization: " ,
stringify ! ( HandleWithDtor < :: std :: os :: raw :: c_int > )
)
) ;
assert_eq ! ( :: std :: mem :: align_of :: < HandleWithDtor < :: std :: os :: raw :: c_int > > ( ) , 8 usize , concat ! ( " Alignment of template specialization: " , stringify ! ( HandleWithDtor < :: std :: os :: raw :: c_int > ) ) ) ;
}
2017-10-05 05:44:45 -05:00
// #878
macro_rules ! try_opt {
( $expr :expr ) = > ( match $expr {
Some ( val ) = > val ,
None = > { return None ; }
} )
}
2017-11-30 07:12:55 -06:00
// #2214
// macro call whose argument is an array with trailing comma.
fn issue2214 ( ) {
make_test! ( str_searcher_ascii_haystack , " bb " , " abbcbbd " , [
Reject ( 0 , 1 ) ,
Match ( 1 , 3 ) ,
Reject ( 3 , 4 ) ,
Match ( 4 , 6 ) ,
Reject ( 6 , 7 ) ,
] ) ;
}
2017-11-30 22:28:16 -06:00
fn special_case_macros ( ) {
2018-01-17 09:50:16 -06:00
let p = eprint! ( ) ;
2017-12-05 18:45:01 -06:00
let q = eprint! ( " {} " , 1 ) ;
let r = eprint! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) ;
let s = eprint! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
let q = eprintln! ( " {} " , 1 ) ;
let r = eprintln! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) ;
let s = eprintln! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
let q = format! ( " {} " , 1 ) ;
let r = format! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) ;
let s = format! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
let q = format_args! ( " {} " , 1 ) ;
let r = format_args! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) ;
let s = format_args! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
2017-12-05 18:49:48 -06:00
let q = print! ( " {} " , 1 ) ;
let r = print! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) ;
let s = print! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
2017-12-05 18:45:01 -06:00
let q = println! ( " {} " , 1 ) ;
let r = println! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) ;
let s = println! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
let q = unreachable! ( " {} " , 1 ) ;
let r = unreachable! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) ;
let s = unreachable! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
debug! ( " {} " , 1 ) ;
debug! ( " {}{}{}{}{}{}{}{}{}{}{}{}{}{}{} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) ;
debug! ( " {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
error! ( " {} " , 1 ) ;
error! ( " {}{}{}{}{}{}{}{}{}{}{}{}{}{}{} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) ;
error! ( " {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
info! ( " {} " , 1 ) ;
info! ( " {}{}{}{}{}{}{}{}{}{}{}{}{}{}{} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) ;
info! ( " {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
panic! ( " {} " , 1 ) ;
panic! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) ;
panic! ( " {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} {} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
warn! ( " {} " , 1 ) ;
warn! ( " {}{}{}{}{}{}{}{}{}{}{}{}{}{}{} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) ;
warn! ( " {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
2017-11-30 22:28:16 -06:00
2018-01-17 09:50:16 -06:00
assert! ( ) ;
assert! ( result = = 42 ) ;
2017-12-22 19:06:17 -06:00
assert! ( result = = 42 , " Ahoy there, {}! " , target ) ;
2017-12-27 15:19:42 -06:00
assert! ( result = = 42 , " Arr! While plunderin' the hold, we got '{}' when given '{}' (we expected '{}') " , result , input , expected ) ;
2017-12-22 19:06:17 -06:00
assert! ( result = = 42 , " {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
2018-01-17 09:50:16 -06:00
assert_eq! ( ) ;
assert_eq! ( left ) ;
assert_eq! ( left , right ) ;
2017-12-22 19:06:17 -06:00
assert_eq! ( left , right , " Ahoy there, {}! " , target ) ;
2017-12-27 15:19:42 -06:00
assert_eq! ( left , right , " Arr! While plunderin' the hold, we got '{}' when given '{}' (we expected '{}') " , result , input , expected ) ;
assert_eq! ( first_realllllllllllly_long_variable_that_doesnt_fit_one_one_line , second_reallllllllllly_long_variable_that_doesnt_fit_one_one_line , " Arr! While plunderin' the hold, we got '{}' when given '{}' (we expected '{}') " , result , input , expected ) ;
assert_eq! ( left + 42 , right , " Arr! While plunderin' the hold, we got '{}' when given '{}' (we expected '{}') " , result , input , expected ) ;
2017-12-22 19:06:17 -06:00
assert_eq! ( left , right , " {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
2017-12-07 00:42:33 -06:00
write! ( & mut s , " Ahoy there, {}! " , target ) ;
2017-12-27 15:19:42 -06:00
write! ( & mut s , " Arr! While plunderin' the hold, we got '{}' when given '{}' (we expected '{}') " , result , input , expected ) ;
2017-12-07 00:42:33 -06:00
write! ( & mut s , " {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
writeln! ( & mut s , " Ahoy there, {}! " , target ) ;
2017-12-27 15:19:42 -06:00
writeln! ( & mut s , " Arr! While plunderin' the hold, we got '{}' when given '{}' (we expected '{}') " , result , input , expected ) ;
2017-12-07 00:42:33 -06:00
writeln! ( & mut s , " {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} " , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 ) ;
2017-11-30 22:28:16 -06:00
}
2017-12-04 17:41:10 -06:00
// #1209
impl Foo {
/// foo
pub fn foo ( & self ) -> Bar < foo! ( ) > { }
}
2017-12-09 09:21:49 -06:00
// #819
fn macro_in_pattern_position ( ) {
let x = match y {
foo! ( ) = > ( ) ,
bar! ( a , b ,
c ) = > ( ) ,
bar! ( a
, b
, c
, ) = > ( ) ,
baz! ( 1 + 2 + 3 , quux . kaas ( )
) = > ( ) ,
quux! ( AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA , BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB ) = > ( ) ,
} ;
}
2018-01-01 00:51:30 -06:00
macro foo ( ) {
}
pub macro bar ( $x :ident + $y :expr ; ) {
fn foo ( $x : Foo ) {
long_function ( a_long_argument_to_a_long_function_is_what_this_is ( AAAAAAAAAAAAAAAAAAAAAAAAAAAA ) ,
$x . bar ( $y ) ) ;
}
}
2018-01-03 01:36:52 -06:00
macro foo ( ) {
// a comment
fn foo ( ) {
// another comment
bar ( ) ;
}
}
2018-02-03 17:52:50 -06:00
macro lex_err ( $kind : ident $(, $body : expr ) * ) {
Err ( QlError ::LexError ( LexError ::$kind ( $( $body , ) * ) ) )
}
2018-02-23 20:48:07 -06:00
// Preserve trailing comma on item-level macro with `()` or `[]`.
methods! [ get , post , delete , ] ;
methods! ( get , post , delete , ) ;