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

#include <fidl/test.errorsyntax/cpp/wire_types.h>

void ::test_errorsyntax::wire::ExampleUseOfErrorSyntaxCallWhichMayFailResult::
    SizeAndOffsetAssertionHelper() {
  static_assert(sizeof(ExampleUseOfErrorSyntaxCallWhichMayFailResult) ==
                sizeof(fidl_xunion_v2_t));
  static_assert(offsetof(ExampleUseOfErrorSyntaxCallWhichMayFailResult,
                         ordinal_) == offsetof(fidl_xunion_v2_t, tag));
  static_assert(offsetof(ExampleUseOfErrorSyntaxCallWhichMayFailResult,
                         envelope_) == offsetof(fidl_xunion_v2_t, envelope));
}
