#!special-case-list-v4
# Copyright 2025 The Chromium Project. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This file is used to suppress warnings based on the file they originate from,
# as opposed to disabling warnings via -Wno flags which apply to all the files
# involved in each compilation. For more information, see
# https://clang.llvm.org/docs/WarningSuppressionMappings.html
# For background information on their use in chromium, see crbug.com/404297941

# Warning Suppression Policy: updates to this file should be tightly controlled,
# for reasons discussed in crbug.com/404297941. In particular:
#
# 1. This file should never grow (as measured by the number of files suppressed)
#    except when a new warning is enabled.
# 2. This file should only be used to opt out whole directories, never
#    individual files.
# 3. This file should be used as a last resort; if it's possible to fix the warning or suppress
#    it without using the file, do so.
#    1. For first-party code, just fix it directly, or use `#pragma GCC diagnostic ignored`.
#    2. For third-party code, first attempt to fix it upstream.
#    3. If that's not possible, attempt to suppress the warning using `-Wno` flags in a gn file.
# 4. All entries should have a path to eventually be removed.
#
# In practice, rules (3) and (4) mean that the only accepted use case for this file is to
# speed up rolls or enable a warning slightly sooner, for cases where an upstream fix has been
# proposed but is likely to take a long time to get merged and rolled into chromium.
#
# We may make an exception to the policy for extremely high-value warnings that backslide a lot
# (such as unsafe buffers), but this is expected to be rare.

# Formatting Notes:
# 1. Don't put comments on the same line as a glob pattern! Clang will get confused,
#    and the warning won't be suppressed.

[unnecessary-virtual-specifier]
# Can be removed when https://github.com/google/nearby/pull/3392 is merged and rolled
src:*/third_party/nearby/*

[unique-object-duplication]
# This warning is extremely difficult to fix in code we don't directly control.
# As an experiment, we're breaking the policy and suppressing it permanently.
src:*/third_party/*
# v8's build system isn't amenable to fixes: https://crbug.com/408259026
src:*/v8/*

[exit-time-destructors]
src:*/third_party/angle/*
src:*/third_party/crashpad/crashpad/third_party/cpp-httplib/*
src:*/third_party/crc32c/src/src/*
src:*/third_party/dawn/*
src:*/third_party/fuzztest/src/*
src:*/third_party/gemmlowp/*
src:*/third_party/grpc/source/src/*
src:*/third_party/libprotobuf-mutator/src/src/libfuzzer/*
src:*/third_party/openscreen/src/*
src:*/third_party/openxr/src/src/*
src:*/third_party/skia/tools/*
src:*/third_party/spirv-tools/*
src:*/third_party/swiftshader/*
src:*/third_party/tflite/src/third_party/xla/*
src:*/third_party/vulkan-utility-libraries/*
src:*/third_party/webrtc/*
src:*/third_party/webrtc_overrides/test/*
# TODO(crbug.com/439492886): This suppression must be fixed internally.
src:*/chrome/browser/platform_experience/*
