<!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>[207559] trunk/Tools</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/207559">207559</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2016-10-19 12:50:40 -0700 (Wed, 19 Oct 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>check-webkit-style: fix false-positive warnings about using #pragma once header guard
https://bugs.webkit.org/show_bug.cgi?id=163575

Patch by Joseph Pecoraro &lt;pecoraro@apple.com&gt; on 2016-10-19
Reviewed by Brady Eidson.

There were some false positive warnings about header guards
for ObjC headers that don't need guards. This changes the
style checker to no longer warn if there is no #pragma once.
It only warns if there are #ifndef that should be #pragma once.

* Scripts/webkitpy/style/checkers/cpp.py:
(check_for_header_guard):
Change when we output an error.

* Scripts/webkitpy/style/checkers/cpp_unittest.py:
(CppStyleTest.test_build_header_guard):
Update tests.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsScriptswebkitpystylecheckerscpppy">trunk/Tools/Scripts/webkitpy/style/checkers/cpp.py</a></li>
<li><a href="#trunkToolsScriptswebkitpystylecheckerscpp_unittestpy">trunk/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (207558 => 207559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2016-10-19 19:45:49 UTC (rev 207558)
+++ trunk/Tools/ChangeLog        2016-10-19 19:50:40 UTC (rev 207559)
</span><span class="lines">@@ -1,3 +1,23 @@
</span><ins>+2016-10-19  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        check-webkit-style: fix false-positive warnings about using #pragma once header guard
+        https://bugs.webkit.org/show_bug.cgi?id=163575
+
+        Reviewed by Brady Eidson.
+
+        There were some false positive warnings about header guards
+        for ObjC headers that don't need guards. This changes the
+        style checker to no longer warn if there is no #pragma once.
+        It only warns if there are #ifndef that should be #pragma once.
+
+        * Scripts/webkitpy/style/checkers/cpp.py:
+        (check_for_header_guard):
+        Change when we output an error.
+
+        * Scripts/webkitpy/style/checkers/cpp_unittest.py:
+        (CppStyleTest.test_build_header_guard):
+        Update tests.
+
</ins><span class="cx"> 2016-10-19  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [macOS] [iOS] Disable variation fonts on macOS El Capitan and iOS 9
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpystylecheckerscpppy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/style/checkers/cpp.py (207558 => 207559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/style/checkers/cpp.py        2016-10-19 19:45:49 UTC (rev 207558)
+++ trunk/Tools/Scripts/webkitpy/style/checkers/cpp.py        2016-10-19 19:50:40 UTC (rev 207559)
</span><span class="lines">@@ -899,8 +899,8 @@
</span><span class="cx"> def check_for_header_guard(lines, error):
</span><span class="cx">     &quot;&quot;&quot;Checks that the file contains a header guard.
</span><span class="cx"> 
</span><del>-    Logs an error if no #pragma once header guard is present
-    of if there was an #ifndef guard that was modified.
</del><ins>+    Logs an error if there was an #ifndef guard in a header
+    that should be a #pragma once guard.
</ins><span class="cx"> 
</span><span class="cx">     Args:
</span><span class="cx">       lines: An array of strings, each representing a line of the file.
</span><span class="lines">@@ -921,10 +921,7 @@
</span><span class="cx">                     'Use #pragma once instead of #ifndef for header guard.')
</span><span class="cx">                 return
</span><span class="cx"> 
</span><del>-    error(0, 'build/header_guard', 5,
-        'Use #pragma once header guard.')
</del><span class="cx"> 
</span><del>-
</del><span class="cx"> def check_for_unicode_replacement_characters(lines, error):
</span><span class="cx">     &quot;&quot;&quot;Logs an error for each line containing Unicode replacement characters.
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpystylecheckerscpp_unittestpy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py (207558 => 207559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py        2016-10-19 19:45:49 UTC (rev 207558)
+++ trunk/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py        2016-10-19 19:50:40 UTC (rev 207559)
</span><span class="lines">@@ -2427,16 +2427,14 @@
</span><span class="cx">     def test_build_header_guard(self):
</span><span class="cx">         rules = ('-', '+build/header_guard')
</span><span class="cx"> 
</span><del>-        # No header guard.
-        self.assert_header_guard('',
-            'Use #pragma once header guard.'
-            '  [build/header_guard] [5]')
-
</del><span class="cx">         # Old header guard.
</span><span class="cx">         self.assert_header_guard('#ifndef Foo_h',
</span><span class="cx">             'Use #pragma once instead of #ifndef for header guard.'
</span><span class="cx">             '  [build/header_guard] [5]')
</span><span class="cx"> 
</span><ins>+        # No header guard. Okay, since this could be an ObjC header.
+        self.assert_header_guard('', '')
+
</ins><span class="cx">         # Valid header guard.
</span><span class="cx">         self.assert_header_guard('#pragma once', '')
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>