library fidl.test.bindingsdenylist;

// This file tests that all the bindings respect BindingsDenylist, and that the
// attribute works on all declaration kinds. Each binding should include the
// AllBindings constant and one other declaration. The associations are chosen
// to make this work (e.g. libfuzzer needs to have a protocol, only certain
// bindings emit anything for an empty service, etc.).

[BindingsDenylist = "there_are_no_bindings_with_this_name"]
const uint32 AllBindings = 0;

[BindingsDenylist = "cpp, dart, go, hlcpp, libfuzzer, llcpp, rust"]
bits OnlySyzkaller {
    A = 1;
};

[BindingsDenylist = "cpp, go, hlcpp, libfuzzer, llcpp, rust, syzkaller"]
enum OnlyDart {
    A = 1;
};

[BindingsDenylist = "cpp, dart, hlcpp, libfuzzer, llcpp, rust, syzkaller"]
struct OnlyGo {
};

[BindingsDenylist = "cpp, dart, go, hlcpp, libfuzzer, llcpp, syzkaller"]
table OnlyRust {
};

[BindingsDenylist = "cpp, dart, go, hlcpp, libfuzzer, rust, syzkaller"]
union OnlyLlcpp {
    1: uint32 x;
};

// TODO(fxbug.dev/72247): Libfuzzer depends on hlcpp and llcpp. A decision needs to be made on how
// to manage these dependencies. For now, this test does not denylist the dependencies.
[BindingsDenylist = "cpp, dart, go, rust, syzkaller"]
protocol OnlyLibfuzzerAndDeps {
    LibfuzzerNeedsNonemptyProtocol() -> ();
};

// TODO(fxbug.dev/72247): Unified C++ bindings depends on hlcpp and llcpp. A decision needs to be
// made on how to manage these dependencies. For now, this test does not denylist the dependencies.
[BindingsDenylist = "dart, go, libfuzzer, rust, syzkaller"]
protocol OnlyCppAndDeps {
};

[BindingsDenylist = "cpp, dart, go, libfuzzer, llcpp, rust, syzkaller"]
service OnlyHlcpp {
};
