# vim: filetype=yaml

Checks: >
  -*,
  bugprone-*,
  clang-diagnostic-*,
  concurrency-*,
  cppcoreguidelines-avoid-reference-coroutine-parameters,
  cppcoreguidelines-interfaces-global-init,
  cppcoreguidelines-virtual-class-destructor,
  misc-*,
  modernize-*,
  performance-*,
  portability-*,
  readability-*,
  -bugprone-assignment-in-if-condition,
  -bugprone-branch-clone,
  -bugprone-easily-swappable-parameters,
  -bugprone-empty-catch,
  -bugprone-exception-escape,
  -bugprone-implicit-widening-of-multiplication-result,
  -bugprone-integer-division,
  -bugprone-macro-parentheses,
  -bugprone-multi-level-implicit-pointer-conversion,
  -bugprone-narrowing-conversions,
  -bugprone-reserved-identifier,
  -bugprone-suspicious-include,
  -bugprone-switch-missing-default-case,
  -bugprone-throw-keyword-missing,
  -bugprone-use-after-move,
  -bugprone-unintended-char-ostream-output,
  -clang-diagnostic-unused-private-field,
  -concurrency-mt-unsafe,
  -misc-const-correctness,
  -misc-definitions-in-headers,
  -misc-header-include-cycle,
  -misc-include-cleaner,
  -misc-misplace-const,
  -misc-misplaced-const,
  -misc-no-recursion,
  -misc-non-private-member-variables-in-classes,
  -misc-redundant-expression,
  -misc-throw-by-value-catch-by-reference,
  -misc-use-anonymous-namespace,
  -modernize-avoid-c-arrays,
  -modernize-loop-convert,
  -modernize-macro-to-enum,
  -modernize-pass-by-value,
  -modernize-return-braced-init-list,
  -modernize-use-equals-default,
  -modernize-use-equals-delete,
  -modernize-use-nodiscard,
  -modernize-use-trailing-return-type,
  -modernize-use-using,
  -performance-avoid-endl,
  -performance-enum-size,
  -performance-inefficient-string-concatenation,
  -performance-inefficient-vector-operation,
  -performance-no-int-to-ptr,
  -performance-noexcept-move-constructor,
  -performance-unnecessary-value-param,
  -readability-container-data-pointer,
  -readability-container-size-empty,
  -readability-convert-member-functions-to-static,
  -readability-delete-null-pointer,
  -readability-else-after-return,
  -readability-function-cognitive-complexity,
  -readability-function-size,
  -readability-identifier-length,
  -readability-identifier-naming,
  -readability-inconsistent-declaration-parameter-name,
  -readability-isolate-declaration,
  -readability-magic-numbers,
  -readability-make-member-function-const,
  -readability-named-parameter,
  -readability-redundant-declaration,
  -readability-redundant-string-cstr,
  -readability-static-accessed-through-instance,
  -readability-suspicious-call-argument,
  -readability-uppercase-literal-suffix,

# All the suppressed warnings above must be duplicated below
WarningsAsErrors: >
  *,
  -bugprone-assignment-in-if-condition,
  -bugprone-branch-clone,
  -bugprone-easily-swappable-parameters,
  -bugprone-empty-catch,
  -bugprone-exception-escape,
  -bugprone-implicit-widening-of-multiplication-result,
  -bugprone-integer-division,
  -bugprone-macro-parentheses,
  -bugprone-multi-level-implicit-pointer-conversion,
  -bugprone-narrowing-conversions,
  -bugprone-reserved-identifier,
  -bugprone-suspicious-include,
  -bugprone-switch-missing-default-case,
  -bugprone-throw-keyword-missing,
  -bugprone-use-after-move,
  -bugprone-unintended-char-ostream-output,
  -clang-diagnostic-unused-private-field,
  -concurrency-mt-unsafe,
  -misc-const-correctness,
  -misc-definitions-in-headers,
  -misc-header-include-cycle,
  -misc-include-cleaner,
  -misc-misplace-const,
  -misc-misplaced-const,
  -misc-no-recursion,
  -misc-non-private-member-variables-in-classes,
  -misc-redundant-expression,
  -misc-throw-by-value-catch-by-reference,
  -misc-use-anonymous-namespace,
  -modernize-avoid-c-arrays,
  -modernize-loop-convert,
  -modernize-macro-to-enum,
  -modernize-pass-by-value,
  -modernize-return-braced-init-list,
  -modernize-use-equals-default,
  -modernize-use-equals-delete,
  -modernize-use-nodiscard,
  -modernize-use-trailing-return-type,
  -modernize-use-using,
  -performance-avoid-endl,
  -performance-enum-size,
  -performance-inefficient-string-concatenation,
  -performance-inefficient-vector-operation,
  -performance-no-int-to-ptr,
  -performance-noexcept-move-constructor,
  -performance-unnecessary-value-param,
  -readability-container-data-pointer,
  -readability-container-size-empty,
  -readability-convert-member-functions-to-static,
  -readability-delete-null-pointer,
  -readability-else-after-return,
  -readability-function-cognitive-complexity,
  -readability-function-size,
  -readability-identifier-length,
  -readability-identifier-naming,
  -readability-inconsistent-declaration-parameter-name,
  -readability-isolate-declaration,
  -readability-magic-numbers,
  -readability-make-member-function-const,
  -readability-named-parameter,
  -readability-redundant-declaration,
  -readability-redundant-string-cstr,
  -readability-static-accessed-through-instance,
  -readability-suspicious-call-argument,
  -readability-uppercase-literal-suffix,
CheckOptions:
  - key: modernize-use-auto.MinTypeNameLength
    value: 20
