[WebIDL] Replace use of __is_polymorphic with standard std::is_polymorphic<>::value
https://bugs.webkit.org/show_bug.cgi?id=174012
Patch by Sam Weinig <sam@webkit.org> on 2017-06-30
Reviewed by Alex Christensen.
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation):
Replace __is_polymorphic with standard std::is_polymorphic<>::value. Remove clang
specific guard now that we are using something other compilers support.
* bindings/scripts/test/JS/JSInterfaceName.cpp:
* bindings/scripts/test/JS/JSMapLike.cpp:
* bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
* bindings/scripts/test/JS/JSTestException.cpp:
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
* bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
* bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
* bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestInterface.cpp:
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
* bindings/scripts/test/JS/JSTestIterable.cpp:
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
* bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
* bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
* bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
* bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
* bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
* bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
* bindings/scripts/test/JS/JSTestNode.cpp:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
* bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
* bindings/scripts/test/JS/JSTestSerialization.cpp:
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
* bindings/scripts/test/JS/JSTestStringifier.cpp:
* bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
* bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
* bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
* bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
* bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
* bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
Update test results.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@218997 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp b/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp
index a1c88f9..148328d 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp
@@ -199,12 +199,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7InterfaceName@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore13InterfaceNameE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails InterfaceName does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(InterfaceName), "InterfaceName is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<InterfaceName>::value, "InterfaceName is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// InterfaceName has subclasses. If InterfaceName has subclasses that get passed
// to toJS() we currently require InterfaceName you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp b/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp
index a1c0f4a..55a8b63 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp
@@ -368,12 +368,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7MapLike@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore7MapLikeE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails MapLike does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(MapLike), "MapLike is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<MapLike>::value, "MapLike is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// MapLike has subclasses. If MapLike has subclasses that get passed
// to toJS() we currently require MapLike you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp b/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp
index 131f36e..e226ed0 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp
@@ -317,12 +317,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7ReadOnlyMapLike@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore15ReadOnlyMapLikeE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails ReadOnlyMapLike does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(ReadOnlyMapLike), "ReadOnlyMapLike is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<ReadOnlyMapLike>::value, "ReadOnlyMapLike is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// ReadOnlyMapLike has subclasses. If ReadOnlyMapLike has subclasses that get passed
// to toJS() we currently require ReadOnlyMapLike you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp
index 11eb43d..1aa0b15 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp
@@ -278,12 +278,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestActiveDOMObject@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore19TestActiveDOMObjectE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestActiveDOMObject does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestActiveDOMObject), "TestActiveDOMObject is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestActiveDOMObject>::value, "TestActiveDOMObject is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestActiveDOMObject has subclasses. If TestActiveDOMObject has subclasses that get passed
// to toJS() we currently require TestActiveDOMObject you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp
index da2df79..a3fc638 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp
@@ -331,12 +331,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestCEReactions@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore15TestCEReactionsE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestCEReactions does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestCEReactions), "TestCEReactions is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestCEReactions>::value, "TestCEReactions is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestCEReactions has subclasses. If TestCEReactions has subclasses that get passed
// to toJS() we currently require TestCEReactions you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp
index 4eb4608..c648afd 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp
@@ -251,12 +251,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestCEReactionsStringifier@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore26TestCEReactionsStringifierE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestCEReactionsStringifier does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestCEReactionsStringifier), "TestCEReactionsStringifier is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestCEReactionsStringifier>::value, "TestCEReactionsStringifier is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestCEReactionsStringifier has subclasses. If TestCEReactionsStringifier has subclasses that get passed
// to toJS() we currently require TestCEReactionsStringifier you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp
index ccc9d36..3889a33 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp
@@ -191,12 +191,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestClassWithJSBuiltinConstructor@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore33TestClassWithJSBuiltinConstructorE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestClassWithJSBuiltinConstructor does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestClassWithJSBuiltinConstructor), "TestClassWithJSBuiltinConstructor is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestClassWithJSBuiltinConstructor>::value, "TestClassWithJSBuiltinConstructor is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestClassWithJSBuiltinConstructor has subclasses. If TestClassWithJSBuiltinConstructor has subclasses that get passed
// to toJS() we currently require TestClassWithJSBuiltinConstructor you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp
index 1e7f09e..83c068d 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp
@@ -189,12 +189,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestCustomConstructorWithNoInterfaceObject@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore42TestCustomConstructorWithNoInterfaceObjectE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestCustomConstructorWithNoInterfaceObject does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestCustomConstructorWithNoInterfaceObject), "TestCustomConstructorWithNoInterfaceObject is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestCustomConstructorWithNoInterfaceObject>::value, "TestCustomConstructorWithNoInterfaceObject is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestCustomConstructorWithNoInterfaceObject has subclasses. If TestCustomConstructorWithNoInterfaceObject has subclasses that get passed
// to toJS() we currently require TestCustomConstructorWithNoInterfaceObject you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp
index a2d139f..d2ae546 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp
@@ -294,12 +294,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestEventConstructor@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore20TestEventConstructorE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestEventConstructor does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestEventConstructor), "TestEventConstructor is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestEventConstructor>::value, "TestEventConstructor is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestEventConstructor has subclasses. If TestEventConstructor has subclasses that get passed
// to toJS() we currently require TestEventConstructor you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
index c996df5..d0de013 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
@@ -263,12 +263,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestEventTarget@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore15TestEventTargetE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestEventTarget does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestEventTarget), "TestEventTarget is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestEventTarget>::value, "TestEventTarget is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestEventTarget has subclasses. If TestEventTarget has subclasses that get passed
// to toJS() we currently require TestEventTarget you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp
index 6562eae..921b68d 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp
@@ -221,12 +221,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestException@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore13TestExceptionE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestException does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestException), "TestException is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestException>::value, "TestException is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestException has subclasses. If TestException has subclasses that get passed
// to toJS() we currently require TestException you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp
index 0eb7b78..52d9ceb 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp
@@ -215,12 +215,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestGenerateIsReachable@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore23TestGenerateIsReachableE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestGenerateIsReachable does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestGenerateIsReachable), "TestGenerateIsReachable is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestGenerateIsReachable>::value, "TestGenerateIsReachable is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestGenerateIsReachable has subclasses. If TestGenerateIsReachable has subclasses that get passed
// to toJS() we currently require TestGenerateIsReachable you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp
index 7354ac3..6899ccf 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp
@@ -596,12 +596,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestGlobalObject@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore16TestGlobalObjectE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestGlobalObject does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestGlobalObject), "TestGlobalObject is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestGlobalObject>::value, "TestGlobalObject is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestGlobalObject has subclasses. If TestGlobalObject has subclasses that get passed
// to toJS() we currently require TestGlobalObject you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp
index 275b444..ed8686b 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp
@@ -277,12 +277,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestIndexedSetterNoIdentifier@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore29TestIndexedSetterNoIdentifierE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestIndexedSetterNoIdentifier does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestIndexedSetterNoIdentifier), "TestIndexedSetterNoIdentifier is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestIndexedSetterNoIdentifier>::value, "TestIndexedSetterNoIdentifier is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestIndexedSetterNoIdentifier has subclasses. If TestIndexedSetterNoIdentifier has subclasses that get passed
// to toJS() we currently require TestIndexedSetterNoIdentifier you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp
index 5ec55fd..65e4fbd 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp
@@ -277,12 +277,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestIndexedSetterThrowingException@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore34TestIndexedSetterThrowingExceptionE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestIndexedSetterThrowingException does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestIndexedSetterThrowingException), "TestIndexedSetterThrowingException is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestIndexedSetterThrowingException>::value, "TestIndexedSetterThrowingException is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestIndexedSetterThrowingException has subclasses. If TestIndexedSetterThrowingException has subclasses that get passed
// to toJS() we currently require TestIndexedSetterThrowingException you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp
index f781121..421e636 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp
@@ -309,12 +309,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestIndexedSetterWithIdentifier@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore31TestIndexedSetterWithIdentifierE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestIndexedSetterWithIdentifier does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestIndexedSetterWithIdentifier), "TestIndexedSetterWithIdentifier is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestIndexedSetterWithIdentifier>::value, "TestIndexedSetterWithIdentifier is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestIndexedSetterWithIdentifier has subclasses. If TestIndexedSetterWithIdentifier has subclasses that get passed
// to toJS() we currently require TestIndexedSetterWithIdentifier you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
index 417944c..9f991cc 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
@@ -976,13 +976,11 @@
JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject* globalObject, Ref<TestInterface>&& impl)
{
-#if COMPILER(CLANG)
// If you hit this failure the interface definition has the ImplementationLacksVTable
// attribute. You should remove that attribute. If the class has subclasses
// that may be passed through this toJS() function you should use the SkipVTableValidation
// attribute to TestInterface.
- static_assert(!__is_polymorphic(TestInterface), "TestInterface is polymorphic but the IDL claims it is not");
-#endif
+ static_assert(!std::is_polymorphic<TestInterface>::value, "TestInterface is polymorphic but the IDL claims it is not");
return createWrapper<TestInterface>(globalObject, WTFMove(impl));
}
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp
index 32e42d7..07ec5de 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp
@@ -192,13 +192,11 @@
JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject* globalObject, Ref<TestInterfaceLeadingUnderscore>&& impl)
{
-#if COMPILER(CLANG)
// If you hit this failure the interface definition has the ImplementationLacksVTable
// attribute. You should remove that attribute. If the class has subclasses
// that may be passed through this toJS() function you should use the SkipVTableValidation
// attribute to TestInterfaceLeadingUnderscore.
- static_assert(!__is_polymorphic(TestInterfaceLeadingUnderscore), "TestInterfaceLeadingUnderscore is polymorphic but the IDL claims it is not");
-#endif
+ static_assert(!std::is_polymorphic<TestInterfaceLeadingUnderscore>::value, "TestInterfaceLeadingUnderscore is polymorphic but the IDL claims it is not");
return createWrapper<TestInterfaceLeadingUnderscore>(globalObject, WTFMove(impl));
}
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp
index db265e7..bcf1570 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp
@@ -261,12 +261,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestIterable@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore12TestIterableE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestIterable does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestIterable), "TestIterable is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestIterable>::value, "TestIterable is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestIterable has subclasses. If TestIterable has subclasses that get passed
// to toJS() we currently require TestIterable you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp
index 2776ba9..28c6601 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp
@@ -217,12 +217,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestMediaQueryListListener@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore26TestMediaQueryListListenerE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestMediaQueryListListener does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestMediaQueryListListener), "TestMediaQueryListListener is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestMediaQueryListListener>::value, "TestMediaQueryListListener is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestMediaQueryListListener has subclasses. If TestMediaQueryListListener has subclasses that get passed
// to toJS() we currently require TestMediaQueryListListener you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp
index cfdf260..86d16a7 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp
@@ -343,12 +343,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedAndIndexedSetterNoIdentifier@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore37TestNamedAndIndexedSetterNoIdentifierE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedAndIndexedSetterNoIdentifier does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedAndIndexedSetterNoIdentifier), "TestNamedAndIndexedSetterNoIdentifier is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedAndIndexedSetterNoIdentifier>::value, "TestNamedAndIndexedSetterNoIdentifier is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedAndIndexedSetterNoIdentifier has subclasses. If TestNamedAndIndexedSetterNoIdentifier has subclasses that get passed
// to toJS() we currently require TestNamedAndIndexedSetterNoIdentifier you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp
index 758057b..addcfaa 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp
@@ -343,12 +343,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedAndIndexedSetterThrowingException@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore42TestNamedAndIndexedSetterThrowingExceptionE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedAndIndexedSetterThrowingException does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedAndIndexedSetterThrowingException), "TestNamedAndIndexedSetterThrowingException is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedAndIndexedSetterThrowingException>::value, "TestNamedAndIndexedSetterThrowingException is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedAndIndexedSetterThrowingException has subclasses. If TestNamedAndIndexedSetterThrowingException has subclasses that get passed
// to toJS() we currently require TestNamedAndIndexedSetterThrowingException you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp
index e44e678..c0c7680 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp
@@ -397,12 +397,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedAndIndexedSetterWithIdentifier@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore39TestNamedAndIndexedSetterWithIdentifierE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedAndIndexedSetterWithIdentifier does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedAndIndexedSetterWithIdentifier), "TestNamedAndIndexedSetterWithIdentifier is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedAndIndexedSetterWithIdentifier>::value, "TestNamedAndIndexedSetterWithIdentifier is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedAndIndexedSetterWithIdentifier has subclasses. If TestNamedAndIndexedSetterWithIdentifier has subclasses that get passed
// to toJS() we currently require TestNamedAndIndexedSetterWithIdentifier you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp
index ce17876..3b75551 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp
@@ -230,12 +230,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedConstructor@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore20TestNamedConstructorE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedConstructor does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedConstructor), "TestNamedConstructor is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedConstructor>::value, "TestNamedConstructor is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedConstructor has subclasses. If TestNamedConstructor has subclasses that get passed
// to toJS() we currently require TestNamedConstructor you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp
index c6557c2..75820dd 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp
@@ -256,12 +256,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedDeleterNoIdentifier@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore28TestNamedDeleterNoIdentifierE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedDeleterNoIdentifier does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedDeleterNoIdentifier), "TestNamedDeleterNoIdentifier is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedDeleterNoIdentifier>::value, "TestNamedDeleterNoIdentifier is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedDeleterNoIdentifier has subclasses. If TestNamedDeleterNoIdentifier has subclasses that get passed
// to toJS() we currently require TestNamedDeleterNoIdentifier you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp
index b3f0cf9..f9c33d1 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp
@@ -270,12 +270,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedDeleterThrowingException@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore33TestNamedDeleterThrowingExceptionE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedDeleterThrowingException does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedDeleterThrowingException), "TestNamedDeleterThrowingException is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedDeleterThrowingException>::value, "TestNamedDeleterThrowingException is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedDeleterThrowingException has subclasses. If TestNamedDeleterThrowingException has subclasses that get passed
// to toJS() we currently require TestNamedDeleterThrowingException you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp
index 18944ef..b4f336b 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp
@@ -287,12 +287,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedDeleterWithIdentifier@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore30TestNamedDeleterWithIdentifierE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedDeleterWithIdentifier does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedDeleterWithIdentifier), "TestNamedDeleterWithIdentifier is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedDeleterWithIdentifier>::value, "TestNamedDeleterWithIdentifier is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedDeleterWithIdentifier has subclasses. If TestNamedDeleterWithIdentifier has subclasses that get passed
// to toJS() we currently require TestNamedDeleterWithIdentifier you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp
index 5f1f685..997a8f4 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp
@@ -274,12 +274,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedDeleterWithIndexedGetter@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore33TestNamedDeleterWithIndexedGetterE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedDeleterWithIndexedGetter does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedDeleterWithIndexedGetter), "TestNamedDeleterWithIndexedGetter is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedDeleterWithIndexedGetter>::value, "TestNamedDeleterWithIndexedGetter is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedDeleterWithIndexedGetter has subclasses. If TestNamedDeleterWithIndexedGetter has subclasses that get passed
// to toJS() we currently require TestNamedDeleterWithIndexedGetter you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp
index ad8316f..3e809b6 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp
@@ -235,12 +235,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedGetterCallWith@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore23TestNamedGetterCallWithE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedGetterCallWith does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedGetterCallWith), "TestNamedGetterCallWith is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedGetterCallWith>::value, "TestNamedGetterCallWith is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedGetterCallWith has subclasses. If TestNamedGetterCallWith has subclasses that get passed
// to toJS() we currently require TestNamedGetterCallWith you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp
index 4c1d7cf..2089a06 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp
@@ -235,12 +235,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedGetterNoIdentifier@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore27TestNamedGetterNoIdentifierE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedGetterNoIdentifier does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedGetterNoIdentifier), "TestNamedGetterNoIdentifier is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedGetterNoIdentifier>::value, "TestNamedGetterNoIdentifier is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedGetterNoIdentifier has subclasses. If TestNamedGetterNoIdentifier has subclasses that get passed
// to toJS() we currently require TestNamedGetterNoIdentifier you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp
index 7949104..aabfb69 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp
@@ -263,12 +263,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedGetterWithIdentifier@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore29TestNamedGetterWithIdentifierE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedGetterWithIdentifier does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedGetterWithIdentifier), "TestNamedGetterWithIdentifier is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedGetterWithIdentifier>::value, "TestNamedGetterWithIdentifier is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedGetterWithIdentifier has subclasses. If TestNamedGetterWithIdentifier has subclasses that get passed
// to toJS() we currently require TestNamedGetterWithIdentifier you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp
index 583603f..54b81b8 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp
@@ -297,12 +297,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedSetterNoIdentifier@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore27TestNamedSetterNoIdentifierE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedSetterNoIdentifier does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedSetterNoIdentifier), "TestNamedSetterNoIdentifier is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedSetterNoIdentifier>::value, "TestNamedSetterNoIdentifier is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedSetterNoIdentifier has subclasses. If TestNamedSetterNoIdentifier has subclasses that get passed
// to toJS() we currently require TestNamedSetterNoIdentifier you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp
index 9c0444e..45dfec7 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp
@@ -297,12 +297,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedSetterThrowingException@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore32TestNamedSetterThrowingExceptionE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedSetterThrowingException does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedSetterThrowingException), "TestNamedSetterThrowingException is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedSetterThrowingException>::value, "TestNamedSetterThrowingException is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedSetterThrowingException has subclasses. If TestNamedSetterThrowingException has subclasses that get passed
// to toJS() we currently require TestNamedSetterThrowingException you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp
index 7794e23..2743e87 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp
@@ -328,12 +328,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedSetterWithIdentifier@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore29TestNamedSetterWithIdentifierE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedSetterWithIdentifier does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedSetterWithIdentifier), "TestNamedSetterWithIdentifier is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedSetterWithIdentifier>::value, "TestNamedSetterWithIdentifier is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedSetterWithIdentifier has subclasses. If TestNamedSetterWithIdentifier has subclasses that get passed
// to toJS() we currently require TestNamedSetterWithIdentifier you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp
index 5a25c3a..2769b0a 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp
@@ -284,12 +284,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedSetterWithOverrideBuiltins@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore35TestNamedSetterWithOverrideBuiltinsE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedSetterWithOverrideBuiltins does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedSetterWithOverrideBuiltins), "TestNamedSetterWithOverrideBuiltins is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedSetterWithOverrideBuiltins>::value, "TestNamedSetterWithOverrideBuiltins is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedSetterWithOverrideBuiltins has subclasses. If TestNamedSetterWithOverrideBuiltins has subclasses that get passed
// to toJS() we currently require TestNamedSetterWithOverrideBuiltins you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp
index 8f0aaae..2ebec64 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp
@@ -366,12 +366,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedSetterWithUnforgableProperties@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore39TestNamedSetterWithUnforgablePropertiesE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedSetterWithUnforgableProperties does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedSetterWithUnforgableProperties), "TestNamedSetterWithUnforgableProperties is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedSetterWithUnforgableProperties>::value, "TestNamedSetterWithUnforgableProperties is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedSetterWithUnforgableProperties has subclasses. If TestNamedSetterWithUnforgableProperties has subclasses that get passed
// to toJS() we currently require TestNamedSetterWithUnforgableProperties you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp
index b9331e7..d25616e 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp
@@ -353,12 +353,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore58TestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins), "TestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins>::value, "TestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins has subclasses. If TestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins has subclasses that get passed
// to toJS() we currently require TestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp
index 947eebf..fc6a719 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp
@@ -428,12 +428,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestNode@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore8TestNodeE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestNode does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestNode), "TestNode is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestNode>::value, "TestNode is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestNode has subclasses. If TestNode has subclasses that get passed
// to toJS() we currently require TestNode you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
index 98d125a..85ad7e3 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
@@ -8043,12 +8043,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestObj@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore7TestObjE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestObj does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestObj), "TestObj is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestObj>::value, "TestObj is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestObj has subclasses. If TestObj has subclasses that get passed
// to toJS() we currently require TestObj you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp
index 35be58b..56a5b21 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp
@@ -280,12 +280,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestOverloadedConstructors@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore26TestOverloadedConstructorsE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestOverloadedConstructors does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestOverloadedConstructors), "TestOverloadedConstructors is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestOverloadedConstructors>::value, "TestOverloadedConstructors is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestOverloadedConstructors has subclasses. If TestOverloadedConstructors has subclasses that get passed
// to toJS() we currently require TestOverloadedConstructors you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp
index 9837f05..3261cf2 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp
@@ -236,12 +236,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestOverloadedConstructorsWithSequence@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore38TestOverloadedConstructorsWithSequenceE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestOverloadedConstructorsWithSequence does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestOverloadedConstructorsWithSequence), "TestOverloadedConstructorsWithSequence is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestOverloadedConstructorsWithSequence>::value, "TestOverloadedConstructorsWithSequence is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestOverloadedConstructorsWithSequence has subclasses. If TestOverloadedConstructorsWithSequence has subclasses that get passed
// to toJS() we currently require TestOverloadedConstructorsWithSequence you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp
index 85e4290..8b60dc9 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp
@@ -266,12 +266,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestOverrideBuiltins@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore20TestOverrideBuiltinsE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestOverrideBuiltins does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestOverrideBuiltins), "TestOverrideBuiltins is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestOverrideBuiltins>::value, "TestOverrideBuiltins is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestOverrideBuiltins has subclasses. If TestOverrideBuiltins has subclasses that get passed
// to toJS() we currently require TestOverrideBuiltins you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp
index 32ce6d4..936229e 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp
@@ -275,12 +275,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestPromiseRejectionEvent@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore25TestPromiseRejectionEventE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestPromiseRejectionEvent does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestPromiseRejectionEvent), "TestPromiseRejectionEvent is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestPromiseRejectionEvent>::value, "TestPromiseRejectionEvent is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestPromiseRejectionEvent has subclasses. If TestPromiseRejectionEvent has subclasses that get passed
// to toJS() we currently require TestPromiseRejectionEvent you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp
index b429f4e..39df97d 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp
@@ -522,12 +522,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestSerialization@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore17TestSerializationE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestSerialization does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestSerialization), "TestSerialization is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestSerialization>::value, "TestSerialization is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestSerialization has subclasses. If TestSerialization has subclasses that get passed
// to toJS() we currently require TestSerialization you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
index b78a6fb..a565d02 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
@@ -374,12 +374,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestSerializedScriptValueInterface@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore34TestSerializedScriptValueInterfaceE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestSerializedScriptValueInterface does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestSerializedScriptValueInterface), "TestSerializedScriptValueInterface is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestSerializedScriptValueInterface>::value, "TestSerializedScriptValueInterface is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestSerializedScriptValueInterface has subclasses. If TestSerializedScriptValueInterface has subclasses that get passed
// to toJS() we currently require TestSerializedScriptValueInterface you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp
index 8bb712da..6305fff 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp
@@ -210,12 +210,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestStringifier@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore15TestStringifierE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestStringifier does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestStringifier), "TestStringifier is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestStringifier>::value, "TestStringifier is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestStringifier has subclasses. If TestStringifier has subclasses that get passed
// to toJS() we currently require TestStringifier you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp
index 2df079e..67719bc 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp
@@ -210,12 +210,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestStringifierAnonymousOperation@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore33TestStringifierAnonymousOperationE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestStringifierAnonymousOperation does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestStringifierAnonymousOperation), "TestStringifierAnonymousOperation is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestStringifierAnonymousOperation>::value, "TestStringifierAnonymousOperation is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestStringifierAnonymousOperation has subclasses. If TestStringifierAnonymousOperation has subclasses that get passed
// to toJS() we currently require TestStringifierAnonymousOperation you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp
index eb09cf7..3491040 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp
@@ -225,12 +225,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestStringifierNamedOperation@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore29TestStringifierNamedOperationE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestStringifierNamedOperation does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestStringifierNamedOperation), "TestStringifierNamedOperation is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestStringifierNamedOperation>::value, "TestStringifierNamedOperation is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestStringifierNamedOperation has subclasses. If TestStringifierNamedOperation has subclasses that get passed
// to toJS() we currently require TestStringifierNamedOperation you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp
index afb99a8..66f2c2b 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp
@@ -225,12 +225,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestStringifierOperationImplementedAs@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore37TestStringifierOperationImplementedAsE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestStringifierOperationImplementedAs does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestStringifierOperationImplementedAs), "TestStringifierOperationImplementedAs is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestStringifierOperationImplementedAs>::value, "TestStringifierOperationImplementedAs is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestStringifierOperationImplementedAs has subclasses. If TestStringifierOperationImplementedAs has subclasses that get passed
// to toJS() we currently require TestStringifierOperationImplementedAs you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp
index ceba9ea..9e64416 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp
@@ -210,12 +210,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestStringifierOperationNamedToString@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore37TestStringifierOperationNamedToStringE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestStringifierOperationNamedToString does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestStringifierOperationNamedToString), "TestStringifierOperationNamedToString is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestStringifierOperationNamedToString>::value, "TestStringifierOperationNamedToString is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestStringifierOperationNamedToString has subclasses. If TestStringifierOperationNamedToString has subclasses that get passed
// to toJS() we currently require TestStringifierOperationNamedToString you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp
index 2213dc0..52cc732 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp
@@ -232,12 +232,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestStringifierReadOnlyAttribute@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore32TestStringifierReadOnlyAttributeE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestStringifierReadOnlyAttribute does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestStringifierReadOnlyAttribute), "TestStringifierReadOnlyAttribute is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestStringifierReadOnlyAttribute>::value, "TestStringifierReadOnlyAttribute is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestStringifierReadOnlyAttribute has subclasses. If TestStringifierReadOnlyAttribute has subclasses that get passed
// to toJS() we currently require TestStringifierReadOnlyAttribute you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp
index e42f9c5..7ec17b3 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp
@@ -249,12 +249,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestStringifierReadWriteAttribute@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore33TestStringifierReadWriteAttributeE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestStringifierReadWriteAttribute does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestStringifierReadWriteAttribute), "TestStringifierReadWriteAttribute is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestStringifierReadWriteAttribute>::value, "TestStringifierReadWriteAttribute is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestStringifierReadWriteAttribute has subclasses. If TestStringifierReadWriteAttribute has subclasses that get passed
// to toJS() we currently require TestStringifierReadWriteAttribute you to opt out of binding hardening
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp
index 03c23ba..331266d 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp
@@ -898,12 +898,12 @@
void* expectedVTablePointer = reinterpret_cast<void*>(__identifier("??_7TestTypedefs@WebCore@@6B@"));
#else
void* expectedVTablePointer = &_ZTVN7WebCore12TestTypedefsE[2];
-#if COMPILER(CLANG)
+#endif
+
// If this fails TestTypedefs does not have a vtable, so you need to add the
// ImplementationLacksVTable attribute to the interface definition
- static_assert(__is_polymorphic(TestTypedefs), "TestTypedefs is not polymorphic");
-#endif
-#endif
+ static_assert(std::is_polymorphic<TestTypedefs>::value, "TestTypedefs is not polymorphic");
+
// If you hit this assertion you either have a use after free bug, or
// TestTypedefs has subclasses. If TestTypedefs has subclasses that get passed
// to toJS() we currently require TestTypedefs you to opt out of binding hardening