112a9d9c8Sopenharmony_ci// bindgen-flags: --enable-cxx-namespaces --allowlist-type JSAutoCompartment -- -std=c++11
212a9d9c8Sopenharmony_ci
312a9d9c8Sopenharmony_cinamespace mozilla {
412a9d9c8Sopenharmony_ci    template <typename> class a {};
512a9d9c8Sopenharmony_ci    namespace detail {
612a9d9c8Sopenharmony_ci        class GuardObjectNotifier {};
712a9d9c8Sopenharmony_ci        struct b;
812a9d9c8Sopenharmony_ci    }
912a9d9c8Sopenharmony_ci    class c {
1012a9d9c8Sopenharmony_ci        typedef detail::b d;
1112a9d9c8Sopenharmony_ci    };
1212a9d9c8Sopenharmony_ci}
1312a9d9c8Sopenharmony_cinamespace js {
1412a9d9c8Sopenharmony_ci    class D {
1512a9d9c8Sopenharmony_ci        mozilla::a<mozilla::c> e;
1612a9d9c8Sopenharmony_ci    };
1712a9d9c8Sopenharmony_ci}
1812a9d9c8Sopenharmony_cistruct f {
1912a9d9c8Sopenharmony_ci    js::D g;
2012a9d9c8Sopenharmony_ci};
2112a9d9c8Sopenharmony_cinamespace js {
2212a9d9c8Sopenharmony_ci    struct ContextFriendFields : f {};
2312a9d9c8Sopenharmony_ci}
2412a9d9c8Sopenharmony_ciclass JSAutoCompartment {
2512a9d9c8Sopenharmony_cipublic:
2612a9d9c8Sopenharmony_ci    JSAutoCompartment(mozilla::detail::GuardObjectNotifier);
2712a9d9c8Sopenharmony_ci};
28