blob: 351145d30e8ad3874a890b22f8086471504f0551 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Array listing regular expressions of paths that should be ignored when
// running the rewrite_raw_ptr_fields tool on Chromium sources.
// If a source file path contains any of the lines in the filter file below,
// then such source file will not be rewritten.
// Lines prefixed with "!" can be used to force include files that matched a
// file path to be ignored.
// Note that the rewriter has a hardcoded logic for a handful of path-based
// exclusions that cannot be expressed as substring matches:
// - Excluding paths containing "third_party/", but still covering
// "third_party/blink/"
// (see the isInThirdPartyLocation AST matcher in RewriteRawPtrFields.cpp).
// - Excluding paths _starting_ with "gen/" or containing "/gen/"
// (i.e. hopefully just the paths under out/.../gen/... directory)
// via the isInGeneratedLocation AST matcher in RewriteRawPtrFields.cpp.
constexpr const char* const kRawPtrManualPathsToIgnore[] = {
// Exclude to prevent PartitionAlloc<->raw_ptr<T> cyclical dependency.
// Exclude dependences of raw_ptr.h
// TODO(bartekn): Update the list of dependencies.
// win:pe_image target that uses this file does not depend on base/.
// Can't depend on //base, pointers/references under this directory can't be
// rewritten.
// Exclude - deprecated and contains legacy C++ and pre-C++11 code.
// Exclude tools that do not ship in the Chrome binary. Can't depend on
// //base.
// DEPS prohibits includes from base/
// Exclude pocdll.dll as it doesn't depend on //base and only used for
// testing.
// Exclude internal definitions of undocumented Windows structures.
// Exclude directories that don't depend on //base, because nothing there
// uses
// anything from /base.
// The folder holds headers that are duplicated in the Android source and
// need to
// provide a stable C ABI. Can't depend on //base.
// Exclude dir that should hold C headers.
// Exclude code that only runs inside a renderer process - renderer
// processes are excluded for now from the MiraclePtr project scope,
// because they are sensitive to performance regressions (to a much higher
// degree than, say, the Browser process).
// Note that some renderer-only directories are already excluded
// elsewhere - for example "v8/" is excluded in another part of this
// file.
// The common/ directories must be included in the rewrite as they contain
// code
// that is also used from the browser process.
// Also, note that isInThirdPartyLocation AST matcher in
// RewriteRawPtrFields.cpp explicitly includes third_party/blink
// (because it is in the same git repository as the rest of Chromium),
// but we go ahead and exclude most of it below (as Renderer-only code).
"/renderer/", // (e.g. //content/renderer/ or
// //components/visitedlink/renderer/
// or //third_party/blink/renderer)",
"third_party/blink/public/web/", // TODO: Consider renaming this directory
// to",
// public/renderer?",
// Contains sysroot dirs like debian_bullseye_amd64-sysroot/ that are not
// part of the repository.
// glslang_tab.cpp.h uses #line directive and modifies the file path to
// "MachineIndependent/glslang.y" so the isInThirdPartyLocation() filter
// cannot
// catch it even though glslang_tab.cpp.h is in third_party/
// Exclude paths in separate repositories - i.e. in directories that
// 1. Contain a ".git" subdirectory
// 2. And hasn't been excluded via "third_party/" substring in their path
// (see the isInThirdPartyLocation AST matcher in
// RewriteRawPtrFields.cpp).
// The list below has been generated with:
// $ find . -type d -name .git | \
// sed -e 's/\.git$//g' | \
// sed -e 's/\.\///g' | \
// grep -v third_party | \
// grep -v '^$' | \
// sort | uniq > ~/scratch/git-paths
// TODO( remove buildtools path