//@ edition:2018
//@ aux-build:test-macros.rs
//@ aux-build:derive-helper-shadowing.rs

#[macro_use]
extern crate test_macros;
#[macro_use]
extern crate derive_helper_shadowing;

use test_macros::empty_attr as empty_helper;

macro_rules! gen_helper_use {
    () => {
        #[empty_helper] //~ ERROR cannot find attribute `empty_helper` in this scope
        struct W;
    }
}

#[empty_helper] //~ ERROR `empty_helper` is ambiguous
                //~| WARN derive helper attribute is used before it is introduced
                //~| WARN this was previously accepted
#[derive(Empty)]
struct S {
    #[empty_helper] // OK, no ambiguity, derive helpers have highest priority
    field: [u8; {
        use empty_helper; // OK, no ambiguity, derive helpers have highest priority

        #[empty_helper] // OK, no ambiguity, derive helpers have highest priority
        struct U;

        mod inner {
            // OK, no ambiguity, the non-helper attribute is not in scope here, only the helper.
            #[empty_helper]
            struct V;

            gen_helper_use!();

            #[derive(GenHelperUse)] //~ ERROR cannot find attribute `empty_helper` in this scope
            struct Owo;

            use empty_helper as renamed;
            #[renamed] //~ ERROR cannot use a derive helper attribute through an import
            struct Wow;
        }

        0
    }]
}

// OK, no ambiguity, only the non-helper attribute is in scope.
#[empty_helper]
struct Z;

fn main() {
    let s = S { field: [] };
}
