<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[279073] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/279073">279073</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2021-06-21 11:48:29 -0700 (Mon, 21 Jun 2021)</dd>
</dl>

<h3>Log Message</h3>
<pre>makeUnique cannot be used to instantiate function-local classes
https://bugs.webkit.org/show_bug.cgi?id=227163

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-06-21
Reviewed by Antti Koivisto.

Source/bmalloc:

Make WTF_MAKE_FAST_ALLOCATED and similar macros work in function
local classes. Mark the typedef that is used to enforce semicolon
after the macro as unused to avoid unused typedef warning.
Fixes cases where the compiler is able to prove that it sees all the
use sites of the class and the typedef is not used.

* bmalloc/BCompiler.h:
* bmalloc/BMalloced.h:
* bmalloc/IsoHeap.h:
* bmalloc/IsoHeapInlines.h:

Source/JavaScriptCore:

Make JSC_MAKE_PARSER_ARENA_DELETABLE_ALLOCATED
consistent with WTF_MAKE_FAST_ALLOCATED behavior
with respect to unused typedefs inside the macro.

* parser/Nodes.h:

Source/WTF:

Make WTF_MAKE_FAST_ALLOCATED and similar macros work in function
local classes. Mark the typedef that is used to enforce semicolon
after the macro as unused to avoid unused typedef warning.
Fixes cases where the compiler is able to prove that it sees all the
use sites of the class and the typedef is not used.

* wtf/Compiler.h:
* wtf/FastMalloc.h:

Tools:

Test that WTF_MAKE_FAST_ALLOCATED and similar macros work in function
local classes.

