From 81290c4851bceef1a3aeda23f17116dcadd2faa6 Mon Sep 17 00:00:00 2001 From: Michael Lippautz Date: Wed, 13 May 2020 23:09:27 +0200 Subject: [PATCH] cppgc: Use static_assert to force semi colon after macro Bug: chromium:1056170 Change-Id: I1b6787ecea6ad58173a0bcc8e8d0862a5b19d299 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2199342 Commit-Queue: Michael Lippautz Auto-Submit: Michael Lippautz Reviewed-by: Omer Katz Cr-Commit-Position: refs/heads/master@{#67784} --- include/cppgc/garbage-collected.h | 5 ++--- include/cppgc/macros.h | 6 +----- include/cppgc/prefinalizer.h | 3 +-- src/heap/cppgc/heap.h | 1 + 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/include/cppgc/garbage-collected.h b/include/cppgc/garbage-collected.h index c263a9fecf..299b861d84 100644 --- a/include/cppgc/garbage-collected.h +++ b/include/cppgc/garbage-collected.h @@ -8,7 +8,6 @@ #include #include "cppgc/internal/api-constants.h" -#include "cppgc/macros.h" #include "cppgc/platform.h" #include "cppgc/trace-trait.h" #include "cppgc/type-traits.h" @@ -161,7 +160,7 @@ class GarbageCollectedMixin : public internal::GarbageCollectedBase { } \ \ private: \ - friend class internal::__thisIsHereToForceASemicolonAfterThisMacro + static_assert(true, "Force semicolon.") /** * Merge two or more Mixins into one. @@ -185,7 +184,7 @@ class GarbageCollectedMixin : public internal::GarbageCollectedBase { } \ \ private: \ - friend class internal::__thisIsHereToForceASemicolonAfterThisMacro + static_assert(true, "Force semicolon.") } // namespace cppgc diff --git a/include/cppgc/macros.h b/include/cppgc/macros.h index 7c7a10e433..adff32e424 100644 --- a/include/cppgc/macros.h +++ b/include/cppgc/macros.h @@ -7,10 +7,6 @@ namespace cppgc { -namespace internal { -class __thisIsHereToForceASemicolonAfterThisMacro {}; -} // namespace internal - // Use if the object is only stack allocated. #define CPPGC_STACK_ALLOCATED() \ public: \ @@ -19,7 +15,7 @@ class __thisIsHereToForceASemicolonAfterThisMacro {}; private: \ void* operator new(size_t) = delete; \ void* operator new(size_t, void*) = delete; \ - friend class internal::__thisIsHereToForceASemicolonAfterThisMacro + static_assert(true, "Force semicolon.") } // namespace cppgc diff --git a/include/cppgc/prefinalizer.h b/include/cppgc/prefinalizer.h index 2f6d68a1da..6c74164599 100644 --- a/include/cppgc/prefinalizer.h +++ b/include/cppgc/prefinalizer.h @@ -9,7 +9,6 @@ #include "cppgc/internal/compiler-specific.h" #include "cppgc/internal/prefinalizer-handler.h" #include "cppgc/liveness-broker.h" -#include "cppgc/macros.h" namespace cppgc { @@ -47,7 +46,7 @@ class PrefinalizerRegistration final { private: \ CPPGC_NO_UNIQUE_ADDRESS internal::PrefinalizerRegistration \ prefinalizer_dummy_{this}; \ - friend class internal::__thisIsHereToForceASemicolonAfterThisMacro + static_assert(true, "Force semicolon.") } // namespace cppgc diff --git a/src/heap/cppgc/heap.h b/src/heap/cppgc/heap.h index fa19b74be5..ac08085cac 100644 --- a/src/heap/cppgc/heap.h +++ b/src/heap/cppgc/heap.h @@ -12,6 +12,7 @@ #include "include/cppgc/internal/gc-info.h" #include "include/cppgc/internal/persistent-node.h" #include "include/cppgc/liveness-broker.h" +#include "include/cppgc/macros.h" #include "src/base/page-allocator.h" #include "src/heap/cppgc/heap-object-header.h" #include "src/heap/cppgc/marker.h"