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

// fidl_experiment = output_index_json

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

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

size_t fidl::internal::DisplayError<::test_consts::EnumType>::Format(
    const ::test_consts::EnumType& value, char* destination, size_t capacity) {
  const char* member_name = [&]() -> const char* {
    switch (static_cast<int32_t>(value)) {
      case 1u:
        return "VALUE";
      case 2u:
        return "true";
      default:
        return "[UNKNOWN]";
    }
  }();
  size_t written = std::snprintf(destination, capacity, "%s.%s (value: %u)",
                                 "test.consts/EnumType", member_name, static_cast<int32_t>(value));
  return std::min(written, capacity - 1);
}

#pragma clang diagnostic pop
