#![allow(unused_macros)]

// Tests that repetition matchers cannot match the empty token tree (since that would be
// ambiguous).

// edition:2018

macro_rules! foo {
    ( $()* ) => {};
    //~^ ERROR repetition matches empty token tree
    ( $()+ ) => {};
    //~^ ERROR repetition matches empty token tree
    ( $()? ) => {};
    //~^ ERROR repetition matches empty token tree
    ( $(),* ) => {}; // PASS
    ( $(),+ ) => {}; // PASS
    // `?` cannot have a separator...
    ( [$()*] ) => {};
    //~^ ERROR repetition matches empty token tree
    ( [$()+] ) => {};
    //~^ ERROR repetition matches empty token tree
    ( [$()?] ) => {};
    //~^ ERROR repetition matches empty token tree
    ( [$(),*] ) => {}; // PASS
    ( [$(),+] ) => {}; // PASS
    // `?` cannot have a separator...
    ( $($()* $(),* $(a)* $(a),* )* ) => {};
    //~^ ERROR repetition matches empty token tree
    ( $($()* $(),* $(a)* $(a),* )+ ) => {};
    //~^ ERROR repetition matches empty token tree
    ( $($()* $(),* $(a)* $(a),* )? ) => {};
    //~^ ERROR repetition matches empty token tree
    ( $($()? $(),* $(a)? $(a),* )* ) => {};
    //~^ ERROR repetition matches empty token tree
    ( $($()? $(),* $(a)? $(a),* )+ ) => {};
    //~^ ERROR repetition matches empty token tree
    ( $($()? $(),* $(a)? $(a),* )? ) => {};
    //~^ ERROR repetition matches empty token tree
    ( $(a     $(),* $(a)* $(a),* )* ) => {}; // PASS
    ( $($(a)+ $(),* $(a)* $(a),* )+ ) => {}; // PASS
    ( $($(a)+ $(),* $(a)* $(a),* )? ) => {}; // PASS

    ( $(a     $(),* $(a)? $(a),* )* ) => {}; // PASS
    ( $($(a)+ $(),* $(a)? $(a),* )+ ) => {}; // PASS
    ( $($(a)+ $(),* $(a)? $(a),* )? ) => {}; // PASS

    ( $(a $()+)* ) => {};
    //~^ ERROR repetition matches empty token tree
    ( $(a $()*)+ ) => {};
    //~^ ERROR repetition matches empty token tree
    ( $(a $()+)? ) => {};
    //~^ ERROR repetition matches empty token tree
    ( $(a $()?)+ ) => {};
    //~^ ERROR repetition matches empty token tree
}

// --- Original Issue --- //

macro_rules! make_vec {
    (a $e1:expr $($(, a $e2:expr)*)*) => ([$e1 $($(, $e2)*)*]);
    //~^ ERROR repetition matches empty token tree
}

fn main() {
    let _ = make_vec![a 1, a 2, a 3];
}

// --- Minified Issue --- //

macro_rules! m {
    ( $()* ) => {};
    //~^ ERROR repetition matches empty token tree
}

m!();
