// WARNING: This file is machine generated by fidlgen.

// fidl_experiment = output_index_json

#pragma once

#include <test/errorsyntax/cpp/fidl.h>
#include <test/errorsyntax/parent/cpp/fidl.h>
namespace test {
namespace errorsyntax {
namespace testing {

class ExampleUseOfErrorSyntax_TestBase : public ::test::errorsyntax::ExampleUseOfErrorSyntax {
 public:
  virtual ~ExampleUseOfErrorSyntax_TestBase() {}
  virtual void NotImplemented_(const std::string& name) = 0;
  void ComposedCallWhichMayFail(::std::string s, ComposedCallWhichMayFailCallback callback) override {
    NotImplemented_("ComposedCallWhichMayFail");
  }
  void CallWhichMayFail(::std::string s, CallWhichMayFailCallback callback) override {
    NotImplemented_("CallWhichMayFail");
  }
};
}  // namespace testing
}  // namespace errorsyntax
}  // namespace test
