// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Module containing entities for regression tests of the generator. Entities
// must never be modified, instead new entity must be added to add new tests.
[JavaPackage="org.chromium.mojo.bindings.test.mojom.regression_tests"]
module regression_tests;

interface CheckMethodWithEmptyResponse {
WithouParameterAndEmptyResponse() => ();
WithParameterAndEmptyResponse(bool b) => ();
};

interface CheckNameCollision {
WithNameCollision(bool message, bool response) => (bool message, bool response);
};

enum EnumWithReference {
  k_STEREO_AND_KEYBOARD_MIC = 30,
  k_MAX = k_STEREO_AND_KEYBOARD_MIC
};

enum EnumWithLowercase {
  PlanarF16,
  PlanarF32
};

enum EnumWithNumbers {
  k_2_1 = 4
};

enum EnumWithK {
  K = 0
};

struct Edge {
  Vertex? v;
};

struct Vertex {
  EmptyStruct? e;
};

struct EmptyStruct {
};

struct A {
  B? b;
};

struct B {
  A? a;
};
