{{- /*
--------------------------------------------------------------------------------
Template file for use with tools/src/cmd/gen to generate diagnostic_control.cc

See:
* tools/src/cmd/gen for structures used by this template
* https://golang.org/pkg/text/template/ for documentation on the template syntax
--------------------------------------------------------------------------------
*/ -}}

{{- Import "src/tint/templates/enums.tmpl.inc" -}}

#include "src/tint/ast/diagnostic_control.h"

#include <string>

#include "src/tint/program_builder.h"

TINT_INSTANTIATE_TYPEINFO(tint::ast::DiagnosticControl);

namespace tint::ast {

DiagnosticControl::~DiagnosticControl() = default;

const DiagnosticControl* DiagnosticControl::Clone(CloneContext* ctx) const {
    auto src = ctx->Clone(source);
    auto rule = ctx->Clone(rule_name);
    return ctx->dst->create<DiagnosticControl>(src, severity, rule);
}

{{ Eval "ParseEnum" (Sem.Enum "diagnostic_severity")}}

{{ Eval "EnumOStream" (Sem.Enum "diagnostic_severity")}}

}  // namespace tint::ast
