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

#include <fidl/test/misc/cpp/fidl.h>
#include <gtest/gtest.h>

namespace fidl {
namespace {

// Confirms that a protocol can have a method that returns a protocol whose
// type name is the same as the method's. Prior to a change which added the
// "class" modifier to the generated proxy's method signature, the identifier
// was ambiguous and the generated header did not compile.
TEST(Collision, Compiles) {
  zx::channel ch;
  fidl::InterfaceHandle<class test::misc::NameCollision> collision;
  test::misc::ReturnsCollision_SyncProxy proxy(std::move(ch));
  proxy.NameCollision(&collision);
}

}  // namespace
}  // namespace fidl
