Commit c2919fdc authored by Nico Weber's avatar Nico Weber Committed by Commit Bot

Revert "Treat CheckedPtr specially in FindBadConstructsConsumer"

This reverts commit b8222e3d.

Reason for revert: Codebase doens't build with this change, https://crbug.com/1145992

Original change's description:
> Treat CheckedPtr specially in FindBadConstructsConsumer
>
> Treat CheckedPtr specially in FindBadConstructsConsumer for now as discussed in:
> https://groups.google.com/a/google.com/g/chrome-memory-safety/c/kw3i_zd3FW4/m/40FkyrLtAQAJ
> This CL helps to avoid "Complex constructor has an inlined body" and similar errors during go/miracleptr experiments.
>
> Bug: 1080832
> Change-Id: Ibfb6b3b418f36e2c6868b0fbd579d1bf18226ceb
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2487023
> Commit-Queue: Keishi Hattori <keishi@chromium.org>
> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> Reviewed-by: Bartek Nowierski <bartekn@chromium.org>
> Reviewed-by: Łukasz Anforowicz <lukasza@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#824252}

TBR=dcheng@chromium.org,keishi@chromium.org,lukasza@chromium.org,bartekn@chromium.org

Change-Id: Ia1012a029e4b4b2b8a4ed6e65eaaeb45f0298cf3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 1080832
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2520936Reviewed-by: default avatarNico Weber <thakis@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#824402}
parent aa1a5efe
......@@ -687,22 +687,20 @@ void FindBadConstructsConsumer::CountType(const Type* type,
case Type::TemplateSpecialization: {
TemplateName name =
dyn_cast<TemplateSpecializationType>(type)->getTemplateName();
bool whitelisted_template = false;
// HACK: I'm at a loss about how to get the syntax checker to get
// whether a template is externed or not. For the first pass here,
// just do simple string comparisons.
if (TemplateDecl* decl = name.getAsTemplateDecl()) {
std::string base_name = decl->getQualifiedNameAsString();
if (base_name == "std::basic_string") {
(*non_trivial_member)++;
break;
}
if (base_name == "base::CheckedPtr") {
(*trivial_member)++;
break;
}
std::string base_name = decl->getNameAsString();
if (base_name == "basic_string")
whitelisted_template = true;
}
if (whitelisted_template)
(*non_trivial_member)++;
else
(*templated_non_trivial_member)++;
break;
}
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef TOOLS_CLANG_PLUGINS_TESTS_BASE_MEMORY_CHECKED_PTR_H_
#define TOOLS_CLANG_PLUGINS_TESTS_BASE_MEMORY_CHECKED_PTR_H_
namespace base {
template <typename T>
class CheckedPtr {};
} // namespace base
using base::CheckedPtr;
#endif // TOOLS_CLANG_PLUGINS_TESTS_BASE_MEMORY_CHECKED_PTR_H_
......@@ -5,9 +5,6 @@
#ifndef MISSING_CTOR_H_
#define MISSING_CTOR_H_
#include <string>
#include "base/memory/checked_ptr.h"
struct MyString {
MyString();
~MyString();
......@@ -94,80 +91,4 @@ union UnionDoesNotWarn {
int z;
};
class StringDoesNotWarn {
public:
StringDoesNotWarn() = default;
~StringDoesNotWarn() = default;
private:
std::string foo_;
};
class ThreeStringsDoesNotWarn {
public:
ThreeStringsDoesNotWarn() = default;
~ThreeStringsDoesNotWarn() = default;
private:
std::string one_;
std::string two_;
std::string three_;
};
class FourStringsWarns {
public:
FourStringsWarns() = default;
~FourStringsWarns() = default;
private:
std::string one_;
std::string two_;
std::string three_;
std::string four_;
};
class CheckedPtrDoesNotWarn {
public:
CheckedPtrDoesNotWarn() = default;
~CheckedPtrDoesNotWarn() = default;
private:
CheckedPtr<CheckedPtrDoesNotWarn> foo_;
};
class NineCheckedPtrDoesNotWarn {
public:
NineCheckedPtrDoesNotWarn() = default;
~NineCheckedPtrDoesNotWarn() = default;
private:
CheckedPtr<NineCheckedPtrDoesNotWarn> one_;
CheckedPtr<NineCheckedPtrDoesNotWarn> two_;
CheckedPtr<NineCheckedPtrDoesNotWarn> three_;
CheckedPtr<NineCheckedPtrDoesNotWarn> four_;
CheckedPtr<NineCheckedPtrDoesNotWarn> five_;
CheckedPtr<NineCheckedPtrDoesNotWarn> six_;
CheckedPtr<NineCheckedPtrDoesNotWarn> seven_;
CheckedPtr<NineCheckedPtrDoesNotWarn> eight_;
CheckedPtr<NineCheckedPtrDoesNotWarn> nine_;
};
class TenCheckedPtrWarns {
public:
TenCheckedPtrWarns() = default;
~TenCheckedPtrWarns() = default;
private:
CheckedPtr<TenCheckedPtrWarns> one_;
CheckedPtr<TenCheckedPtrWarns> two_;
CheckedPtr<TenCheckedPtrWarns> three_;
CheckedPtr<TenCheckedPtrWarns> four_;
CheckedPtr<TenCheckedPtrWarns> five_;
CheckedPtr<TenCheckedPtrWarns> six_;
CheckedPtr<TenCheckedPtrWarns> seven_;
CheckedPtr<TenCheckedPtrWarns> eight_;
CheckedPtr<TenCheckedPtrWarns> nine_;
CheckedPtr<TenCheckedPtrWarns> ten_;
};
#endif // MISSING_CTOR_H_
In file included from missing_ctor.cpp:5:
./missing_ctor.h:28:1: warning: [chromium-style] Complex class/struct needs an explicit out-of-line constructor.
./missing_ctor.h:25:1: warning: [chromium-style] Complex class/struct needs an explicit out-of-line constructor.
class MissingCtorsArentOKInHeader {
^
./missing_ctor.h:28:1: warning: [chromium-style] Complex class/struct needs an explicit out-of-line destructor.
./missing_ctor.h:54:3: warning: [chromium-style] Complex constructor has an inlined body.
./missing_ctor.h:25:1: warning: [chromium-style] Complex class/struct needs an explicit out-of-line destructor.
./missing_ctor.h:51:3: warning: [chromium-style] Complex constructor has an inlined body.
ExplicitlyDefaultedInlineAlsoWarns() = default;
^
./missing_ctor.h:56:3: warning: [chromium-style] Complex constructor has an inlined body.
./missing_ctor.h:53:3: warning: [chromium-style] Complex constructor has an inlined body.
ExplicitlyDefaultedInlineAlsoWarns(
^
./missing_ctor.h:55:3: warning: [chromium-style] Complex destructor has an inline body.
./missing_ctor.h:52:3: warning: [chromium-style] Complex destructor has an inline body.
~ExplicitlyDefaultedInlineAlsoWarns() = default;
^
./missing_ctor.h:119:3: warning: [chromium-style] Complex constructor has an inlined body.
FourStringsWarns() = default;
^
./missing_ctor.h:157:3: warning: [chromium-style] Complex constructor has an inlined body.
TenCheckedPtrWarns() = default;
^
7 warnings generated.
5 warnings generated.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment