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

// fidl_experiment = output_index_json

#include <fidl/test.versions/cpp/common_types.h>

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wshadow"

size_t fidl::internal::DisplayError<::test_versions::Enum>::Format(
    const ::test_versions::Enum& value, char* destination, size_t capacity) {
  const char* member_name = [&]() -> const char* {
    switch (static_cast<uint32_t>(value)) {
      case 1u:
        return "A";
      default:
        return "[UNKNOWN]";
    }
  }();
  size_t written = std::snprintf(destination, capacity, "%s.%s (value: %u)",
                                 "test.versions/Enum", member_name, static_cast<uint32_t>(value));
  return std::min(written, capacity - 1);
}

#pragma clang diagnostic pop