* TestWebKitAPI/Tests/WTF/StdLibExtras.cpp:
(TestWebKitAPI::TEST):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserNodesh">trunk/Source/JavaScriptCore/parser/Nodes.h</a></li>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFwtfCompilerh">trunk/Source/WTF/wtf/Compiler.h</a></li>
<li><a href="#trunkSourceWTFwtfFastMalloch">trunk/Source/WTF/wtf/FastMalloc.h</a></li>
<li><a href="#trunkSourceWTFwtfJSValueMalloch">trunk/Source/WTF/wtf/JSValueMalloc.h</a></li>
<li><a href="#trunkSourcebmallocChangeLog">trunk/Source/bmalloc/ChangeLog</a></li>
<li><a href="#trunkSourcebmallocbmallocBCompilerh">trunk/Source/bmalloc/bmalloc/BCompiler.h</a></li>
<li><a href="#trunkSourcebmallocbmallocBMallocedh">trunk/Source/bmalloc/bmalloc/BMalloced.h</a></li>
<li><a href="#trunkSourcebmallocbmallocIsoHeaph">trunk/Source/bmalloc/bmalloc/IsoHeap.h</a></li>
<li><a href="#trunkSourcebmallocbmallocIsoHeapInlinesh">trunk/Source/bmalloc/bmalloc/IsoHeapInlines.h</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWTFStdLibExtrascpp">trunk/Tools/TestWebKitAPI/Tests/WTF/StdLibExtras.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (279072 => 279073)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog    2021-06-21 18:46:31 UTC (rev 279072)
+++ trunk/Source/JavaScriptCore/ChangeLog       2021-06-21 18:48:29 UTC (rev 279073)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2021-06-21  Kimmo Kinnunen  <kkinnunen@apple.com>
+
+        makeUnique cannot be used to instantiate function-local classes
+        https://bugs.webkit.org/show_bug.cgi?id=227163
+
+        Reviewed by Antti Koivisto.
+
+        Make JSC_MAKE_PARSER_ARENA_DELETABLE_ALLOCATED
+        consistent with WTF_MAKE_FAST_ALLOCATED behavior
+        with respect to unused typedefs inside the macro.
+
+        * parser/Nodes.h:
+
</ins><span class="cx"> 2021-06-20  Yusuke Suzuki  <ysuzuki@apple.com>
</span><span class="cx"> 
</span><span class="cx">         [JSC] Add ValueOf fast path in toPrimitive
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserNodesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Nodes.h (279072 => 279073)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Nodes.h       2021-06-21 18:46:31 UTC (rev 279072)
+++ trunk/Source/JavaScriptCore/parser/Nodes.h  2021-06-21 18:48:29 UTC (rev 279073)
</span><span class="lines">@@ -129,7 +129,7 @@
</span><span class="cx">     public: \
</span><span class="cx">         JSC_MAKE_PARSER_ARENA_DELETABLE_ALLOCATED_IMPL(__classToNew) \
</span><span class="cx">     private: \
</span><del>-        typedef int __thisIsHereToForceASemicolonAfterThisMacro
</del><ins>+        typedef int __thisIsHereToForceASemicolonAfterThisMacro UNUSED_TYPE_ALIAS
</ins><span class="cx"> 
</span><span class="cx">     DECLARE_ALLOCATOR_WITH_HEAP_IDENTIFIER(ParserArenaRoot);
</span><span class="cx">     class ParserArenaRoot {
</span></span></pre></div>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (279072 => 279073)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog       2021-06-21 18:46:31 UTC (rev 279072)
+++ trunk/Source/WTF/ChangeLog  2021-06-21 18:48:29 UTC (rev 279073)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2021-06-21  Kimmo Kinnunen  <kkinnunen@apple.com>
+
+        makeUnique cannot be used to instantiate function-local classes
+        https://bugs.webkit.org/show_bug.cgi?id=227163
+
+        Reviewed by Antti Koivisto.
+
+        Make WTF_MAKE_FAST_ALLOCATED and similar macros work in function
+        local classes. Mark the typedef that is used to enforce semicolon
+        after the macro as unused to avoid unused typedef warning.
+        Fixes cases where the compiler is able to prove that it sees all the
+        use sites of the class and the typedef is not used.
+
+        * wtf/Compiler.h:
+        * wtf/FastMalloc.h:
+
</ins><span class="cx"> 2021-06-21  Philippe Normand  <pnormand@igalia.com>
</span><span class="cx"> 
</span><span class="cx">         Unreviewed build fix after r279062
</span></span></pre></div>
<a id="trunkSourceWTFwtfCompilerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/Compiler.h (279072 => 279073)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/Compiler.h  2021-06-21 18:46:31 UTC (rev 279072)
+++ trunk/Source/WTF/wtf/Compiler.h     2021-06-21 18:48:29 UTC (rev 279073)
</span><span class="lines">@@ -352,6 +352,16 @@
</span><span class="cx"> #define UNUSED_FUNCTION
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><ins>+/* UNUSED_TYPE_ALIAS */
+
+#if !defined(UNUSED_TYPE_ALIAS) && COMPILER(GCC_COMPATIBLE)
+#define UNUSED_TYPE_ALIAS __attribute__((unused))
+#endif
+
+#if !defined(UNUSED_TYPE_ALIAS)
+#define UNUSED_TYPE_ALIAS
+#endif
+
</ins><span class="cx"> /* REFERENCED_FROM_ASM */
</span><span class="cx"> 
</span><span class="cx"> #if !defined(REFERENCED_FROM_ASM) && COMPILER(GCC_COMPATIBLE)
</span></span></pre></div>
<a id="trunkSourceWTFwtfFastMalloch"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/FastMalloc.h (279072 => 279073)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/FastMalloc.h        2021-06-21 18:46:31 UTC (rev 279072)
+++ trunk/Source/WTF/wtf/FastMalloc.h   2021-06-21 18:48:29 UTC (rev 279073)
</span><span class="lines">@@ -400,11 +400,11 @@
</span><span class="cx"> public: \
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED_IMPL \
</span><span class="cx"> private: \
</span><del>-using __thisIsHereToForceASemicolonAfterThisMacro = int
</del><ins>+using __thisIsHereToForceASemicolonAfterThisMacro UNUSED_TYPE_ALIAS = int
</ins><span class="cx"> 
</span><span class="cx"> #define WTF_MAKE_STRUCT_FAST_ALLOCATED \
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED_IMPL \
</span><del>-using __thisIsHereToForceASemicolonAfterThisMacro = int
</del><ins>+using __thisIsHereToForceASemicolonAfterThisMacro UNUSED_TYPE_ALIAS = int
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(MALLOC_HEAP_BREAKDOWN)
</span><span class="cx"> 
</span><span class="lines">@@ -443,7 +443,7 @@
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED_WITH_HEAP_IDENTIFIER_IMPL(classname) \
</span><span class="cx"> private: \
</span><span class="cx">     WTF_EXPORT_PRIVATE static WTF::DebugHeap& debugHeap(const char*); \
</span><del>-using __thisIsHereToForceASemicolonAfterThisMacro = int
</del><ins>+using __thisIsHereToForceASemicolonAfterThisMacro UNUSED_TYPE_ALIAS = int
</ins><span class="cx"> 
</span><span class="cx"> #define WTF_MAKE_STRUCT_FAST_ALLOCATED_WITH_HEAP_IDENTIFIER(className) \
</span><span class="cx"> private: \
</span><span class="lines">@@ -450,7 +450,7 @@
</span><span class="cx">     WTF_EXPORT_PRIVATE static WTF::DebugHeap& debugHeap(const char*); \
</span><span class="cx"> public: \
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED_WITH_HEAP_IDENTIFIER_IMPL(className) \
</span><del>-using __thisIsHereToForceASemicolonAfterThisMacro = int
</del><ins>+using __thisIsHereToForceASemicolonAfterThisMacro UNUSED_TYPE_ALIAS = int
</ins><span class="cx"> 
</span><span class="cx"> #else
</span><span class="cx"> 
</span><span class="lines">@@ -461,11 +461,11 @@
</span><span class="cx"> public: \
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED_WITH_HEAP_IDENTIFIER_IMPL(classname) \
</span><span class="cx"> private: \
</span><del>-using __thisIsHereToForceASemicolonAfterThisMacro = int
</del><ins>+using __thisIsHereToForceASemicolonAfterThisMacro UNUSED_TYPE_ALIAS = int
</ins><span class="cx"> 
</span><span class="cx"> #define WTF_MAKE_STRUCT_FAST_ALLOCATED_WITH_HEAP_IDENTIFIER(className) \
</span><span class="cx"> public: \
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED_WITH_HEAP_IDENTIFIER_IMPL(className) \
</span><del>-using __thisIsHereToForceASemicolonAfterThisMacro = int
</del><ins>+using __thisIsHereToForceASemicolonAfterThisMacro UNUSED_TYPE_ALIAS = int
</ins><span class="cx"> 
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWTFwtfJSValueMalloch"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/JSValueMalloc.h (279072 => 279073)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/JSValueMalloc.h     2021-06-21 18:46:31 UTC (rev 279072)
+++ trunk/Source/WTF/wtf/JSValueMalloc.h        2021-06-21 18:48:29 UTC (rev 279073)
</span><span class="lines">@@ -64,7 +64,7 @@
</span><span class="cx">         return location; \
</span><span class="cx">     } \
</span><span class="cx"> private: \
</span><del>-typedef int __thisIsHereToForceASemicolonAfterThisMacro
</del><ins>+typedef int __thisIsHereToForceASemicolonAfterThisMacro UNUSED_TYPE_ALIAS
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> struct JSValueMalloc {
</span></span></pre></div>
<a id="trunkSourcebmallocChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/ChangeLog (279072 => 279073)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/ChangeLog   2021-06-21 18:46:31 UTC (rev 279072)
+++ trunk/Source/bmalloc/ChangeLog      2021-06-21 18:48:29 UTC (rev 279073)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2021-06-21  Kimmo Kinnunen  <kkinnunen@apple.com>
+
+        makeUnique cannot be used to instantiate function-local classes
+        https://bugs.webkit.org/show_bug.cgi?id=227163
+
+        Reviewed by Antti Koivisto.
+
+        Make WTF_MAKE_FAST_ALLOCATED and similar macros work in function
+        local classes. Mark the typedef that is used to enforce semicolon
+        after the macro as unused to avoid unused typedef warning.
+        Fixes cases where the compiler is able to prove that it sees all the
+        use sites of the class and the typedef is not used.
+
+        * bmalloc/BCompiler.h:
+        * bmalloc/BMalloced.h:
+        * bmalloc/IsoHeap.h:
+        * bmalloc/IsoHeapInlines.h:
+
</ins><span class="cx"> 2021-06-17  Mark Lam  <mark.lam@apple.com>
</span><span class="cx"> 
</span><span class="cx">         Define MacroAssemblerARM64E::numberOfPACBits based on OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH).
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocBCompilerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/BCompiler.h (279072 => 279073)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/BCompiler.h 2021-06-21 18:46:31 UTC (rev 279072)
+++ trunk/Source/bmalloc/bmalloc/BCompiler.h    2021-06-21 18:48:29 UTC (rev 279073)
</span><span class="lines">@@ -79,3 +79,13 @@
</span><span class="cx"> #if !defined(BFALLTHROUGH)
</span><span class="cx"> #define BFALLTHROUGH
</span><span class="cx"> #endif
</span><ins>+
+/* BUNUSED_TYPE_ALIAS */
+
+#if !defined(BUNUSED_TYPE_ALIAS) && BCOMPILER(GCC_COMPATIBLE)
+#define BUNUSED_TYPE_ALIAS __attribute__((unused))
+#endif
+
+#if !defined(BUNUSED_TYPE_ALIAS)
+#define BUNUSED_TYPE_ALIAS
+#endif
</ins></span></pre></div>
<a id="trunkSourcebmallocbmallocBMallocedh"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/BMalloced.h (279072 => 279073)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/BMalloced.h 2021-06-21 18:46:31 UTC (rev 279072)
+++ trunk/Source/bmalloc/bmalloc/BMalloced.h    2021-06-21 18:48:29 UTC (rev 279073)
</span><span class="lines">@@ -52,5 +52,5 @@
</span><span class="cx">         ::bmalloc::api::freeOutOfLine(p); \
</span><span class="cx">     } \
</span><span class="cx"> private: \
</span><del>-typedef int __thisIsHereToForceASemicolonAfterThisMacro
</del><ins>+typedef int __thisIsHereToForceASemicolonAfterThisMacro BUNUSED_TYPE_ALIAS
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocIsoHeaph"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/IsoHeap.h (279072 => 279073)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/IsoHeap.h   2021-06-21 18:46:31 UTC (rev 279072)
+++ trunk/Source/bmalloc/bmalloc/IsoHeap.h      2021-06-21 18:48:29 UTC (rev 279073)
</span><span class="lines">@@ -96,6 +96,6 @@
</span><span class="cx">     void operator delete[](void* p) = delete; \
</span><span class="cx"> using webkitFastMalloced = int; \
</span><span class="cx"> private: \
</span><del>-using __makeBisoMallocedMacroSemicolonifier = int
</del><ins>+using __makeBisoMallocedMacroSemicolonifier BUNUSED_TYPE_ALIAS = int
</ins><span class="cx"> 
</span><span class="cx"> } } // namespace bmalloc::api
</span></span></pre></div>
<a id="trunkSourcebmallocbmallocIsoHeapInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/bmalloc/bmalloc/IsoHeapInlines.h (279072 => 279073)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/bmalloc/bmalloc/IsoHeapInlines.h    2021-06-21 18:46:31 UTC (rev 279072)
+++ trunk/Source/bmalloc/bmalloc/IsoHeapInlines.h       2021-06-21 18:48:29 UTC (rev 279073)
</span><span class="lines">@@ -136,7 +136,7 @@
</span><span class="cx">     void operator delete[](void* p) = delete; \
</span><span class="cx"> using webkitFastMalloced = int; \
</span><span class="cx"> private: \
</span><del>-using __makeBisoMallocedInlineMacroSemicolonifier = int
</del><ins>+using __makeBisoMallocedInlineMacroSemicolonifier BUNUSED_TYPE_ALIAS = int
</ins><span class="cx"> 
</span><span class="cx"> #define MAKE_BISO_MALLOCED_IMPL(isoType) \
</span><span class="cx"> ::bmalloc::api::IsoHeap<isoType>& isoType::bisoHeap() \
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (279072 => 279073)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog    2021-06-21 18:46:31 UTC (rev 279072)
+++ trunk/Tools/ChangeLog       2021-06-21 18:48:29 UTC (rev 279073)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2021-06-21  Kimmo Kinnunen  <kkinnunen@apple.com>
+
+        makeUnique cannot be used to instantiate function-local classes
+        https://bugs.webkit.org/show_bug.cgi?id=227163
+
+        Reviewed by Antti Koivisto.
+
+        Test that WTF_MAKE_FAST_ALLOCATED and similar macros work in function
+        local classes.
+
+        * TestWebKitAPI/Tests/WTF/StdLibExtras.cpp:
+        (TestWebKitAPI::TEST):
+
</ins><span class="cx"> 2021-06-21  Alex Christensen  <achristensen@webkit.org>
</span><span class="cx"> 
</span><span class="cx">         REGRESSION (r275496): WebSocket Message too long when message is larger than 1mb
</span></span></pre></div>
<a id="trunkToolsTestWebKitAPITestsWTFStdLibExtrascpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/StdLibExtras.cpp (279072 => 279073)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/TestWebKitAPI/Tests/WTF/StdLibExtras.cpp     2021-06-21 18:46:31 UTC (rev 279072)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/StdLibExtras.cpp        2021-06-21 18:48:29 UTC (rev 279073)
</span><span class="lines">@@ -111,4 +111,20 @@
</span><span class="cx"> TEST(WTF_StdLibExtras, findBitInWord_uint32_t) { testFindBitInWord<uint32_t>(); }
</span><span class="cx"> TEST(WTF_StdLibExtras, findBitInWord_uint64_t) { testFindBitInWord<uint64_t>(); }
</span><span class="cx"> 
</span><ins>+// Tests that function-local types can be instantiated with makeUnique.
+// Style check would complain about use of std::make_unique, enforcing use of
+// makeUnique. The makeUnique needs WTF_..._MAKE_FAST_ALLOCATED.
+// There used to be a warn-unused-typedef errors when using these.
+TEST(WTF_StdLibExtras, MakeUniqueFunctionLocalTypeCompiles)
+{
+    struct LocalStruct {
+        WTF_MAKE_STRUCT_FAST_ALLOCATED;
+    };
+    class LocalClass {
+        WTF_MAKE_FAST_ALLOCATED;
+    };
+    auto s = makeUnique<LocalStruct>();
+    auto c = makeUnique<LocalClass>();
+}
+
</ins><span class="cx"> } // namespace TestWebKitAPI
</span></span></pre>
</div>
</div>

</body>
</html>