[www-releases] r225843 - Add documentation for 3.5.1

Tom Stellard thomas.stellard at amd.com
Tue Jan 13 14:55:45 PST 2015


Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaDeclCXX_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaDeclCXX_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaDeclCXX_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaDeclCXX_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,661 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: SemaDeclCXX.d Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_0c3cadfa2fbef89a3b8f57073e8a31f9.html">Sema</a></li><li class="navelem"><a class="el" href="dir_eb0099ce9b4bd055698282f76081f892.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">SemaDeclCXX.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="SemaDeclCXX_8d.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> /home/tstellar/llvm/tools/clang/lib/Sema/Release+Asserts/SemaDeclCXX.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/Sema/Release+Asserts/SemaDeclCXX.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  SemaDeclCXX.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaInternal.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTContext.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTTypeTraits.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTFwd.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclNodes.inc \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtNodes.inc \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeNodes.def \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Decl.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/APValue.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/ADT/APFloat.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/ADT/APInt.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/ADT/APSInt.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclBase.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/AttrIterator.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclarationName.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/IdentifierTable.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/PartialDiagnostic.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>  /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h \</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Specifiers.h \</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>  /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExternalASTSource.h \</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CharUnits.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Redeclarable.h \</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Type.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/NestedNameSpecifier.h \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TemplateName.h \</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/<a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a>.h \</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h \</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/BuiltinTypes.def \</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Stmt.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclGroup.h \</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtIterator.h \</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CapturedStmt.h \</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TemplateBase.h \</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeLoc.h \</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeLocNodes.def \</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CanonicalType.h \</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CommentCommandTraits.h \</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CommentCommandList.inc \</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/PrettyPrinter.h \</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/RawCommentList.h \</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AddressSpaces.h \</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>  /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>  /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h \</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Sema.h \</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Attr.h \</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AttrKinds.h \</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AttrList.inc \</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>  /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h \</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Attrs.inc \</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Expr.h \</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTVector.h \</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclAccessPair.h \</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/OperationKinds.h \</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CharInfo.h \</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TypeTraits.h \</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Builtins.def \</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExprObjC.h \</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclObjC.h \</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/<a class="code" href="namespaceclang.html#a0bca8d4a06a5e7175d2177c94788c9b4" title="Whether all locations of the selector identifiers are in a "standard" position.">SelectorLocationsKind</a>.h \</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/MangleNumberingContext.h \</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/NSAPI.h \</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/ExpressionTraits.h \</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenMPKinds.h \</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenMPKinds.def \</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TemplateKinds.h \</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleLoader.h \</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Module.h \</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>  /home/tstellar/llvm/include/llvm/ADT/SetVector.h \</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>  /home/tstellar/llvm/include/llvm/ADT/SmallSet.h \</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AnalysisBasedWarnings.h \</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/DeclSpec.h \</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Lambda.h \</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/<a class="code" href="UnwrappedLineParser_8cpp.html#ac39165965ffcb0218343355d1f482d64">Token</a>.h \</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AttributeList.h \</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Ownership.h \</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AttrParsedAttrList.inc \</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ExternalSemaSource.h \</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/TypoCorrection.h \</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclCXX.h \</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTUnresolvedSet.h \</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/UnresolvedSet.h \</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExprCXX.h \</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Weak.h \</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>  /home/tstellar/llvm/include/llvm/ADT/MapVector.h \</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/IdentifierResolver.h \</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/LocInfoType.h \</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ObjCMethodList.h \</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ScopeInfo.h \</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>  /home/tstellar/llvm/include/llvm/MC/MCParser/MCAsmParser.h \</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>  /home/tstellar/llvm/include/llvm/MC/MCParser/AsmLexer.h \</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>  /home/tstellar/llvm/include/llvm/MC/MCParser/MCAsmLexer.h \</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>  /home/tstellar/llvm/include/llvm/Support/SMLoc.h \</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaDiagnostic.h \</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticSemaKinds.inc \</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTConsumer.h \</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTLambda.h \</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclTemplate.h \</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTMutationListener.h \</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CXXInheritance.h \</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeOrdering.h \</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclVisitor.h \</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclFriend.h \</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclOpenMP.h \</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/EvaluatedExprVisitor.h \</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtVisitor.h \</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtCXX.h \</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtObjC.h \</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtOpenMP.h \</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/RecordLayout.h \</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/RecursiveASTVisitor.h \</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TargetInfo.h \</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TargetCXXABI.h \</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TargetOptions.h \</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/LiteralSupport.h \</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Preprocessor.h \</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Builtins.h \</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Lexer.h \</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorLexer.h \</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MultipleIncludeOpt.h \</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MacroInfo.h \</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleMap.h \</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PPCallbacks.h \</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/DirectoryLookup.h \</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Pragma.h \</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PTHLexer.h \</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PTHManager.h \</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/TokenLexer.h \</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/CXXFieldCollector.h \</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Initialization.h \</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Overload.h \</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaFixItUtils.h \</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/TemplateDeduction.h \</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Lookup.h \</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ParsedTemplate.h \</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>  /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Scope.h</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaInternal.h:</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTContext.h:</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTTypeTraits.h:</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTFwd.h:</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> </div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclNodes.inc:</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtNodes.inc:</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeNodes.def:</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Decl.h:</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/APValue.h:</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> /home/tstellar/llvm/include/llvm/Support/Casting.h:</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> </div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> /home/tstellar/llvm/include/llvm/ADT/APFloat.h:</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> </div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> /home/tstellar/llvm/include/llvm/ADT/APInt.h:</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> </div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> </div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> </div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> </div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> /home/tstellar/llvm/include/llvm/ADT/APSInt.h:</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> </div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> </div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclBase.h:</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> </div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/AttrIterator.h:</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> </div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclarationName.h:</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span> </div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/IdentifierTable.h:</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OperatorKinds.h:</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OperatorKinds.def:</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TokenKinds.h:</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> </div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TokenKinds.def:</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> </div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/PartialDiagnostic.h:</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Diagnostic.h:</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticIDs.h:</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> </div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> </div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticCommonKinds.inc:</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> </div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticOptions.h:</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticOptions.def:</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> </div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> </div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> /home/tstellar/llvm/include/llvm/ADT/STLExtras.h:</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h:</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span> </div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Specifiers.h:</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span> /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> </div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExternalASTSource.h:</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> </div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CharUnits.h:</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> </div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Redeclarable.h:</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Type.h:</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/NestedNameSpecifier.h:</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h:</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span> </div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TemplateName.h:</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/<a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a>.h:</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h:</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span> </div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h:</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> </div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span> /home/tstellar/llvm/include/llvm/ADT/Twine.h:</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h:</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span> </div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/BuiltinTypes.def:</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span> </div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h:</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> </div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> </div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> /home/tstellar/llvm/include/llvm/Support/system_error.h:</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> </div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Stmt.h:</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> </div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclGroup.h:</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> </div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtIterator.h:</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> </div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CapturedStmt.h:</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span> </div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TemplateBase.h:</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span> </div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeLoc.h:</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span> </div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeLocNodes.def:</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span> </div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CanonicalType.h:</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> </div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CommentCommandTraits.h:</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span> </div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CommentOptions.h:</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CommentCommandList.inc:</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> </div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/PrettyPrinter.h:</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LangOptions.h:</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span> </div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/ObjCRuntime.h:</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span> </div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/VersionTuple.h:</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span> /home/tstellar/llvm/include/llvm/ADT/Triple.h:</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span> </div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Sanitizers.def:</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> </div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/LangOptions.def:</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> </div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenCLExtensions.def:</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> </div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/RawCommentList.h:</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> </div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/SourceManager.h:</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span> </div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> </div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h:</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span> </div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h:</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span> </div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h:</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span> </div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span> /home/tstellar/llvm/include/llvm-c/Core.h:</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span> </div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AddressSpaces.h:</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span> </div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span> /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h:</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span> </div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span> /home/tstellar/llvm/include/llvm/ADT/TinyPtrVector.h:</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span> </div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Sema.h:</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span> </div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Attr.h:</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span> </div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AttrKinds.h:</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span> </div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/AttrList.inc:</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span> /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h:</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Attrs.inc:</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span> </div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/Expr.h:</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span> </div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTVector.h:</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span> </div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclAccessPair.h:</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span> </div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/OperationKinds.h:</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/CharInfo.h:</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span> </div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TypeTraits.h:</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span> </div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Builtins.def:</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span> </div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExprObjC.h:</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclObjC.h:</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span> </div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/<a class="code" href="namespaceclang.html#a0bca8d4a06a5e7175d2177c94788c9b4" title="Whether all locations of the selector identifiers are in a "standard" position.">SelectorLocationsKind</a>.h:</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span> </div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/MangleNumberingContext.h:</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span> </div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/NSAPI.h:</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span> </div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/ExpressionTraits.h:</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span> </div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenMPKinds.h:</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/OpenMPKinds.def:</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span> </div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TemplateKinds.h:</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span> </div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleLoader.h:</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span> </div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Module.h:</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span> </div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span> /home/tstellar/llvm/include/llvm/ADT/SetVector.h:</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span> </div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span> /home/tstellar/llvm/include/llvm/ADT/SmallSet.h:</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span> </div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AnalysisBasedWarnings.h:</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span> </div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/DeclSpec.h:</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span> </div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Lambda.h:</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span> </div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/<a class="code" href="UnwrappedLineParser_8cpp.html#ac39165965ffcb0218343355d1f482d64">Token</a>.h:</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span> </div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AttributeList.h:</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span> </div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Ownership.h:</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span> </div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/AttrParsedAttrList.inc:</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span> </div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ExternalSemaSource.h:</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/TypoCorrection.h:</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span> </div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclCXX.h:</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span> </div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTUnresolvedSet.h:</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span> </div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/UnresolvedSet.h:</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span> </div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ExprCXX.h:</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span> </div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Weak.h:</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span> </div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span> /home/tstellar/llvm/include/llvm/ADT/MapVector.h:</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span> </div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/IdentifierResolver.h:</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span> </div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/LocInfoType.h:</div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span> </div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ObjCMethodList.h:</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span> </div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ScopeInfo.h:</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span> </div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span> /home/tstellar/llvm/include/llvm/MC/MCParser/MCAsmParser.h:</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span> </div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span> /home/tstellar/llvm/include/llvm/MC/MCParser/AsmLexer.h:</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> </div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span> /home/tstellar/llvm/include/llvm/MC/MCParser/MCAsmLexer.h:</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span> </div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span> /home/tstellar/llvm/include/llvm/Support/SMLoc.h:</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span> </div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaDiagnostic.h:</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span> </div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/DiagnosticSemaKinds.inc:</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span> </div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTConsumer.h:</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span> </div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTLambda.h:</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> </div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclTemplate.h:</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span> </div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/ASTMutationListener.h:</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span> </div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/CXXInheritance.h:</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span> </div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/TypeOrdering.h:</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span> </div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclVisitor.h:</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span> </div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclFriend.h:</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span> </div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/DeclOpenMP.h:</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span> </div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/EvaluatedExprVisitor.h:</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span> </div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtVisitor.h:</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span> </div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtCXX.h:</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span> </div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtObjC.h:</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span> </div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/StmtOpenMP.h:</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span> </div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/RecordLayout.h:</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span> </div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/AST/RecursiveASTVisitor.h:</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span> </div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TargetInfo.h:</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span> </div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TargetCXXABI.h:</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span> </div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/TargetOptions.h:</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span> </div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/LiteralSupport.h:</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span> </div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Preprocessor.h:</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span> </div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Basic/Builtins.h:</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span> </div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Lexer.h:</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span> </div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorLexer.h:</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span> </div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MultipleIncludeOpt.h:</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span> </div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MacroInfo.h:</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span> </div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleMap.h:</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span> </div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PPCallbacks.h:</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span> </div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/DirectoryLookup.h:</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span> </div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Pragma.h:</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span> </div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PTHLexer.h:</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span> </div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PTHManager.h:</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span> </div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/TokenLexer.h:</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span> </div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/CXXFieldCollector.h:</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span> </div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Initialization.h:</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span> </div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Overload.h:</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span> </div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/SemaFixItUtils.h:</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span> </div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/TemplateDeduction.h:</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span> </div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Lookup.h:</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span> </div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/ParsedTemplate.h:</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span> </div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span> /home/tstellar/llvm/tools/clang/lib/Sema/../../include/clang/Sema/Scope.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:03 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaDeclObjC_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaDeclObjC_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaDeclObjC_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SemaDeclObjC_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,3620 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: SemaDeclObjC.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_0c3cadfa2fbef89a3b8f57073e8a31f9.html">Sema</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">SemaDeclObjC.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="SemaDeclObjC_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===--- SemaDeclObjC.cpp - Semantic Analysis for ObjC Declarations -------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//  This file implements semantic analysis for Objective C declarations.</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> </div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include "<a class="code" href="SemaInternal_8h.html">clang/Sema/SemaInternal.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="ASTConsumer_8h.html">clang/AST/ASTConsumer.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="ASTContext_8h.html" title="Defines the clang::ASTContext interface.">clang/AST/ASTContext.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="ASTMutationListener_8h.html">clang/AST/ASTMutationListener.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="DeclObjC_8h.html">clang/AST/DeclObjC.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="Expr_8h.html">clang/AST/Expr.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="ExprObjC_8h.html">clang/AST/ExprObjC.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="SourceManager_8h.html" title="Defines the SourceManager interface.">clang/Basic/SourceManager.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="Preprocessor_8h.html">clang/Lex/Preprocessor.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="DeclSpec_8h.html" title="This file defines the classes used to store parsed information about declaration-specifiers and decla...">clang/Sema/DeclSpec.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "<a class="code" href="ExternalSemaSource_8h.html">clang/Sema/ExternalSemaSource.h</a>"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "<a class="code" href="Lookup_8h.html">clang/Sema/Lookup.h</a>"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "<a class="code" href="Scope_8h.html">clang/Sema/Scope.h</a>"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "<a class="code" href="ScopeInfo_8h.html">clang/Sema/ScopeInfo.h</a>"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "llvm/ADT/DenseSet.h"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment"></span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment">/// Check whether the given method, which must be in the 'init'</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="comment">/// family, is a valid member of that family.</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment">/// \param receiverTypeIfCall - if null, check this as if declaring it;</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment">///   if non-null, check this as if making a call to it with the given</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">///   receiver type</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment">/// \return true to indicate that there was an error and appropriate</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment">///   actions were taken</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a4cc67cd486e95c5c279723c8bcbc26c6">   41</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Sema.html#a4cc67cd486e95c5c279723c8bcbc26c6">Sema::checkInitMethod</a>(<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *method,</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>                            <a class="code" href="classclang_1_1QualType.html">QualType</a> receiverTypeIfCall) {</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordflow">if</span> (method-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>()) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> </div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="comment">// This castAs is safe: methods that don't return an object</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="comment">// pointer won't be inferred as inits and will reject an explicit</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="comment">// objc_method_family(init).</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> </div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="comment">// We ignore protocols here.  Should we?  What about Class?</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> </div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectType.html">ObjCObjectType</a> *result = method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>()</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     -><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>()->getObjectType();</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> </div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="keywordflow">if</span> (result-><a class="code" href="classclang_1_1ObjCObjectType.html#ae18c2f18b07e28f2923d25694c0b153f">isObjCId</a>()) {</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (result-><a class="code" href="classclang_1_1ObjCObjectType.html#a4c0774874411f66a0b6e9bb2dc48ab91">isObjCClass</a>()) {</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="comment">// fall through: always an error</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *resultClass = result-><a class="code" href="classclang_1_1ObjCObjectType.html#a768f52da9b3b79e70b48391b38388e40">getInterface</a>();</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     assert(resultClass && <span class="stringliteral">"unexpected object type!"</span>);</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> </div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="comment">// It's okay for the result type to still be a forward declaration</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="comment">// if we're checking an interface declaration.</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="keywordflow">if</span> (!resultClass-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a2337d6990ec398fa1863459e77183e52" title="Determine whether this class has been defined.">hasDefinition</a>()) {</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>       <span class="keywordflow">if</span> (receiverTypeIfCall.<a class="code" href="classclang_1_1QualType.html#a8f87f58000490ad01cd09add1f27d7ac" title="isNull - Return true if this QualType doesn't point to a type yet.">isNull</a>() &&</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>           !isa<ObjCImplementationDecl>(method-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>()))</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> </div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="comment">// Otherwise, we try to compare class types.</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>       <span class="comment">// If this method was declared in a protocol, we can't check</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>       <span class="comment">// anything unless we have a receiver type that's an interface.</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *receiverClass = 0;</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>       <span class="keywordflow">if</span> (isa<ObjCProtocolDecl>(method-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>())) {</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         <span class="keywordflow">if</span> (receiverTypeIfCall.<a class="code" href="classclang_1_1QualType.html#a8f87f58000490ad01cd09add1f27d7ac" title="isNull - Return true if this QualType doesn't point to a type yet.">isNull</a>())</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>           <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> </div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         receiverClass = receiverTypeIfCall-><a class="code" href="classclang_1_1Type.html#ac4a3f2c505332c3c556bd20497d1a5c3">castAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>()</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>           ->getInterfaceDecl();</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> </div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>         <span class="comment">// This can be null for calls to e.g. id<Foo>.</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>         <span class="keywordflow">if</span> (!receiverClass) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>         receiverClass = method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ae289a054485ee4d1d66b33e833e16091">getClassInterface</a>();</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>         assert(receiverClass && <span class="stringliteral">"method not associated with a class!"</span>);</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>       }</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>       <span class="comment">// If either class is a subclass of the other, it's fine.</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>       <span class="keywordflow">if</span> (receiverClass-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a475a3c7ebb9047da9464a1157789c1e1">isSuperClassOf</a>(resultClass) ||</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>           resultClass-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a475a3c7ebb9047da9464a1157789c1e1">isSuperClassOf</a>(receiverClass))</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     }</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   }</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#af2a0068a0d7c4962e52a7a70967fa5df" title="Matches TypeLocs for which the given inner QualType-matcher matches.">loc</a> = method-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>();</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="comment">// If we're in a system header, and this is not a call, just make</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <span class="comment">// the method unusable.</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>   <span class="keywordflow">if</span> (receiverTypeIfCall.<a class="code" href="classclang_1_1QualType.html#a8f87f58000490ad01cd09add1f27d7ac" title="isNull - Return true if this QualType doesn't point to a type yet.">isNull</a>() && <a class="code" href="classclang_1_1Sema.html#aa6addac536d2911c8d411bfb1bd97fac">getSourceManager</a>().<a class="code" href="classclang_1_1SourceManager.html#a99c639318222119c75ea9c12f1aa5cf2" title="Returns if a SourceLocation is in a system header.">isInSystemHeader</a>(loc)) {</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>     method-><a class="code" href="classclang_1_1Decl.html#ae06dbf27ea2b038ffba068a4b24f3913">addAttr</a>(<span class="keyword">new</span> (<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) <a class="code" href="classclang_1_1UnavailableAttr.html">UnavailableAttr</a>(loc, <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>,</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>                 <span class="stringliteral">"init method returns a type unrelated to its receiver type"</span>));</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   }</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <span class="comment">// Otherwise, it's an error.</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(loc, diag::err_arc_init_method_unrelated_result_type);</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   method-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> }</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> </div>
+<div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a07392959dbbb57171fd52b3a18cc586d">  111</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a07392959dbbb57171fd52b3a18cc586d" title="Check whether the given new method is a valid override of the given overridden method, and set any properties that should be inherited.">Sema::CheckObjCMethodOverride</a>(<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *NewMethod, </div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Overridden) {</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   <span class="keywordflow">if</span> (Overridden-><a class="code" href="classclang_1_1ObjCMethodDecl.html#af39c2be03915c55301f0d4961e496c2a" title="Determine whether this method has a result type that is related to the message receiver's type...">hasRelatedResultType</a>() && </div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>       !NewMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#af39c2be03915c55301f0d4961e496c2a" title="Determine whether this method has a result type that is related to the message receiver's type...">hasRelatedResultType</a>()) {</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <span class="comment">// This can only happen when the method follows a naming convention that</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <span class="comment">// implies a related result type, and the original (overridden) method has</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <span class="comment">// a suitable return type, but the new (overriding) method does not have</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     <span class="comment">// a suitable return type.</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> ResultType = NewMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>();</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>     <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> ResultTypeRange;</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *ResultTypeInfo </div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>                                         = NewMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a1abdb658ad45f7f8e51b3ee5a7a6145a">getResultTypeSourceInfo</a>())</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>       ResultTypeRange = ResultTypeInfo->getTypeLoc().getSourceRange();</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     </div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     <span class="comment">// Figure out which class this method is part of, if any.</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *CurrentClass </div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>       = dyn_cast<<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a>>(NewMethod-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>());</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     <span class="keywordflow">if</span> (!CurrentClass) {</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>       <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC = NewMethod-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>();</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *Cat = dyn_cast<ObjCCategoryDecl>(DC))</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         CurrentClass = Cat->getClassInterface();</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCImplDecl.html">ObjCImplDecl</a> *Impl = dyn_cast<ObjCImplDecl>(DC))</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>         CurrentClass = Impl->getClassInterface();</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryImplDecl.html">ObjCCategoryImplDecl</a> *CatImpl</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>                = dyn_cast<ObjCCategoryImplDecl>(DC))</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>         CurrentClass = CatImpl->getClassInterface();</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     }</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     </div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     <span class="keywordflow">if</span> (CurrentClass) {</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(NewMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), </div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>            diag::warn_related_result_type_compatibility_class)</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>         << <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ae498c138a079e26fa0b2ebcb11d9136b">getObjCInterfaceType</a>(CurrentClass)</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>         << ResultType</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>         << ResultTypeRange;</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(NewMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), </div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>            diag::warn_related_result_type_compatibility_protocol)</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>         << ResultType</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>         << ResultTypeRange;</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     }</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     </div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="keywordflow">if</span> (<a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140" title="A family of Objective-C methods.">ObjCMethodFamily</a> Family = Overridden-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a797418dad629dd1538fd9ebaa6daa1f1" title="Determines the family of this method.">getMethodFamily</a>())</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Overridden-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), </div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>            diag::note_related_result_type_family)</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>         << <span class="comment">/*overridden method*/</span> 0</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>         << Family;</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Overridden-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), </div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>            diag::note_related_result_type_overridden);</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   }</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount) {</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     <span class="keywordflow">if</span> ((NewMethod-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSReturnsRetainedAttr.html">NSReturnsRetainedAttr</a>>() !=</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>          Overridden-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSReturnsRetainedAttr.html">NSReturnsRetainedAttr</a>>())) {</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(NewMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>              diag::err_nsreturns_retained_attribute_mismatch) << 1;</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Overridden-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_decl) </div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>         << <span class="stringliteral">"method"</span>;</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>     }</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     <span class="keywordflow">if</span> ((NewMethod-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSReturnsNotRetainedAttr.html">NSReturnsNotRetainedAttr</a>>() !=</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>               Overridden-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSReturnsNotRetainedAttr.html">NSReturnsNotRetainedAttr</a>>())) {</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(NewMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>              diag::err_nsreturns_retained_attribute_mismatch) << 0;</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Overridden-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_decl) </div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>         << <span class="stringliteral">"method"</span>;</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     }</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     <a class="code" href="classclang_1_1ObjCMethodDecl.html#a841541ca3ef9960a3474a637e3c8829d">ObjCMethodDecl::param_const_iterator</a> oi = Overridden-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>(),</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>                                          oe = Overridden-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>();</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCMethodDecl.html#abbba9916294190611d98ec23edcf6bef">ObjCMethodDecl::param_iterator</a></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>            ni = NewMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>(), ne = NewMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>();</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>          ni != ne && oi != oe; ++ni, ++oi) {</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *oldDecl = (*oi);</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>       <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *newDecl = (*ni);</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>       <span class="keywordflow">if</span> (newDecl-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSConsumedAttr.html">NSConsumedAttr</a>>() != </div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>           oldDecl-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSConsumedAttr.html">NSConsumedAttr</a>>()) {</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(newDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>              diag::err_nsconsumed_attribute_mismatch);</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(oldDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_decl) </div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>           << <span class="stringliteral">"parameter"</span>;</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>       }</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>     }</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   }</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> }</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> <span class="comment"></span></div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment">/// \brief Check a method declaration for compatibility with the Objective-C</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment">/// ARC conventions.</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a08ccd27e0ff55912da0a9aeb48ba120e">  196</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Sema.html#a08ccd27e0ff55912da0a9aeb48ba120e" title="Check a method declaration for compatibility with the Objective-C ARC conventions.">Sema::CheckARCMethodDecl</a>(<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *method) {</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140" title="A family of Objective-C methods.">ObjCMethodFamily</a> family = method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a797418dad629dd1538fd9ebaa6daa1f1" title="Determines the family of this method.">getMethodFamily</a>();</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <span class="keywordflow">switch</span> (family) {</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a5f62fe9ffed043a6852d5e4019147244" title="No particular method family.">OMF_None</a>:</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a5722533aab245d187223d468bc37f736">OMF_finalize</a>:</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140ae86182746e5f440a137ab74935cfc6f3">OMF_retain</a>:</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a7e220cb728054440402011e61c42426d">OMF_release</a>:</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a2b78c8dee03c81f201d7fd438470b5d4">OMF_autorelease</a>:</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140ab33e5b4cd97daae64b0409a18449ace4">OMF_retainCount</a>:</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a3827e55785e22a2eeeb95809863714ae">OMF_self</a>:</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a5774b271952ff64e13807e5df139b183">OMF_performSelector</a>:</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a64eaf6dd57d06411366a75201a9f2850">OMF_dealloc</a>:</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a889b9d309fdc236f1eab037484f10f8a" title="Determine whether the given types T1 and T2 are equivalent.">hasSameType</a>(method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>(), <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#aaa9dd0ebd4ff2e55c572f5718b7af508">VoidTy</a>)) {</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>       <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> ResultTypeRange;</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *ResultTypeInfo</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>           = method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a1abdb658ad45f7f8e51b3ee5a7a6145a">getResultTypeSourceInfo</a>())</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>         ResultTypeRange = ResultTypeInfo->getTypeLoc().getSourceRange();</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>       <span class="keywordflow">if</span> (ResultTypeRange.<a class="code" href="classclang_1_1SourceRange.html#ad4b210c1ce478d3e76c9e8e27bad7745">isInvalid</a>())</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(method-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::error_dealloc_bad_result_type) </div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>           << method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>() </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>           << <a class="code" href="classclang_1_1FixItHint.html#afd481d826e9ddaa39fc82a698a810246" title="Create a code modification hint that inserts the given code string at a specific location.">FixItHint::CreateInsertion</a>(method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ad9f2a1cd09d5557510d2902a4b954584">getSelectorLoc</a>(0), <span class="stringliteral">"(void)"</span>);</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(method-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::error_dealloc_bad_result_type) </div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>           << method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>() </div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>           << <a class="code" href="classclang_1_1FixItHint.html#a90e122cd34933ba821718385fddfae7a" title="Create a code modification hint that replaces the given source range with the given code string...">FixItHint::CreateReplacement</a>(ResultTypeRange, <span class="stringliteral">"void"</span>);</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     }</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>       </div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a7749fb8107514089095277752fe75ece">OMF_init</a>:</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     <span class="comment">// If the method doesn't obey the init rules, don't bother annotating it.</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a4cc67cd486e95c5c279723c8bcbc26c6">checkInitMethod</a>(method, <a class="code" href="classclang_1_1QualType.html">QualType</a>()))</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     method-><a class="code" href="classclang_1_1Decl.html#ae06dbf27ea2b038ffba068a4b24f3913">addAttr</a>(<span class="keyword">new</span> (<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) <a class="code" href="classclang_1_1NSConsumesSelfAttr.html">NSConsumesSelfAttr</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>(),</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>                                                      <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>));</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> </div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>     <span class="comment">// Don't add a second copy of this attribute, but otherwise don't</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     <span class="comment">// let it be suppressed.</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>     <span class="keywordflow">if</span> (method-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSReturnsRetainedAttr.html">NSReturnsRetainedAttr</a>>())</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> </div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140aa2506f3f3aa110c8634c520cac188850">OMF_alloc</a>:</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140ae5e7e02afb30e2fd7e5454b4f98678ef">OMF_copy</a>:</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a3051bdd94642c1f656e86cb06914f9cf">OMF_mutableCopy</a>:</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140add0d96887fd8a747f93910ca08eb466c">OMF_new</a>:</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     <span class="keywordflow">if</span> (method-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSReturnsRetainedAttr.html">NSReturnsRetainedAttr</a>>() ||</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>         method-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSReturnsNotRetainedAttr.html">NSReturnsNotRetainedAttr</a>>() ||</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         method-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSReturnsAutoreleasedAttr.html">NSReturnsAutoreleasedAttr</a>>())</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   }</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   method-><a class="code" href="classclang_1_1Decl.html#ae06dbf27ea2b038ffba068a4b24f3913">addAttr</a>(<span class="keyword">new</span> (<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) <a class="code" href="classclang_1_1NSReturnsRetainedAttr.html">NSReturnsRetainedAttr</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>(),</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>                                                       <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>));</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> }</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> </div>
+<div class="line"><a name="l00257"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#a999bc3bbb6fa21ef9d9f75dc5c9e3296">  257</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SemaDeclObjC_8cpp.html#a999bc3bbb6fa21ef9d9f75dc5c9e3296">DiagnoseObjCImplementedDeprecations</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>,</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>                                                 <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *ND,</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>                                                 <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ImplLoc,</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>                                                 <span class="keywordtype">int</span> select) {</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>   <span class="keywordflow">if</span> (ND && ND-><a class="code" href="classclang_1_1Decl.html#a01801a9e76ce39a4fe89e6e26d1a6b06" title="Determine whether this declaration is marked 'deprecated'.">isDeprecated</a>()) {</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>     S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ImplLoc, diag::warn_deprecated_def) << select;</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     <span class="keywordflow">if</span> (select == 0)</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>       S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ND-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_method_declared_at)</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>         << ND-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>       S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ND-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_decl) << <span class="stringliteral">"class"</span>;</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   }</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> }</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> <span class="comment"></span></div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> <span class="comment">/// AddAnyMethodToGlobalPool - Add any method, instance or factory to global</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> <span class="comment">/// pool.</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a60136dbf8f0a3abfcdd7f334679c9d8b">  273</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a60136dbf8f0a3abfcdd7f334679c9d8b">Sema::AddAnyMethodToGlobalPool</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *D) {</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MDecl = dyn_cast_or_null<ObjCMethodDecl>(D);</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>     </div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="comment">// If we don't have a valid method decl, simply return.</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   <span class="keywordflow">if</span> (!MDecl)</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   <span class="keywordflow">if</span> (MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a437ea0ebec5ba72fcf0084dd01654d4c">isInstanceMethod</a>())</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     <a class="code" href="classclang_1_1Sema.html#a6fd92927cc2d97aa2c444f9ac9ec9398">AddInstanceMethodToGlobalPool</a>(MDecl, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <a class="code" href="classclang_1_1Sema.html#aad40f178d8aef25fc9a84bf2cdb255a3" title="AddFactoryMethodToGlobalPool - Same as above, but for factory methods.">AddFactoryMethodToGlobalPool</a>(MDecl, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> }</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span> <span class="comment"></span></div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> <span class="comment">/// HasExplicitOwnershipAttr - returns true when pointer to ObjC pointer</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> <span class="comment">/// has explicit ownership attribute; false otherwise.</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#a114a68eec9bb61d848eb421efab08319">  288</a></span> <a class="code" href="SemaDeclObjC_8cpp.html#a114a68eec9bb61d848eb421efab08319">HasExplicitOwnershipAttr</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *<a class="code" href="SemaOverload_8cpp.html#af465899bf43044df83229078154bc2ed">Param</a>) {</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> T = Param-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   </div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1PointerType.html">PointerType</a> *PT = T-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1PointerType.html">PointerType</a>>()) {</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     T = PT-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>();</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ReferenceType.html">ReferenceType</a> *RT = T-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ReferenceType.html">ReferenceType</a>>()) {</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     T = RT-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>();</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   }</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   </div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="comment">// If we have a lifetime qualifier, but it's local, we must have </span></div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   <span class="comment">// inferred it. So, it is implicit.</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   <span class="keywordflow">return</span> !T.<a class="code" href="classclang_1_1QualType.html#ad2baca05dc1fa00a603a300973272610" title="Retrieve the set of qualifiers local to this particular QualType instance, not including any qualifie...">getLocalQualifiers</a>().<a class="code" href="classclang_1_1Qualifiers.html#aeb4f70f6bf4f8248170b71a5eebd2df1">hasObjCLifetime</a>();</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span> }</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> <span class="comment"></span></div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span> <span class="comment">/// ActOnStartOfObjCMethodDef - This routine sets up parameters; invisible</span></div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> <span class="comment">/// and user declared, in the method definition's AST.</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a0a043e18dda207cc6783be4bd29e9d87">  306</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a0a043e18dda207cc6783be4bd29e9d87">Sema::ActOnStartOfObjCMethodDef</a>(<a class="code" href="classclang_1_1Scope.html">Scope</a> *FnBodyScope, <a class="code" href="classclang_1_1Decl.html">Decl</a> *D) {</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>   assert((<a class="code" href="classclang_1_1Sema.html#a53d0e19025a89775ecb30290b243a1ba">getCurMethodDecl</a>() == 0) && <span class="stringliteral">"Methodparsing confused"</span>);</div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MDecl = dyn_cast_or_null<ObjCMethodDecl>(D);</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   </div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   <span class="comment">// If we don't have a valid method decl, simply return.</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   <span class="keywordflow">if</span> (!MDecl)</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   <span class="comment">// Allow all of Sema to see that we are entering a method definition.</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>   <a class="code" href="classclang_1_1Sema.html#acaf50ba6aab36897b7f1bf7d8bbc17b0" title="Set the current declaration context until it gets popped.">PushDeclContext</a>(FnBodyScope, MDecl);</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>   <a class="code" href="classclang_1_1Sema.html#a5ac777b09d10e55d05a597ab1d9862ed" title="Enter a new function scope.">PushFunctionScope</a>();</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>   </div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   <span class="comment">// Create Decl objects for each parameter, entrring them in the scope for</span></div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="comment">// binding to their use.</span></div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span> </div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   <span class="comment">// Insert the invisible arguments, self and _cmd!</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ad54865d4902bed294f62149712f56631">createImplicitParams</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ae289a054485ee4d1d66b33e833e16091">getClassInterface</a>());</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> </div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>   <a class="code" href="classclang_1_1Sema.html#a45bd7757e01b318e87ae7dc5ea0ce8bf" title="Add this decl to the scope shadowed decl chains.">PushOnScopeChains</a>(MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aca5d21d1409956e5d6ba77b0ce4beb0d">getSelfDecl</a>(), FnBodyScope);</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   <a class="code" href="classclang_1_1Sema.html#a45bd7757e01b318e87ae7dc5ea0ce8bf" title="Add this decl to the scope shadowed decl chains.">PushOnScopeChains</a>(MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ab5c716be2156d59824da88f40414988a">getCmdDecl</a>(), FnBodyScope);</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> </div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   <span class="comment">// The ObjC parser requires parameter names so there's no need to check.</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <a class="code" href="classclang_1_1Sema.html#a64507698b60d70ef5c2c10cafef1fbdc" title="Helpers for dealing with blocks and functions.">CheckParmsForFunctionDef</a>(MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>(), MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>(),</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>                            <span class="comment">/*CheckParameterNames=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span> </div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   <span class="comment">// Introduce all of the other parameters into this scope.</span></div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCMethodDecl.html#abbba9916294190611d98ec23edcf6bef">ObjCMethodDecl::param_iterator</a> PI = MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>(),</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>        E = MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>(); PI != E; ++PI) {</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *<a class="code" href="SemaOverload_8cpp.html#af465899bf43044df83229078154bc2ed">Param</a> = (*PI);</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>     <span class="keywordflow">if</span> (!Param-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>() &&</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>         <a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>         !<a class="code" href="SemaDeclObjC_8cpp.html#a114a68eec9bb61d848eb421efab08319">HasExplicitOwnershipAttr</a>(*<span class="keyword">this</span>, Param))</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Param-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_arc_strong_pointer_objc_pointer) <<</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>             Param-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span>     </div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>     <span class="keywordflow">if</span> ((*PI)->getIdentifier())</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>       <a class="code" href="classclang_1_1Sema.html#a45bd7757e01b318e87ae7dc5ea0ce8bf" title="Add this decl to the scope shadowed decl chains.">PushOnScopeChains</a>(*PI, FnBodyScope);</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   }</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> </div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   <span class="comment">// In ARC, disallow definition of retain/release/autorelease/retainCount</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount) {</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>     <span class="keywordflow">switch</span> (MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a797418dad629dd1538fd9ebaa6daa1f1" title="Determines the family of this method.">getMethodFamily</a>()) {</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140ae86182746e5f440a137ab74935cfc6f3">OMF_retain</a>:</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140ab33e5b4cd97daae64b0409a18449ace4">OMF_retainCount</a>:</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a7e220cb728054440402011e61c42426d">OMF_release</a>:</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a2b78c8dee03c81f201d7fd438470b5d4">OMF_autorelease</a>:</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(MDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_arc_illegal_method_def)</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>         << 0 << MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>();</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> </div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a5f62fe9ffed043a6852d5e4019147244" title="No particular method family.">OMF_None</a>:</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a64eaf6dd57d06411366a75201a9f2850">OMF_dealloc</a>:</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a5722533aab245d187223d468bc37f736">OMF_finalize</a>:</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140aa2506f3f3aa110c8634c520cac188850">OMF_alloc</a>:</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a7749fb8107514089095277752fe75ece">OMF_init</a>:</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a3051bdd94642c1f656e86cb06914f9cf">OMF_mutableCopy</a>:</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140ae5e7e02afb30e2fd7e5454b4f98678ef">OMF_copy</a>:</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140add0d96887fd8a747f93910ca08eb466c">OMF_new</a>:</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a3827e55785e22a2eeeb95809863714ae">OMF_self</a>:</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a5774b271952ff64e13807e5df139b183">OMF_performSelector</a>:</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>     }</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   }</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   <span class="comment">// Warn on deprecated methods under -Wdeprecated-implementations,</span></div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>   <span class="comment">// and prepare for warning on missing super calls.</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IC = MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ae289a054485ee4d1d66b33e833e16091">getClassInterface</a>()) {</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *IMD = </div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>       IC->lookupMethod(MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>(), MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a437ea0ebec5ba72fcf0084dd01654d4c">isInstanceMethod</a>());</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     </div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     <span class="keywordflow">if</span> (IMD) {</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>       <a class="code" href="classclang_1_1ObjCImplDecl.html">ObjCImplDecl</a> *ImplDeclOfMethodDef = </div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>         dyn_cast<<a class="code" href="classclang_1_1ObjCImplDecl.html">ObjCImplDecl</a>>(MDecl-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>());</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>       <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *ContDeclOfMethodDecl = </div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>         dyn_cast<<a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a>>(IMD-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>());</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>       <a class="code" href="classclang_1_1ObjCImplDecl.html">ObjCImplDecl</a> *ImplDeclOfMethodDecl = 0;</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *OID = dyn_cast<ObjCInterfaceDecl>(ContDeclOfMethodDecl))</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>         ImplDeclOfMethodDecl = OID->getImplementation();</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *CD = dyn_cast<ObjCCategoryDecl>(ContDeclOfMethodDecl))</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>         ImplDeclOfMethodDecl = CD->getImplementation();</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>       <span class="comment">// No need to issue deprecated warning if deprecated mehod in class/category</span></div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>       <span class="comment">// is being implemented in its own implementation (no overriding is involved).</span></div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>       <span class="keywordflow">if</span> (!ImplDeclOfMethodDecl || ImplDeclOfMethodDecl != ImplDeclOfMethodDef)</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>         <a class="code" href="SemaDeclObjC_8cpp.html#a999bc3bbb6fa21ef9d9f75dc5c9e3296">DiagnoseObjCImplementedDeprecations</a>(*<span class="keyword">this</span>, </div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>                                           dyn_cast<NamedDecl>(IMD), </div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>                                           MDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), 0);</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     }</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span> </div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     <span class="comment">// If this is "dealloc" or "finalize", set some bit here.</span></div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>     <span class="comment">// Then in ActOnSuperMessage() (SemaExprObjC), set it back to false.</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     <span class="comment">// Finally, in ActOnFinishFunctionBody() (SemaDecl), warn if flag is set.</span></div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     <span class="comment">// Only do this if the current class actually has a superclass.</span></div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *SuperClass = IC-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a5f23eb5cda9e27622e71382d1dc4b95d">getSuperClass</a>()) {</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>       <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140" title="A family of Objective-C methods.">ObjCMethodFamily</a> Family = MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a797418dad629dd1538fd9ebaa6daa1f1" title="Determines the family of this method.">getMethodFamily</a>();</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>       <span class="keywordflow">if</span> (Family == <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a64eaf6dd57d06411366a75201a9f2850">OMF_dealloc</a>) {</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>         <span class="keywordflow">if</span> (!(<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount ||</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>               <a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().getGC() == <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84a14f316080dbd204ff0c18a43a3e46869">LangOptions::GCOnly</a>))</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>           <a class="code" href="classclang_1_1Sema.html#a60473869f00fc68cd2253da60ce8b23b">getCurFunction</a>()-><a class="code" href="classclang_1_1sema_1_1FunctionScopeInfo.html#a7665a7999cffc716c5116a44c18560a6">ObjCShouldCallSuper</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span> </div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Family == <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a5722533aab245d187223d468bc37f736">OMF_finalize</a>) {</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().getGC() != <a class="code" href="classclang_1_1LangOptions.html#a01202ff51e7f9dbf39a447360d0a3a84ab62653320d5d7633c47854b73fe5d93d">LangOptions::NonGC</a>)</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>           <a class="code" href="classclang_1_1Sema.html#a60473869f00fc68cd2253da60ce8b23b">getCurFunction</a>()-><a class="code" href="classclang_1_1sema_1_1FunctionScopeInfo.html#a7665a7999cffc716c5116a44c18560a6">ObjCShouldCallSuper</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>         </div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>         <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *SuperMethod =</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>           SuperClass->lookupMethod(MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>(),</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>                                    MDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a437ea0ebec5ba72fcf0084dd01654d4c">isInstanceMethod</a>());</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>         <a class="code" href="classclang_1_1Sema.html#a60473869f00fc68cd2253da60ce8b23b">getCurFunction</a>()-><a class="code" href="classclang_1_1sema_1_1FunctionScopeInfo.html#a7665a7999cffc716c5116a44c18560a6">ObjCShouldCallSuper</a> = </div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>           (SuperMethod && SuperMethod-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1ObjCRequiresSuperAttr.html">ObjCRequiresSuperAttr</a>>());</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>       }</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>     }</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>   }</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span> }</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> <span class="keyword">namespace </span>{</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span> </div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span> <span class="comment">// Callback to only accept typo corrections that are Objective-C classes.</span></div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span> <span class="comment">// If an ObjCInterfaceDecl* is given to the constructor, then the validation</span></div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span> <span class="comment">// function will reject corrections to that class.</span></div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span> <span class="keyword">class </span>ObjCInterfaceValidatorCCC : <span class="keyword">public</span> <a class="code" href="classclang_1_1CorrectionCandidateCallback.html" title="Base class for callback objects used by Sema::CorrectTypo to check the validity of a potential typo c...">CorrectionCandidateCallback</a> {</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>  <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>   ObjCInterfaceValidatorCCC() : CurrentIDecl(0) {}</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>   <span class="keyword">explicit</span> ObjCInterfaceValidatorCCC(<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IDecl)</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>       : CurrentIDecl(IDecl) {}</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span> </div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> ValidateCandidate(<span class="keyword">const</span> <a class="code" href="classclang_1_1TypoCorrection.html" title="Simple class containing the result of Sema::CorrectTypo.">TypoCorrection</a> &candidate) {</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> = candidate.<a class="code" href="classclang_1_1TypoCorrection.html#a274abfa1fb4a6ecb365acc4458842a13">getCorrectionDeclAs</a><<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a>>();</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>     <span class="keywordflow">return</span> ID && !<a class="code" href="namespaceclang.html#ad9d926b16adbdbc93705737b69d47cae" title="Determine whether two declarations declare the same entity.">declaresSameEntity</a>(ID, CurrentIDecl);</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>   }</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span> </div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>  <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *CurrentIDecl;</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span> };</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span> }</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span> </div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Sema.html#a25587c13ebd48805920dd615714502cf">Sema::</a></div>
+<div class="line"><a name="l00443"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a25587c13ebd48805920dd615714502cf">  443</a></span> <a class="code" href="classclang_1_1Sema.html#a25587c13ebd48805920dd615714502cf">ActOnStartClassInterface</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> AtInterfaceLoc,</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>                          <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *ClassName, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ClassLoc,</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>                          <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *SuperName, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> SuperLoc,</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>                          <a class="code" href="classclang_1_1Decl.html">Decl</a> * <span class="keyword">const</span> *ProtoRefs, <span class="keywordtype">unsigned</span> NumProtoRefs,</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>                          <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> *ProtoLocs, </div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>                          <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> EndProtoLoc, <a class="code" href="classclang_1_1AttributeList.html">AttributeList</a> *AttrList) {</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>   assert(ClassName && <span class="stringliteral">"Missing class identifier"</span>);</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span> </div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>   <span class="comment">// Check for another declaration kind with the same name.</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>   <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *PrevDecl = <a class="code" href="classclang_1_1Sema.html#a48d86d16f21c7156e76e364727e3beea" title="Look up a name, looking for a single declaration. Return null if the results were absent...">LookupSingleName</a>(<a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>, ClassName, ClassLoc,</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>                                          <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa0f401cd356feef42a5d4f95df7a6bf66">LookupOrdinaryName</a>, <a class="code" href="classclang_1_1Sema.html#a91abc8920d6bf0e4dc8c7c21aa821a09a63186acb6716b204ba3cd3b3a778b434" title="The lookup results will be used for redeclaration of a name, if an entity by that name already exists...">ForRedeclaration</a>);</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span> </div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>   <span class="keywordflow">if</span> (PrevDecl && !isa<ObjCInterfaceDecl>(PrevDecl)) {</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClassLoc, diag::err_redefinition_different_kind) << ClassName;</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PrevDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_definition);</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>   }</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span> </div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>   <span class="comment">// Create a declaration to describe this @interface.</span></div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a>* PrevIDecl = dyn_cast_or_null<ObjCInterfaceDecl>(PrevDecl);</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span> </div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>   <span class="keywordflow">if</span> (PrevIDecl && PrevIDecl-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>() != ClassName) {</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>     <span class="comment">// A previous decl with a different name is because of</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     <span class="comment">// @compatibility_alias, for example:</span></div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>     <span class="comment">// \code</span></div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>     <span class="comment">//   @class NewImage;</span></div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>     <span class="comment">//   @compatibility_alias OldImage NewImage;</span></div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     <span class="comment">// \endcode</span></div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>     <span class="comment">// A lookup for 'OldImage' will return the 'NewImage' decl.</span></div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>     <span class="comment">// In such a case use the real declaration name, instead of the alias one,</span></div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>     <span class="comment">// otherwise we will break IdentifierResolver and redecls-chain invariants.</span></div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>     <span class="comment">// FIXME: If necessary, add a bit to indicate that this ObjCInterfaceDecl</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>     <span class="comment">// has been aliased.</span></div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>     ClassName = PrevIDecl-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>();</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>   }</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span> </div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IDecl</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     = <a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a8bad7a98c520f28fdeabb0b88125b3ea">ObjCInterfaceDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>, AtInterfaceLoc, ClassName,</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>                                 PrevIDecl, ClassLoc);</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>   </div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>   <span class="keywordflow">if</span> (PrevIDecl) {</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>     <span class="comment">// Class already seen. Was it a definition?</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *Def = PrevIDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a2dc33c9466b73095006cbd10cdf15fb5" title="Retrieve the definition of this class, or NULL if this class has been forward-declared (with @class) ...">getDefinition</a>()) {</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtInterfaceLoc, diag::err_duplicate_class_def)</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>         << PrevIDecl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Def->getLocation(), diag::note_previous_definition);</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>       IDecl-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     }</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>   }</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>   </div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>   <span class="keywordflow">if</span> (AttrList)</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>     <a class="code" href="classclang_1_1Sema.html#a0137a778257770a25d9c89cadef1d4ec">ProcessDeclAttributeList</a>(<a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>, IDecl, AttrList);</div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>   <a class="code" href="classclang_1_1Sema.html#a45bd7757e01b318e87ae7dc5ea0ce8bf" title="Add this decl to the scope shadowed decl chains.">PushOnScopeChains</a>(IDecl, <a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>);</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span> </div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>   <span class="comment">// Start the definition of this class. If we're in a redefinition case, there </span></div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>   <span class="comment">// may already be a definition, so we'll end up adding to it.</span></div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>   <span class="keywordflow">if</span> (!IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a2337d6990ec398fa1863459e77183e52" title="Determine whether this class has been defined.">hasDefinition</a>())</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>     IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#ad425c461c8348a37669a445577f9df8b" title="Starts the definition of this Objective-C class, taking it from a forward declaration (@class) to a d...">startDefinition</a>();</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>   </div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>   <span class="keywordflow">if</span> (SuperName) {</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>     <span class="comment">// Check if a different kind of symbol declared in this scope.</span></div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>     PrevDecl = <a class="code" href="classclang_1_1Sema.html#a48d86d16f21c7156e76e364727e3beea" title="Look up a name, looking for a single declaration. Return null if the results were absent...">LookupSingleName</a>(<a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>, SuperName, SuperLoc,</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>                                 <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa0f401cd356feef42a5d4f95df7a6bf66">LookupOrdinaryName</a>);</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span> </div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     <span class="keywordflow">if</span> (!PrevDecl) {</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>       <span class="comment">// Try to correct for a typo in the superclass name without correcting</span></div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>       <span class="comment">// to the class we're defining.</span></div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>       ObjCInterfaceValidatorCCC Validator(IDecl);</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1TypoCorrection.html" title="Simple class containing the result of Sema::CorrectTypo.">TypoCorrection</a> Corrected = <a class="code" href="classclang_1_1Sema.html#a56bda9492c25602dc50508a4170268ef" title="Try to "correct" a typo in the source code by finding visible declarations whose names are similar to...">CorrectTypo</a>(</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>           <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a>(SuperName, SuperLoc), <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa0f401cd356feef42a5d4f95df7a6bf66">LookupOrdinaryName</a>, <a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>,</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>           <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, Validator)) {</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>         <a class="code" href="classclang_1_1Sema.html#ac282105147675560aa1344dcf17aeaa0">diagnoseTypo</a>(Corrected, <a class="code" href="classclang_1_1Sema.html#ac4e72de7865043558a71912b3bfd8f91" title="Build a partial diagnostic.">PDiag</a>(diag::err_undef_superclass_suggest)</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>                                     << SuperName << ClassName);</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>         PrevDecl = Corrected.getCorrectionDeclAs<<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a>>();</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>       }</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>     }</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span> </div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     <span class="keywordflow">if</span> (<a class="code" href="namespaceclang.html#ad9d926b16adbdbc93705737b69d47cae" title="Determine whether two declarations declare the same entity.">declaresSameEntity</a>(PrevDecl, IDecl)) {</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SuperLoc, diag::err_recursive_superclass)</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>         << SuperName << ClassName << <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(AtInterfaceLoc, ClassLoc);</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>       IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#acead904c1afd57da81402785ca47afcd">setEndOfDefinitionLoc</a>(ClassLoc);</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>       <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *SuperClassDecl =</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>                                 dyn_cast_or_null<ObjCInterfaceDecl>(PrevDecl);</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span> </div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>       <span class="comment">// Diagnose classes that inherit from deprecated classes.</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>       <span class="keywordflow">if</span> (SuperClassDecl)</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>         (void)<a class="code" href="classclang_1_1Sema.html#a3d210c887f39c25660ade50a840938b8" title="Determine whether the use of this declaration is valid, and emit any corresponding diagnostics...">DiagnoseUseOfDecl</a>(SuperClassDecl, SuperLoc);</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span> </div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>       <span class="keywordflow">if</span> (PrevDecl && SuperClassDecl == 0) {</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>         <span class="comment">// The previous declaration was not a class decl. Check if we have a</span></div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>         <span class="comment">// typedef. If we do, get the underlying class type.</span></div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>         <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1TypedefNameDecl.html" title="Base class for declarations which introduce a typedef-name.">TypedefNameDecl</a> *TDecl =</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>               dyn_cast_or_null<TypedefNameDecl>(PrevDecl)) {</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>           <a class="code" href="classclang_1_1QualType.html">QualType</a> T = TDecl->getUnderlyingType();</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>           <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#a044e6e3fc98266ba0e065860aa6f7305">isObjCObjectType</a>()) {</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>             <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *IDecl = T-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectType.html">ObjCObjectType</a>>()-><a class="code" href="classclang_1_1ObjCObjectType.html#a768f52da9b3b79e70b48391b38388e40">getInterface</a>()) {</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>               SuperClassDecl = dyn_cast<<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a>>(IDecl);</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>               <span class="comment">// This handles the following case:</span></div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>               <span class="comment">// @interface NewI @end</span></div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>               <span class="comment">// typedef NewI DeprI __attribute__((deprecated("blah")))</span></div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>               <span class="comment">// @interface SI : DeprI /* warn here */ @end</span></div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>               (void)<a class="code" href="classclang_1_1Sema.html#a3d210c887f39c25660ade50a840938b8" title="Determine whether the use of this declaration is valid, and emit any corresponding diagnostics...">DiagnoseUseOfDecl</a>(const_cast<TypedefNameDecl*>(TDecl), SuperLoc);</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>             }</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>           }</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>         }</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span> </div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>         <span class="comment">// This handles the following case:</span></div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>         <span class="comment">//</span></div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>         <span class="comment">// typedef int SuperClass;</span></div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>         <span class="comment">// @interface MyClass : SuperClass {} @end</span></div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>         <span class="comment">//</span></div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>         <span class="keywordflow">if</span> (!SuperClassDecl) {</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SuperLoc, diag::err_redefinition_different_kind) << SuperName;</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PrevDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_definition);</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>         }</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>       }</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span> </div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>       <span class="keywordflow">if</span> (!dyn_cast_or_null<TypedefNameDecl>(PrevDecl)) {</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>         <span class="keywordflow">if</span> (!SuperClassDecl)</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SuperLoc, diag::err_undef_superclass)</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>             << SuperName << ClassName << <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(AtInterfaceLoc, ClassLoc);</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a4648f07425b7f681fed586a4280957fd" title="Ensure that the type T is a complete type.">RequireCompleteType</a>(SuperLoc, </div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>                                   <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ae498c138a079e26fa0b2ebcb11d9136b">getObjCInterfaceType</a>(SuperClassDecl),</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>                                      diag::err_forward_superclass,</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>                                      SuperClassDecl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>(),</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>                                      ClassName,</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>                                      SourceRange(AtInterfaceLoc, ClassLoc))) {</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>           SuperClassDecl = 0;</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         }</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>       }</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>       IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#aa4d0acc3b201fe2995b33e33137d90ad">setSuperClass</a>(SuperClassDecl);</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>       IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a7edf40ac633f5e0be27e3de5b826b564">setSuperClassLoc</a>(SuperLoc);</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>       IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#acead904c1afd57da81402785ca47afcd">setEndOfDefinitionLoc</a>(SuperLoc);</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>     }</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>   } <span class="keywordflow">else</span> { <span class="comment">// we have a root class.</span></div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>     IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#acead904c1afd57da81402785ca47afcd">setEndOfDefinitionLoc</a>(ClassLoc);</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   }</div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span> </div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>   <span class="comment">// Check then save referenced protocols.</span></div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>   <span class="keywordflow">if</span> (NumProtoRefs) {</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>     IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a1c2af83058b55f3e8685dc24ed608c52">setProtocolList</a>((<a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a>*<span class="keyword">const</span>*)ProtoRefs, NumProtoRefs,</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>                            ProtoLocs, <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>);</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>     IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#acead904c1afd57da81402785ca47afcd">setEndOfDefinitionLoc</a>(EndProtoLoc);</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>   }</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span> </div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>   <a class="code" href="classclang_1_1Sema.html#ad7c1d356c40a6768973c91bfceb5f35c">CheckObjCDeclScope</a>(IDecl);</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a5c76a1810ad398e9a828dea254250474">ActOnObjCContainerStartDefinition</a>(IDecl);</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span> }</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span> <span class="comment"></span></div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span> <span class="comment">/// ActOnTypedefedProtocols - this action finds protocol list as part of the</span></div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span> <span class="comment">/// typedef'ed use for a qualified super class and adds them to the list</span></div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span> <span class="comment">/// of the protocols.</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#ad4f8e68c216c3434ccb34cf219385d86">  596</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#ad4f8e68c216c3434ccb34cf219385d86">Sema::ActOnTypedefedProtocols</a>(<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<Decl *></a> &ProtocolRefs,</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>                                    <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *SuperName,</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>                                    <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> SuperLoc) {</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>   <span class="keywordflow">if</span> (!SuperName)</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>   <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a>* IDecl = <a class="code" href="classclang_1_1Sema.html#a48d86d16f21c7156e76e364727e3beea" title="Look up a name, looking for a single declaration. Return null if the results were absent...">LookupSingleName</a>(<a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>, SuperName, SuperLoc,</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>                                       <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa0f401cd356feef42a5d4f95df7a6bf66">LookupOrdinaryName</a>);</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>   <span class="keywordflow">if</span> (!IDecl)</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>   </div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1TypedefNameDecl.html" title="Base class for declarations which introduce a typedef-name.">TypedefNameDecl</a> *TDecl = dyn_cast_or_null<TypedefNameDecl>(IDecl)) {</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> T = TDecl->getUnderlyingType();</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>     <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#a044e6e3fc98266ba0e065860aa6f7305">isObjCObjectType</a>())</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectType.html">ObjCObjectType</a> *OPT = T-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectType.html">ObjCObjectType</a>>())</div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCObjectType.html#a6be60d57cfe17bfa069665245fe26b7f">ObjCObjectType::qual_iterator</a> I = OPT->qual_begin(),</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>              E = OPT->qual_end(); I != E; ++I)</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>           ProtocolRefs.push_back(*I);</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>   }</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span> }</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span> <span class="comment"></span></div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span> <span class="comment">/// ActOnCompatibilityAlias - this action is called after complete parsing of</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span> <span class="comment">/// a \@compatibility_alias declaration. It sets up the alias relationships.</span></div>
+<div class="line"><a name="l00618"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a3cbbf4dc1ba3567fd95fff5422039bf5">  618</a></span> <span class="comment"></span><a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Sema.html#a3cbbf4dc1ba3567fd95fff5422039bf5">Sema::ActOnCompatibilityAlias</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> AtLoc,</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>                                     <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *AliasName,</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>                                     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> AliasLocation,</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>                                     <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *ClassName,</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>                                     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ClassLocation) {</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>   <span class="comment">// Look for previous declaration of alias name</span></div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>   <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *ADecl = <a class="code" href="classclang_1_1Sema.html#a48d86d16f21c7156e76e364727e3beea" title="Look up a name, looking for a single declaration. Return null if the results were absent...">LookupSingleName</a>(<a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>, AliasName, AliasLocation,</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>                                       <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa0f401cd356feef42a5d4f95df7a6bf66">LookupOrdinaryName</a>, <a class="code" href="classclang_1_1Sema.html#a91abc8920d6bf0e4dc8c7c21aa821a09a63186acb6716b204ba3cd3b3a778b434" title="The lookup results will be used for redeclaration of a name, if an entity by that name already exists...">ForRedeclaration</a>);</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>   <span class="keywordflow">if</span> (ADecl) {</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AliasLocation, diag::err_conflicting_aliasing_type) << AliasName;</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ADecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_declaration);</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>   }</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>   <span class="comment">// Check for class declaration</span></div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>   <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *CDeclU = <a class="code" href="classclang_1_1Sema.html#a48d86d16f21c7156e76e364727e3beea" title="Look up a name, looking for a single declaration. Return null if the results were absent...">LookupSingleName</a>(<a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>, ClassName, ClassLocation,</div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>                                        <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa0f401cd356feef42a5d4f95df7a6bf66">LookupOrdinaryName</a>, <a class="code" href="classclang_1_1Sema.html#a91abc8920d6bf0e4dc8c7c21aa821a09a63186acb6716b204ba3cd3b3a778b434" title="The lookup results will be used for redeclaration of a name, if an entity by that name already exists...">ForRedeclaration</a>);</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1TypedefNameDecl.html" title="Base class for declarations which introduce a typedef-name.">TypedefNameDecl</a> *TDecl =</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>         dyn_cast_or_null<TypedefNameDecl>(CDeclU)) {</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> T = TDecl->getUnderlyingType();</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>     <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#a044e6e3fc98266ba0e065860aa6f7305">isObjCObjectType</a>()) {</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *IDecl = T-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectType.html">ObjCObjectType</a>>()-><a class="code" href="classclang_1_1ObjCObjectType.html#a768f52da9b3b79e70b48391b38388e40">getInterface</a>()) {</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>         ClassName = IDecl->getIdentifier();</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>         CDeclU = <a class="code" href="classclang_1_1Sema.html#a48d86d16f21c7156e76e364727e3beea" title="Look up a name, looking for a single declaration. Return null if the results were absent...">LookupSingleName</a>(<a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>, ClassName, ClassLocation,</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>                                   <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa0f401cd356feef42a5d4f95df7a6bf66">LookupOrdinaryName</a>, <a class="code" href="classclang_1_1Sema.html#a91abc8920d6bf0e4dc8c7c21aa821a09a63186acb6716b204ba3cd3b3a778b434" title="The lookup results will be used for redeclaration of a name, if an entity by that name already exists...">ForRedeclaration</a>);</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>       }</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     }</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>   }</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *CDecl = dyn_cast_or_null<ObjCInterfaceDecl>(CDeclU);</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>   <span class="keywordflow">if</span> (CDecl == 0) {</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClassLocation, diag::warn_undef_interface) << ClassName;</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>     <span class="keywordflow">if</span> (CDeclU)</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(CDeclU-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_declaration);</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>   }</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span> </div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>   <span class="comment">// Everything checked out, instantiate a new alias declaration AST.</span></div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   <a class="code" href="classclang_1_1ObjCCompatibleAliasDecl.html">ObjCCompatibleAliasDecl</a> *AliasDecl =</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>     <a class="code" href="classclang_1_1ObjCCompatibleAliasDecl.html#a7c1bb9badf8200800aa89adaee4f3110">ObjCCompatibleAliasDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>, AtLoc, AliasName, CDecl);</div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span> </div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Sema.html#ad7c1d356c40a6768973c91bfceb5f35c">CheckObjCDeclScope</a>(AliasDecl))</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>     <a class="code" href="classclang_1_1Sema.html#a45bd7757e01b318e87ae7dc5ea0ce8bf" title="Add this decl to the scope shadowed decl chains.">PushOnScopeChains</a>(AliasDecl, <a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>);</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span> </div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>   <span class="keywordflow">return</span> AliasDecl;</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span> }</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span> </div>
+<div class="line"><a name="l00663"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#af0e051b65f68a63d4c88b39f53a47714">  663</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Sema.html#af0e051b65f68a63d4c88b39f53a47714">Sema::CheckForwardProtocolDeclarationForCircularDependency</a>(</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *PName,</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> &Ploc, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> PrevLoc,</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCList.html">ObjCList<ObjCProtocolDecl></a> &PList) {</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>   </div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>   <span class="keywordtype">bool</span> res = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCList.html">ObjCList<ObjCProtocolDecl>::iterator</a> I = PList.<a class="code" href="classclang_1_1ObjCList.html#a3c770693071ab02a812f061b30d6a351">begin</a>(),</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>        E = PList.<a class="code" href="classclang_1_1ObjCList.html#a93a1bd3a6ce347889884bb75c437cbfb">end</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *PDecl = <a class="code" href="classclang_1_1Sema.html#a99744fb16551075377767439ed06a2d6" title="Find the protocol with the given name, if any.">LookupProtocol</a>((*I)->getIdentifier(),</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>                                                  Ploc)) {</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>       <span class="keywordflow">if</span> (PDecl->getIdentifier() == PName) {</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Ploc, diag::err_protocol_has_circular_dependency);</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PrevLoc, diag::note_previous_definition);</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>         res = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>       }</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>       </div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>       <span class="keywordflow">if</span> (!PDecl->hasDefinition())</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>       </div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#af0e051b65f68a63d4c88b39f53a47714">CheckForwardProtocolDeclarationForCircularDependency</a>(PName, Ploc,</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>             PDecl->getLocation(), PDecl->getReferencedProtocols()))</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>         res = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>     }</div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>   }</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>   <span class="keywordflow">return</span> res;</div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span> }</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span> </div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *</div>
+<div class="line"><a name="l00691"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a19004b3f33e853931d947490519645d3">  691</a></span> <a class="code" href="classclang_1_1Sema.html#a19004b3f33e853931d947490519645d3">Sema::ActOnStartProtocolInterface</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> AtProtoInterfaceLoc,</div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>                                   <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *ProtocolName,</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>                                   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ProtocolLoc,</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>                                   <a class="code" href="classclang_1_1Decl.html">Decl</a> * <span class="keyword">const</span> *ProtoRefs,</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>                                   <span class="keywordtype">unsigned</span> NumProtoRefs,</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> *ProtoLocs,</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>                                   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> EndProtoLoc,</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>                                   <a class="code" href="classclang_1_1AttributeList.html">AttributeList</a> *AttrList) {</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>   <span class="keywordtype">bool</span> err = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>   <span class="comment">// FIXME: Deal with AttrList.</span></div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>   assert(ProtocolName && <span class="stringliteral">"Missing protocol identifier"</span>);</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>   <a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *PrevDecl = <a class="code" href="classclang_1_1Sema.html#a99744fb16551075377767439ed06a2d6" title="Find the protocol with the given name, if any.">LookupProtocol</a>(ProtocolName, ProtocolLoc,</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>                                               <a class="code" href="classclang_1_1Sema.html#a91abc8920d6bf0e4dc8c7c21aa821a09a63186acb6716b204ba3cd3b3a778b434" title="The lookup results will be used for redeclaration of a name, if an entity by that name already exists...">ForRedeclaration</a>);</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>   <a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *PDecl = 0;</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *Def = PrevDecl? PrevDecl-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#acaa3df11f4600181c0910838bea02172" title="Retrieve the definition of this protocol, if any.">getDefinition</a>() : 0) {</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>     <span class="comment">// If we already have a definition, complain.</span></div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ProtocolLoc, diag::warn_duplicate_protocol_def) << ProtocolName;</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Def->getLocation(), diag::note_previous_definition);</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span> </div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>     <span class="comment">// Create a new protocol that is completely distinct from previous</span></div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span>     <span class="comment">// declarations, and do not make this protocol available for name lookup.</span></div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>     <span class="comment">// That way, we'll end up completely ignoring the duplicate.</span></div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>     <span class="comment">// FIXME: Can we turn this into an error?</span></div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>     PDecl = <a class="code" href="classclang_1_1ObjCProtocolDecl.html#a197b6a7f765b44417a354cc3869e0995">ObjCProtocolDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>, ProtocolName,</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>                                      ProtocolLoc, AtProtoInterfaceLoc,</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>                                      <span class="comment">/*PrevDecl=*/</span>0);</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>     PDecl->startDefinition();</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>     <span class="keywordflow">if</span> (PrevDecl) {</div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>       <span class="comment">// Check for circular dependencies among protocol declarations. This can</span></div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>       <span class="comment">// only happen if this protocol was forward-declared.</span></div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>       <a class="code" href="classclang_1_1ObjCList.html">ObjCList<ObjCProtocolDecl></a> PList;</div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>       PList.<a class="code" href="classclang_1_1ObjCList.html#ad8e8692c231376ab636414635a8de584">set</a>((<a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *<span class="keyword">const</span>*)ProtoRefs, NumProtoRefs, <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>);</div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>       err = <a class="code" href="classclang_1_1Sema.html#af0e051b65f68a63d4c88b39f53a47714">CheckForwardProtocolDeclarationForCircularDependency</a>(</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>               ProtocolName, ProtocolLoc, PrevDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), PList);</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>     }</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span> </div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>     <span class="comment">// Create the new declaration.</span></div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>     PDecl = <a class="code" href="classclang_1_1ObjCProtocolDecl.html#a197b6a7f765b44417a354cc3869e0995">ObjCProtocolDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>, ProtocolName,</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>                                      ProtocolLoc, AtProtoInterfaceLoc,</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>                                      <span class="comment">/*PrevDecl=*/</span>PrevDecl);</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>     </div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>     <a class="code" href="classclang_1_1Sema.html#a45bd7757e01b318e87ae7dc5ea0ce8bf" title="Add this decl to the scope shadowed decl chains.">PushOnScopeChains</a>(PDecl, <a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>);</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>     PDecl-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#a5a134286ef9cb51eddd0773cc318baf9" title="Starts the definition of this Objective-C protocol.">startDefinition</a>();</div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>   }</div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>   </div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>   <span class="keywordflow">if</span> (AttrList)</div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>     <a class="code" href="classclang_1_1Sema.html#a0137a778257770a25d9c89cadef1d4ec">ProcessDeclAttributeList</a>(<a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>, PDecl, AttrList);</div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>   </div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>   <span class="comment">// Merge attributes from previous declarations.</span></div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>   <span class="keywordflow">if</span> (PrevDecl)</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>     <a class="code" href="classclang_1_1Sema.html#ab9588f78e4cf52635487edc9fcffd5a1" title="mergeDeclAttributes - Copy attributes from the Old decl to the New one.">mergeDeclAttributes</a>(PDecl, PrevDecl);</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span> </div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>   <span class="keywordflow">if</span> (!err && NumProtoRefs ) {<span class="comment"></span></div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span> <span class="comment">    /// Check then save referenced protocols.</span></div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span> <span class="comment"></span>    PDecl-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#a2ce058458b21677baf5e68c1a145d688">setProtocolList</a>((<a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a>*<span class="keyword">const</span>*)ProtoRefs, NumProtoRefs,</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>                            ProtoLocs, <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>);</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>   }</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span> </div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>   <a class="code" href="classclang_1_1Sema.html#ad7c1d356c40a6768973c91bfceb5f35c">CheckObjCDeclScope</a>(PDecl);</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a5c76a1810ad398e9a828dea254250474">ActOnObjCContainerStartDefinition</a>(PDecl);</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span> }</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span> <span class="comment"></span></div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span> <span class="comment">/// FindProtocolDeclaration - This routine looks up protocols and</span></div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span> <span class="comment">/// issues an error if they are not declared. It returns list of</span></div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span> <span class="comment">/// protocol declarations in its 'Protocols' argument.</span></div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span> <span class="comment"></span><span class="keywordtype">void</span></div>
+<div class="line"><a name="l00758"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a5f68c01ca56f44056235bc7eff1db0d2">  758</a></span> <a class="code" href="classclang_1_1Sema.html#a5f68c01ca56f44056235bc7eff1db0d2">Sema::FindProtocolDeclaration</a>(<span class="keywordtype">bool</span> WarnOnDeclarations,</div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>                               <span class="keyword">const</span> <a class="code" href="namespaceclang.html#aca6dc9f281765494a84d428998ab4e74" title="A simple pair of identifier info and location.">IdentifierLocPair</a> *ProtocolId,</div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span>                               <span class="keywordtype">unsigned</span> NumProtocols,</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>                               <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<Decl *></a> &Protocols) {</div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != NumProtocols; ++i) {</div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>     <a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *PDecl = <a class="code" href="classclang_1_1Sema.html#a99744fb16551075377767439ed06a2d6" title="Find the protocol with the given name, if any.">LookupProtocol</a>(ProtocolId[i].first,</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>                                              ProtocolId[i].second);</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>     <span class="keywordflow">if</span> (!PDecl) {</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>       <a class="code" href="classclang_1_1DeclFilterCCC.html" title="Simple template class for restricting typo correction candidates to ones having a single Decl* of the...">DeclFilterCCC<ObjCProtocolDecl></a> Validator;</div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>       <a class="code" href="classclang_1_1TypoCorrection.html" title="Simple class containing the result of Sema::CorrectTypo.">TypoCorrection</a> Corrected = <a class="code" href="classclang_1_1Sema.html#a56bda9492c25602dc50508a4170268ef" title="Try to "correct" a typo in the source code by finding visible declarations whose names are similar to...">CorrectTypo</a>(</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>           <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a>(ProtocolId[i].first, ProtocolId[i].second),</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>           <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa3cecd2a9d01a1d1ce7d9324e20993e92" title="Look up the name of an Objective-C protocol.">LookupObjCProtocolName</a>, <a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>, <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, Validator);</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>       <span class="keywordflow">if</span> ((PDecl = Corrected.<a class="code" href="classclang_1_1TypoCorrection.html#a274abfa1fb4a6ecb365acc4458842a13">getCorrectionDeclAs</a><<a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a>>()))</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>         <a class="code" href="classclang_1_1Sema.html#ac282105147675560aa1344dcf17aeaa0">diagnoseTypo</a>(Corrected, <a class="code" href="classclang_1_1Sema.html#ac4e72de7865043558a71912b3bfd8f91" title="Build a partial diagnostic.">PDiag</a>(diag::err_undeclared_protocol_suggest)</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>                                     << ProtocolId[i].first);</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>     }</div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span> </div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>     <span class="keywordflow">if</span> (!PDecl) {</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ProtocolId[i].second, diag::err_undeclared_protocol)</div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>         << ProtocolId[i].first;</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>     }</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>     <span class="comment">// If this is a forward protocol declaration, get its definition.</span></div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>     <span class="keywordflow">if</span> (!PDecl-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#a80248299799f2efb0abd1bb0e1dd87fe" title="Determine whether this particular declaration is also the definition.">isThisDeclarationADefinition</a>() && PDecl-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#acaa3df11f4600181c0910838bea02172" title="Retrieve the definition of this protocol, if any.">getDefinition</a>())</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>       PDecl = PDecl-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#acaa3df11f4600181c0910838bea02172" title="Retrieve the definition of this protocol, if any.">getDefinition</a>();</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>     </div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>     (void)<a class="code" href="classclang_1_1Sema.html#a3d210c887f39c25660ade50a840938b8" title="Determine whether the use of this declaration is valid, and emit any corresponding diagnostics...">DiagnoseUseOfDecl</a>(PDecl, ProtocolId[i].second);</div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span> </div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>     <span class="comment">// If this is a forward declaration and we are supposed to warn in this</span></div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>     <span class="comment">// case, do it.</span></div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>     <span class="comment">// FIXME: Recover nicely in the hidden case.</span></div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>     <span class="keywordflow">if</span> (WarnOnDeclarations &&</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>         (!PDecl-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#a8da3398ad6bc882ac7a75d009770e485" title="Determine whether this protocol has a definition.">hasDefinition</a>() || PDecl-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#acaa3df11f4600181c0910838bea02172" title="Retrieve the definition of this protocol, if any.">getDefinition</a>()-><a class="code" href="classclang_1_1NamedDecl.html#a6725184df2e9d5ca8ba02da12cd1aa08" title="Determine whether this declaration is hidden from name lookup.">isHidden</a>()))</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ProtocolId[i].second, diag::warn_undef_protocolref)</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>         << ProtocolId[i].first;</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span>     Protocols.push_back(PDecl);</div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>   }</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span> }</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span> <span class="comment"></span></div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span> <span class="comment">/// DiagnoseClassExtensionDupMethods - Check for duplicate declaration of</span></div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span> <span class="comment">/// a class method in its extension.</span></div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00800"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#aa386b64d7c733a7e8ba8123461f0dc3f">  800</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#aa386b64d7c733a7e8ba8123461f0dc3f">Sema::DiagnoseClassExtensionDupMethods</a>(<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *CAT,</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>                                             <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>) {</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>   <span class="keywordflow">if</span> (!ID)</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>     <span class="keywordflow">return</span>;  <span class="comment">// Possibly due to previous error</span></div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span> </div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>   llvm::DenseMap<Selector, const ObjCMethodDecl*> MethodMap;</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">ObjCInterfaceDecl::method_iterator</a> i = ID-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ab26e24ef187cf8d5923e3150e3484750">meth_begin</a>(),</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>        e =  ID-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a1520984ad5d5c7314539cdf0c642c131">meth_end</a>(); i != e; ++i) {</div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>     <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MD = *i;</div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>     MethodMap[MD-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>()] = MD;</div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>   }</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span> </div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>   <span class="keywordflow">if</span> (MethodMap.empty())</div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">ObjCCategoryDecl::method_iterator</a> i = CAT-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ab26e24ef187cf8d5923e3150e3484750">meth_begin</a>(),</div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>        e =  CAT-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a1520984ad5d5c7314539cdf0c642c131">meth_end</a>(); i != e; ++i) {</div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>     <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Method = *i;</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *&PrevMethod = MethodMap[Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>()];</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>     <span class="keywordflow">if</span> (PrevMethod && !<a class="code" href="classclang_1_1Sema.html#abded456881381bd9aba81f6b7ffbd86a">MatchTwoMethodDeclarations</a>(Method, PrevMethod)) {</div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Method-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_duplicate_method_decl)</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>             << Method-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PrevMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_declaration);</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>     }</div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span>   }</div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span> }</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span> <span class="comment"></span></div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span> <span class="comment">/// ActOnForwardProtocolDeclaration - Handle \@protocol foo;</span></div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span> <span class="comment"></span><a class="code" href="classclang_1_1OpaquePtr.html" title="Wrapper for void* pointer.">Sema::DeclGroupPtrTy</a></div>
+<div class="line"><a name="l00828"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a6a1001a569d2f6d821d4ee6a9bdbead4">  828</a></span> <a class="code" href="classclang_1_1Sema.html#a6a1001a569d2f6d821d4ee6a9bdbead4" title="ActOnForwardProtocolDeclaration - Handle @protocol foo;.">Sema::ActOnForwardProtocolDeclaration</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> AtProtocolLoc,</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>                                       <span class="keyword">const</span> <a class="code" href="namespaceclang.html#aca6dc9f281765494a84d428998ab4e74" title="A simple pair of identifier info and location.">IdentifierLocPair</a> *IdentList,</div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span>                                       <span class="keywordtype">unsigned</span> NumElts,</div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span>                                       <a class="code" href="classclang_1_1AttributeList.html">AttributeList</a> *attrList) {</div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Decl *, 8></a> DeclsInGroup;</div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != NumElts; ++i) {</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>     <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *Ident = IdentList[i].first;</div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>     <a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *PrevDecl = <a class="code" href="classclang_1_1Sema.html#a99744fb16551075377767439ed06a2d6" title="Find the protocol with the given name, if any.">LookupProtocol</a>(Ident, IdentList[i].second,</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>                                                 <a class="code" href="classclang_1_1Sema.html#a91abc8920d6bf0e4dc8c7c21aa821a09a63186acb6716b204ba3cd3b3a778b434" title="The lookup results will be used for redeclaration of a name, if an entity by that name already exists...">ForRedeclaration</a>);</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>     <a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *PDecl</div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>       = <a class="code" href="classclang_1_1ObjCProtocolDecl.html#a197b6a7f765b44417a354cc3869e0995">ObjCProtocolDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>, Ident, </div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>                                  IdentList[i].second, AtProtocolLoc,</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>                                  PrevDecl);</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>         </div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>     <a class="code" href="classclang_1_1Sema.html#a45bd7757e01b318e87ae7dc5ea0ce8bf" title="Add this decl to the scope shadowed decl chains.">PushOnScopeChains</a>(PDecl, <a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>);</div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span>     <a class="code" href="classclang_1_1Sema.html#ad7c1d356c40a6768973c91bfceb5f35c">CheckObjCDeclScope</a>(PDecl);</div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>     </div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>     <span class="keywordflow">if</span> (attrList)</div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>       <a class="code" href="classclang_1_1Sema.html#a0137a778257770a25d9c89cadef1d4ec">ProcessDeclAttributeList</a>(<a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>, PDecl, attrList);</div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>     </div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>     <span class="keywordflow">if</span> (PrevDecl)</div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>       <a class="code" href="classclang_1_1Sema.html#ab9588f78e4cf52635487edc9fcffd5a1" title="mergeDeclAttributes - Copy attributes from the Old decl to the New one.">mergeDeclAttributes</a>(PDecl, PrevDecl);</div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span> </div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>     DeclsInGroup.push_back(PDecl);</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span>   }</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span> </div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a4de7a6579723dfee04a4afb5ef0c5a62">BuildDeclaratorGroup</a>(DeclsInGroup, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span> }</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span> </div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Sema.html#a02b9b83363c9a2801d50a63edf8b69bd">Sema::</a></div>
+<div class="line"><a name="l00858"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a02b9b83363c9a2801d50a63edf8b69bd">  858</a></span> <a class="code" href="classclang_1_1Sema.html#a02b9b83363c9a2801d50a63edf8b69bd">ActOnStartCategoryInterface</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> AtInterfaceLoc,</div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>                             <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *ClassName, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ClassLoc,</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>                             <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *CategoryName,</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>                             <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> CategoryLoc,</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>                             <a class="code" href="classclang_1_1Decl.html">Decl</a> * <span class="keyword">const</span> *ProtoRefs,</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>                             <span class="keywordtype">unsigned</span> NumProtoRefs,</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>                             <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> *ProtoLocs,</div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>                             <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> EndProtoLoc) {</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>   <a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *CDecl;</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IDecl = <a class="code" href="classclang_1_1Sema.html#ab21e4e048bbfa1d7be5ef2bc455b1816" title="Look for an Objective-C class in the translation unit.">getObjCInterfaceDecl</a>(ClassName, ClassLoc, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span> <span class="comment"></span></div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span> <span class="comment">  /// Check that class of this category is already completely declared.</span></div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span> <span class="comment"></span></div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>   <span class="keywordflow">if</span> (!IDecl </div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>       || <a class="code" href="classclang_1_1Sema.html#a4648f07425b7f681fed586a4280957fd" title="Ensure that the type T is a complete type.">RequireCompleteType</a>(ClassLoc, <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ae498c138a079e26fa0b2ebcb11d9136b">getObjCInterfaceType</a>(IDecl),</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>                              diag::err_category_forward_interface,</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>                              CategoryName == 0)) {</div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>     <span class="comment">// Create an invalid ObjCCategoryDecl to serve as context for</span></div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>     <span class="comment">// the enclosing method declarations.  We mark the decl invalid</span></div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>     <span class="comment">// to make it clear that this isn't a valid AST.</span></div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>     CDecl = <a class="code" href="classclang_1_1ObjCCategoryDecl.html#a479b90efe9e47bc188afac83ab632fd1">ObjCCategoryDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>, AtInterfaceLoc,</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>                                      ClassLoc, CategoryLoc, CategoryName,IDecl);</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>     CDecl-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>     <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>-><a class="code" href="classclang_1_1DeclContext.html#a86d2d92d17fbed1a41461bef1ec5cef8" title="Add the declaration D into this context.">addDecl</a>(CDecl);</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>         </div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>     <span class="keywordflow">if</span> (!IDecl)</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClassLoc, diag::err_undef_interface) << ClassName;</div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a5c76a1810ad398e9a828dea254250474">ActOnObjCContainerStartDefinition</a>(CDecl);</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>   }</div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span> </div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>   <span class="keywordflow">if</span> (!CategoryName && IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a1f5cbf5895d33b33402a9a8553e39733">getImplementation</a>()) {</div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClassLoc, diag::err_class_extension_after_impl) << ClassName;</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a1f5cbf5895d33b33402a9a8553e39733">getImplementation</a>()-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), </div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>           diag::note_implementation_declared);</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>   }</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span> </div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>   <span class="keywordflow">if</span> (CategoryName) {<span class="comment"></span></div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span> <span class="comment">    /// Check for duplicate interface declaration for this category</span></div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span> <span class="comment"></span>    <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *<a class="code" href="Format_8cpp.html#a367365df5b490f2ddb411318d9d421a9">Previous</a></div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>           = IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a38f6341423d6259490b11350838b7b65">FindCategoryDeclaration</a>(CategoryName)) {</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>       <span class="comment">// Class extensions can be declared multiple times, categories cannot.</span></div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(CategoryLoc, diag::warn_dup_category_def)</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>         << ClassName << CategoryName;</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(<a class="code" href="Format_8cpp.html#a367365df5b490f2ddb411318d9d421a9">Previous</a>->getLocation(), diag::note_previous_definition);</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>     }</div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>   }</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span> </div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>   CDecl = <a class="code" href="classclang_1_1ObjCCategoryDecl.html#a479b90efe9e47bc188afac83ab632fd1">ObjCCategoryDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>, AtInterfaceLoc,</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>                                    ClassLoc, CategoryLoc, CategoryName, IDecl);</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>   <span class="comment">// FIXME: PushOnScopeChains?</span></div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>   <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>-><a class="code" href="classclang_1_1DeclContext.html#a86d2d92d17fbed1a41461bef1ec5cef8" title="Add the declaration D into this context.">addDecl</a>(CDecl);</div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span> </div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span>   <span class="keywordflow">if</span> (NumProtoRefs) {</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>     CDecl-><a class="code" href="classclang_1_1ObjCCategoryDecl.html#a441b91b3ae4d3834852993e0bac95f65">setProtocolList</a>((<a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a>*<span class="keyword">const</span>*)ProtoRefs, NumProtoRefs, </div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>                            ProtoLocs, <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>);</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>     <span class="comment">// Protocols in the class extension belong to the class.</span></div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>     <span class="keywordflow">if</span> (CDecl-><a class="code" href="classclang_1_1ObjCCategoryDecl.html#ad8b830f899332fb32412f90c4b5cc855">IsClassExtension</a>())</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>      IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a01d30b2b37881e117d9fd3a797654cee">mergeClassExtensionProtocolList</a>((<a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a>*<span class="keyword">const</span>*)ProtoRefs, </div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>                                             NumProtoRefs, <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>); </div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>   }</div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span> </div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>   <a class="code" href="classclang_1_1Sema.html#ad7c1d356c40a6768973c91bfceb5f35c">CheckObjCDeclScope</a>(CDecl);</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a5c76a1810ad398e9a828dea254250474">ActOnObjCContainerStartDefinition</a>(CDecl);</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span> }</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span> <span class="comment"></span></div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span> <span class="comment">/// ActOnStartCategoryImplementation - Perform semantic checks on the</span></div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span> <span class="comment">/// category implementation declaration and build an ObjCCategoryImplDecl</span></div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span> <span class="comment">/// object.</span></div>
+<div class="line"><a name="l00926"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a5c9c8906e806f2dc792287dbbc38f27f">  926</a></span> <span class="comment"></span><a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Sema.html#a5c9c8906e806f2dc792287dbbc38f27f">Sema::ActOnStartCategoryImplementation</a>(</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>                       <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> AtCatImplLoc,</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>                       <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *ClassName, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ClassLoc,</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>                       <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *CatName, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> CatLoc) {</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IDecl = <a class="code" href="classclang_1_1Sema.html#ab21e4e048bbfa1d7be5ef2bc455b1816" title="Look for an Objective-C class in the translation unit.">getObjCInterfaceDecl</a>(ClassName, ClassLoc, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>   <a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *CatIDecl = 0;</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>   <span class="keywordflow">if</span> (IDecl && IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a2337d6990ec398fa1863459e77183e52" title="Determine whether this class has been defined.">hasDefinition</a>()) {</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>     CatIDecl = IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a38f6341423d6259490b11350838b7b65">FindCategoryDeclaration</a>(CatName);</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>     <span class="keywordflow">if</span> (!CatIDecl) {</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>       <span class="comment">// Category @implementation with no corresponding @interface.</span></div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>       <span class="comment">// Create and install one.</span></div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>       CatIDecl = <a class="code" href="classclang_1_1ObjCCategoryDecl.html#a479b90efe9e47bc188afac83ab632fd1">ObjCCategoryDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>, AtCatImplLoc,</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>                                           ClassLoc, CatLoc,</div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>                                           CatName, IDecl);</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>       CatIDecl-><a class="code" href="classclang_1_1Decl.html#aa89b44dad7f4fd7e9c15129f8f0784e4">setImplicit</a>();</div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>     }</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>   }</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span> </div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>   <a class="code" href="classclang_1_1ObjCCategoryImplDecl.html">ObjCCategoryImplDecl</a> *CDecl =</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>     <a class="code" href="classclang_1_1ObjCCategoryImplDecl.html#a269a580bb244c54ce1d6d0987d286d39">ObjCCategoryImplDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>, CatName, IDecl,</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>                                  ClassLoc, AtCatImplLoc, CatLoc);<span class="comment"></span></div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span> <span class="comment">  /// Check that class of this category is already completely declared.</span></div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span> <span class="comment"></span>  <span class="keywordflow">if</span> (!IDecl) {</div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClassLoc, diag::err_undef_interface) << ClassName;</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>     CDecl-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a4648f07425b7f681fed586a4280957fd" title="Ensure that the type T is a complete type.">RequireCompleteType</a>(ClassLoc, <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ae498c138a079e26fa0b2ebcb11d9136b">getObjCInterfaceType</a>(IDecl),</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>                                  diag::err_undef_interface)) {</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>     CDecl-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>   }</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span> </div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>   <span class="comment">// FIXME: PushOnScopeChains?</span></div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>   <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>-><a class="code" href="classclang_1_1DeclContext.html#a86d2d92d17fbed1a41461bef1ec5cef8" title="Add the declaration D into this context.">addDecl</a>(CDecl);</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span> </div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>   <span class="comment">// If the interface is deprecated/unavailable, warn/error about it.</span></div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>   <span class="keywordflow">if</span> (IDecl)</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>     <a class="code" href="classclang_1_1Sema.html#a3d210c887f39c25660ade50a840938b8" title="Determine whether the use of this declaration is valid, and emit any corresponding diagnostics...">DiagnoseUseOfDecl</a>(IDecl, ClassLoc);</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span> <span class="comment"></span></div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span> <span class="comment">  /// Check that CatName, category name, is not used in another implementation.</span></div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span> <span class="comment"></span>  <span class="keywordflow">if</span> (CatIDecl) {</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>     <span class="keywordflow">if</span> (CatIDecl-><a class="code" href="classclang_1_1ObjCCategoryDecl.html#a5dba40a80ac27eced0ae945f506104ed">getImplementation</a>()) {</div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClassLoc, diag::err_dup_implementation_category) << ClassName</div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>         << CatName;</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(CatIDecl-><a class="code" href="classclang_1_1ObjCCategoryDecl.html#a5dba40a80ac27eced0ae945f506104ed">getImplementation</a>()-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>            diag::note_previous_definition);</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>       CDecl-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>       CatIDecl-><a class="code" href="classclang_1_1ObjCCategoryDecl.html#ad976414591d06d1f197e82176af12eb2">setImplementation</a>(CDecl);</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>       <span class="comment">// Warn on implementating category of deprecated class under </span></div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span>       <span class="comment">// -Wdeprecated-implementations flag.</span></div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span>       <a class="code" href="SemaDeclObjC_8cpp.html#a999bc3bbb6fa21ef9d9f75dc5c9e3296">DiagnoseObjCImplementedDeprecations</a>(*<span class="keyword">this</span>, </div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>                                           dyn_cast<NamedDecl>(IDecl), </div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>                                           CDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), 2);</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>     }</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>   }</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span> </div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>   <a class="code" href="classclang_1_1Sema.html#ad7c1d356c40a6768973c91bfceb5f35c">CheckObjCDeclScope</a>(CDecl);</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a5c76a1810ad398e9a828dea254250474">ActOnObjCContainerStartDefinition</a>(CDecl);</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span> }</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span> </div>
+<div class="line"><a name="l00985"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#ac2bcd641abaef541771f0e74278714b1">  985</a></span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Sema.html#ac2bcd641abaef541771f0e74278714b1">Sema::ActOnStartClassImplementation</a>(</div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>                       <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> AtClassImplLoc,</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>                       <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *ClassName, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ClassLoc,</div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>                       <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *SuperClassname,</div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>                       <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> SuperClassLoc) {</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IDecl = 0;</div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>   <span class="comment">// Check for another declaration kind with the same name.</span></div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>   <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *PrevDecl</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>     = <a class="code" href="classclang_1_1Sema.html#a48d86d16f21c7156e76e364727e3beea" title="Look up a name, looking for a single declaration. Return null if the results were absent...">LookupSingleName</a>(<a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>, ClassName, ClassLoc, <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa0f401cd356feef42a5d4f95df7a6bf66">LookupOrdinaryName</a>,</div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>                        <a class="code" href="classclang_1_1Sema.html#a91abc8920d6bf0e4dc8c7c21aa821a09a63186acb6716b204ba3cd3b3a778b434" title="The lookup results will be used for redeclaration of a name, if an entity by that name already exists...">ForRedeclaration</a>);</div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>   <span class="keywordflow">if</span> (PrevDecl && !isa<ObjCInterfaceDecl>(PrevDecl)) {</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClassLoc, diag::err_redefinition_different_kind) << ClassName;</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PrevDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_definition);</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((IDecl = dyn_cast_or_null<ObjCInterfaceDecl>(PrevDecl))) {</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>     <a class="code" href="classclang_1_1Sema.html#a4648f07425b7f681fed586a4280957fd" title="Ensure that the type T is a complete type.">RequireCompleteType</a>(ClassLoc, <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#ae498c138a079e26fa0b2ebcb11d9136b">getObjCInterfaceType</a>(IDecl),</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>                         diag::warn_undef_interface);</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>     <span class="comment">// We did not find anything with the name ClassName; try to correct for</span></div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>     <span class="comment">// typos in the class name.</span></div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>     ObjCInterfaceValidatorCCC Validator;</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>     <a class="code" href="classclang_1_1TypoCorrection.html" title="Simple class containing the result of Sema::CorrectTypo.">TypoCorrection</a> Corrected =</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>             <a class="code" href="classclang_1_1Sema.html#a56bda9492c25602dc50508a4170268ef" title="Try to "correct" a typo in the source code by finding visible declarations whose names are similar to...">CorrectTypo</a>(<a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a>(ClassName, ClassLoc),</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>                         <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa0f401cd356feef42a5d4f95df7a6bf66">LookupOrdinaryName</a>, <a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>, <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, Validator);</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>     <span class="keywordflow">if</span> (Corrected.<a class="code" href="classclang_1_1TypoCorrection.html#a274abfa1fb4a6ecb365acc4458842a13">getCorrectionDeclAs</a><<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a>>()) {</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>       <span class="comment">// Suggest the (potentially) correct interface name. Don't provide a</span></div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>       <span class="comment">// code-modification hint or use the typo name for recovery, because</span></div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>       <span class="comment">// this is just a warning. The program may actually be correct.</span></div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>       <a class="code" href="classclang_1_1Sema.html#ac282105147675560aa1344dcf17aeaa0">diagnoseTypo</a>(Corrected,</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>                    <a class="code" href="classclang_1_1Sema.html#ac4e72de7865043558a71912b3bfd8f91" title="Build a partial diagnostic.">PDiag</a>(diag::warn_undef_interface_suggest) << ClassName,</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>                    <span class="comment">/*ErrorRecovery*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClassLoc, diag::warn_undef_interface) << ClassName;</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>     }</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>   }</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> </div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>   <span class="comment">// Check that super class name is valid class name</span></div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a>* SDecl = 0;</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>   <span class="keywordflow">if</span> (SuperClassname) {</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>     <span class="comment">// Check if a different kind of symbol declared in this scope.</span></div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>     PrevDecl = <a class="code" href="classclang_1_1Sema.html#a48d86d16f21c7156e76e364727e3beea" title="Look up a name, looking for a single declaration. Return null if the results were absent...">LookupSingleName</a>(<a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>, SuperClassname, SuperClassLoc,</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>                                 <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa0f401cd356feef42a5d4f95df7a6bf66">LookupOrdinaryName</a>);</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>     <span class="keywordflow">if</span> (PrevDecl && !isa<ObjCInterfaceDecl>(PrevDecl)) {</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SuperClassLoc, diag::err_redefinition_different_kind)</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>         << SuperClassname;</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PrevDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_definition);</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>       SDecl = dyn_cast_or_null<ObjCInterfaceDecl>(PrevDecl);</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>       <span class="keywordflow">if</span> (SDecl && !SDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a2337d6990ec398fa1863459e77183e52" title="Determine whether this class has been defined.">hasDefinition</a>())</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>         SDecl = 0;</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>       <span class="keywordflow">if</span> (!SDecl)</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SuperClassLoc, diag::err_undef_superclass)</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>           << SuperClassname << ClassName;</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IDecl && !<a class="code" href="namespaceclang.html#ad9d926b16adbdbc93705737b69d47cae" title="Determine whether two declarations declare the same entity.">declaresSameEntity</a>(IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a5f23eb5cda9e27622e71382d1dc4b95d">getSuperClass</a>(), SDecl)) {</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>         <span class="comment">// This implementation and its interface do not have the same</span></div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>         <span class="comment">// super class.</span></div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SuperClassLoc, diag::err_conflicting_super_class)</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>           << SDecl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_definition);</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>       }</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>     }</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>   }</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> </div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>   <span class="keywordflow">if</span> (!IDecl) {</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>     <span class="comment">// Legacy case of @implementation with no corresponding @interface.</span></div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>     <span class="comment">// Build, chain & install the interface decl into the identifier.</span></div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> </div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>     <span class="comment">// FIXME: Do we support attributes on the @implementation? If so we should</span></div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>     <span class="comment">// copy them over.</span></div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>     IDecl = <a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a8bad7a98c520f28fdeabb0b88125b3ea">ObjCInterfaceDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>, AtClassImplLoc,</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>                                       ClassName, <span class="comment">/*PrevDecl=*/</span>0, ClassLoc, </div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>                                       <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>     IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#ad425c461c8348a37669a445577f9df8b" title="Starts the definition of this Objective-C class, taking it from a forward declaration (@class) to a d...">startDefinition</a>();</div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>     <span class="keywordflow">if</span> (SDecl) {</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>       IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#aa4d0acc3b201fe2995b33e33137d90ad">setSuperClass</a>(SDecl);</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>       IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a7edf40ac633f5e0be27e3de5b826b564">setSuperClassLoc</a>(SuperClassLoc);</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>       IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#acead904c1afd57da81402785ca47afcd">setEndOfDefinitionLoc</a>(SuperClassLoc);</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>       IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#acead904c1afd57da81402785ca47afcd">setEndOfDefinitionLoc</a>(ClassLoc);</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>     }</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>     </div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>     <a class="code" href="classclang_1_1Sema.html#a45bd7757e01b318e87ae7dc5ea0ce8bf" title="Add this decl to the scope shadowed decl chains.">PushOnScopeChains</a>(IDecl, <a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>);</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>     <span class="comment">// Mark the interface as being completed, even if it was just as</span></div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>     <span class="comment">//   @class ....;</span></div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>     <span class="comment">// declaration; the user cannot reopen it.</span></div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>     <span class="keywordflow">if</span> (!IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a2337d6990ec398fa1863459e77183e52" title="Determine whether this class has been defined.">hasDefinition</a>())</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>       IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#ad425c461c8348a37669a445577f9df8b" title="Starts the definition of this Objective-C class, taking it from a forward declaration (@class) to a d...">startDefinition</a>();</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>   }</div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> </div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>   <a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a>* IMPDecl =</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>     <a class="code" href="classclang_1_1ObjCImplementationDecl.html#a2e88932fc6e13ef36e0d0de30ea56814">ObjCImplementationDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>, IDecl, SDecl,</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>                                    ClassLoc, AtClassImplLoc, SuperClassLoc);</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> </div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#ad7c1d356c40a6768973c91bfceb5f35c">CheckObjCDeclScope</a>(IMPDecl))</div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a5c76a1810ad398e9a828dea254250474">ActOnObjCContainerStartDefinition</a>(IMPDecl);</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> </div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>   <span class="comment">// Check that there is no duplicate implementation of this class.</span></div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>   <span class="keywordflow">if</span> (IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a1f5cbf5895d33b33402a9a8553e39733">getImplementation</a>()) {</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>     <span class="comment">// FIXME: Don't leak everything!</span></div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClassLoc, diag::err_dup_implementation_class) << ClassName;</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a1f5cbf5895d33b33402a9a8553e39733">getImplementation</a>()-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(),</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>          diag::note_previous_definition);</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>     IMPDecl-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>   } <span class="keywordflow">else</span> { <span class="comment">// add it to the list.</span></div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>     IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a6073c881eff0713d97cc90a8c1bc2d9f">setImplementation</a>(IMPDecl);</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>     <a class="code" href="classclang_1_1Sema.html#a45bd7757e01b318e87ae7dc5ea0ce8bf" title="Add this decl to the scope shadowed decl chains.">PushOnScopeChains</a>(IMPDecl, <a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>);</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>     <span class="comment">// Warn on implementating deprecated class under </span></div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>     <span class="comment">// -Wdeprecated-implementations flag.</span></div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>     <a class="code" href="SemaDeclObjC_8cpp.html#a999bc3bbb6fa21ef9d9f75dc5c9e3296">DiagnoseObjCImplementedDeprecations</a>(*<span class="keyword">this</span>, </div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>                                         dyn_cast<NamedDecl>(IDecl), </div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>                                         IMPDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), 1);</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>   }</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a5c76a1810ad398e9a828dea254250474">ActOnObjCContainerStartDefinition</a>(IMPDecl);</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> }</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> <a class="code" href="classclang_1_1OpaquePtr.html" title="Wrapper for void* pointer.">Sema::DeclGroupPtrTy</a></div>
+<div class="line"><a name="l01101"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a0afa21f759041f4b5d440b9f54b007b7"> 1101</a></span> <a class="code" href="classclang_1_1Sema.html#a0afa21f759041f4b5d440b9f54b007b7">Sema::ActOnFinishObjCImplementation</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *ObjCImpDecl, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Decl *></a> Decls) {</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Decl *, 64></a> DeclsInGroup;</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>   DeclsInGroup.reserve(Decls.size() + 1);</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> </div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Decls.size(); i != e; ++i) {</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>     <a class="code" href="classclang_1_1Decl.html">Decl</a> *Dcl = Decls[i];</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>     <span class="keywordflow">if</span> (!Dcl)</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>     <span class="keywordflow">if</span> (Dcl-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>()-><a class="code" href="classclang_1_1DeclContext.html#ac33a346d4e8db5e892aba87393f4e8e4">isFileContext</a>())</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>       Dcl-><a class="code" href="classclang_1_1Decl.html#a50e8918bb8e92d50cd197a8521b93c59">setTopLevelDeclInObjCContainer</a>();</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>     DeclsInGroup.push_back(Dcl);</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>   }</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> </div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>   DeclsInGroup.push_back(ObjCImpDecl);</div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> </div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a4de7a6579723dfee04a4afb5ef0c5a62">BuildDeclaratorGroup</a>(DeclsInGroup, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> }</div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span> </div>
+<div class="line"><a name="l01119"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a5c59068fe594e0b8e24f710aaca3edb5"> 1119</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a5c59068fe594e0b8e24f710aaca3edb5">Sema::CheckImplementationIvars</a>(<a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *ImpDecl,</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>                                     <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> **ivars, <span class="keywordtype">unsigned</span> numIvars,</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>                                     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> RBrace) {</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>   assert(ImpDecl && <span class="stringliteral">"missing implementation decl"</span>);</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a>* IDecl = ImpDecl-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>();</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>   <span class="keywordflow">if</span> (!IDecl)</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>     <span class="keywordflow">return</span>;<span class="comment"></span></div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span> <span class="comment">  /// Check case of non-existing \@interface decl.</span></div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> <span class="comment">  /// (legacy objective-c \@implementation decl without an \@interface decl).</span></div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span> <span class="comment">  /// Add implementations's ivar to the synthesize class's ivar list.</span></div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span> <span class="comment"></span>  <span class="keywordflow">if</span> (IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#ac4932bd44876fc6bbbe6f479dca47cfe">isImplicitInterfaceDecl</a>()) {</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>     IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#acead904c1afd57da81402785ca47afcd">setEndOfDefinitionLoc</a>(RBrace);</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>     <span class="comment">// Add ivar's to class's DeclContext.</span></div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = numIvars; i != e; ++i) {</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>       ivars[i]-><a class="code" href="classclang_1_1Decl.html#ae9774d70804bdaa706bd2ba7c5ccb47f">setLexicalDeclContext</a>(ImpDecl);</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>       IDecl-><a class="code" href="classclang_1_1DeclContext.html#a107cb2ec5172b24089981a4ec66b2197" title="Makes a declaration visible within this context.">makeDeclVisibleInContext</a>(ivars[i]);</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>       ImpDecl-><a class="code" href="classclang_1_1DeclContext.html#a86d2d92d17fbed1a41461bef1ec5cef8" title="Add the declaration D into this context.">addDecl</a>(ivars[i]);</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>     }</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>     </div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>   }</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>   <span class="comment">// If implementation has empty ivar list, just return.</span></div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>   <span class="keywordflow">if</span> (numIvars == 0)</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span> </div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>   assert(ivars && <span class="stringliteral">"missing @implementation ivars"</span>);</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a6da5a25306c679ff309e842bb7ffc394">LangOpts</a>.<a class="code" href="classclang_1_1LangOptions.html#a34a8b84f730051971c84c36daa84dda7">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a5523ca4491b7915e32c02d98a491505e" title="Does this runtime follow the set of implied behaviors for a "non-fragile" ABI?">isNonFragile</a>()) {</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>     <span class="keywordflow">if</span> (ImpDecl-><a class="code" href="classclang_1_1ObjCImplementationDecl.html#a387c88c7bec8777bb64925365eb68ce4">getSuperClass</a>())</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ImpDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_on_superclass_use);</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < numIvars; i++) {</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>       <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a>* ImplIvar = ivars[i];</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ClsIvar = </div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>             IDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ab3501c505b088238eeb3931091b6c7b9">getIvarDecl</a>(ImplIvar-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>())) {</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ImplIvar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_duplicate_ivar_declaration); </div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClsIvar->getLocation(), diag::note_previous_definition);</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>       }</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>       <span class="comment">// Check class extensions (unnamed categories) for duplicate ivars.</span></div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl_1_1filtered__category__iterator.html" title="Iterator that walks over the list of categories, filtering out those that do not meet specific criter...">ObjCInterfaceDecl::visible_extensions_iterator</a></div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>            Ext = IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#aef7d95d63e8c4e1968367ad973584629" title="Retrieve an iterator to the beginning of the visible-extensions list.">visible_extensions_begin</a>(),</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>            ExtEnd = IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#ad3b4d030b6c3cf8e5e426681f8f29aad" title="Retrieve an iterator to the end of the visible-extensions list.">visible_extensions_end</a>();</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>          Ext != ExtEnd; ++Ext) {</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>         <a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *CDecl = *Ext;</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>         <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a> *ClsExtIvar = </div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>             CDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ab3501c505b088238eeb3931091b6c7b9">getIvarDecl</a>(ImplIvar-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>())) {</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ImplIvar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_duplicate_ivar_declaration); </div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClsExtIvar->getLocation(), diag::note_previous_definition);</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>           <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>         }</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>       }</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>       <span class="comment">// Instance ivar to Implementation's DeclContext.</span></div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>       ImplIvar-><a class="code" href="classclang_1_1Decl.html#ae9774d70804bdaa706bd2ba7c5ccb47f">setLexicalDeclContext</a>(ImpDecl);</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>       IDecl-><a class="code" href="classclang_1_1DeclContext.html#a107cb2ec5172b24089981a4ec66b2197" title="Makes a declaration visible within this context.">makeDeclVisibleInContext</a>(ImplIvar);</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>       ImpDecl-><a class="code" href="classclang_1_1DeclContext.html#a86d2d92d17fbed1a41461bef1ec5cef8" title="Add the declaration D into this context.">addDecl</a>(ImplIvar);</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>     }</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>   }</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>   <span class="comment">// Check interface's Ivar list against those in the implementation.</span></div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>   <span class="comment">// names and types must match.</span></div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>   <span class="comment">//</span></div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>   <span class="keywordtype">unsigned</span> j = 0;</div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>   <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">ObjCInterfaceDecl::ivar_iterator</a></div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>     IVI = IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a4b61df735b3d6609f7d1c1a895a23ec4">ivar_begin</a>(), IVE = IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#aef3374a41feb65037fd39f6e9f3cdf2b">ivar_end</a>();</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>   <span class="keywordflow">for</span> (; numIvars > 0 && IVI != IVE; ++IVI) {</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>     <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a>* ImplIvar = ivars[j++];</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>     <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a>* ClsIvar = *IVI;</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>     assert (ImplIvar && <span class="stringliteral">"missing implementation ivar"</span>);</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>     assert (ClsIvar && <span class="stringliteral">"missing class ivar"</span>);</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span> </div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>     <span class="comment">// First, make sure the types match.</span></div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a889b9d309fdc236f1eab037484f10f8a" title="Determine whether the given types T1 and T2 are equivalent.">hasSameType</a>(ImplIvar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(), ClsIvar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>())) {</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ImplIvar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_conflicting_ivar_type)</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>         << ImplIvar-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()</div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>         << ImplIvar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>() << ClsIvar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClsIvar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_definition);</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ImplIvar-><a class="code" href="classclang_1_1FieldDecl.html#af8c123e193d426f26496c15e2f168a49" title="isBitfield - Determines whether this field is a bitfield.">isBitField</a>() && ClsIvar-><a class="code" href="classclang_1_1FieldDecl.html#af8c123e193d426f26496c15e2f168a49" title="isBitfield - Determines whether this field is a bitfield.">isBitField</a>() &&</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>                ImplIvar-><a class="code" href="classclang_1_1FieldDecl.html#ae5e97c5f219d8bd73934ef38453ae44a">getBitWidthValue</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>) !=</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>                ClsIvar-><a class="code" href="classclang_1_1FieldDecl.html#ae5e97c5f219d8bd73934ef38453ae44a">getBitWidthValue</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>)) {</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ImplIvar-><a class="code" href="classclang_1_1FieldDecl.html#aa440216ac6adbdd2044ca91c9f31386f">getBitWidth</a>()-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>            diag::err_conflicting_ivar_bitwidth) << ImplIvar-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>();</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClsIvar-><a class="code" href="classclang_1_1FieldDecl.html#aa440216ac6adbdd2044ca91c9f31386f">getBitWidth</a>()-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(),</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>            diag::note_previous_definition);</div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>     }</div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>     <span class="comment">// Make sure the names are identical.</span></div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>     <span class="keywordflow">if</span> (ImplIvar-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>() != ClsIvar-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()) {</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ImplIvar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_conflicting_ivar_name)</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>         << ImplIvar-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>() << ClsIvar-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>();</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ClsIvar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_definition);</div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>     }</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>     --numIvars;</div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>   }</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> </div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>   <span class="keywordflow">if</span> (numIvars > 0)</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ivars[j]->getLocation(), diag::err_inconsistant_ivar_count);</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IVI != IVE)</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IVI->getLocation(), diag::err_inconsistant_ivar_count);</div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> }</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> </div>
+<div class="line"><a name="l01217"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a0df2f64749ca7acf2ae15f3908e1e988"> 1217</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a0df2f64749ca7acf2ae15f3908e1e988">Sema::WarnUndefinedMethod</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ImpLoc, <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *method,</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>                                <span class="keywordtype">bool</span> &IncompleteImpl, <span class="keywordtype">unsigned</span> DiagID) {</div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>   <span class="comment">// No point warning no definition of method which is 'unavailable'.</span></div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>   <span class="keywordflow">switch</span> (method-><a class="code" href="classclang_1_1Decl.html#a59880f2930b89626b5061e060e80fbdf" title="Determine the availability of the given declaration.">getAvailability</a>()) {</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307bace746046eb5289be6dc810e4533aa7d1">AR_Available</a>:</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307bad487c04bb68ba53ac91ce482697f2bd3">AR_Deprecated</a>:</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span> </div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>       <span class="comment">// Don't warn about unavailable or not-yet-introduced methods.</span></div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307ba6adbf64b058d62d712217f83c85d31b8">AR_NotYetIntroduced</a>:</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307baef5f77edb8ed586e5256a1f644667657">AR_Unavailable</a>:</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>   }</div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>   </div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>   <span class="comment">// FIXME: For now ignore 'IncompleteImpl'.</span></div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>   <span class="comment">// Previously we grouped all unimplemented methods under a single</span></div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>   <span class="comment">// warning, but some users strongly voiced that they would prefer</span></div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>   <span class="comment">// separate warnings.  We will give that approach a try, as that</span></div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>   <span class="comment">// matches what we do with protocols.</span></div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>   </div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>   <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ImpLoc, DiagID) << method-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> </div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>   <span class="comment">// Issue a note to the original declaration.</span></div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> MethodLoc = method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#ae05fc39cf093817b3b2ce044686703fb">getLocStart</a>();</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>   <span class="keywordflow">if</span> (MethodLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>())</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(MethodLoc, diag::note_method_declared_at) << method;</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> }</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> <span class="comment"></span></div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span> <span class="comment">/// Determines if type B can be substituted for type A.  Returns true if we can</span></div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span> <span class="comment">/// guarantee that anything that the user will do to an object of type A can </span></div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> <span class="comment">/// also be done to an object of type B.  This is trivially true if the two </span></div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> <span class="comment">/// types are the same, or if B is a subclass of A.  It becomes more complex</span></div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> <span class="comment">/// in cases where protocols are involved.</span></div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> <span class="comment">/// Object types in Objective-C describe the minimum requirements for an</span></div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> <span class="comment">/// object, rather than providing a complete description of a type.  For</span></div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> <span class="comment">/// example, if A is a subclass of B, then B* may refer to an instance of A.</span></div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> <span class="comment">/// The principle of substitutability means that we may use an instance of A</span></div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> <span class="comment">/// anywhere that we may use an instance of B - it will implement all of the</span></div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span> <span class="comment">/// ivars of B and all of the methods of B.  </span></div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span> <span class="comment">/// This substitutability is important when type checking methods, because </span></div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span> <span class="comment">/// the implementation may have stricter type definitions than the interface.</span></div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span> <span class="comment">/// The interface specifies minimum requirements, but the implementation may</span></div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> <span class="comment">/// have more accurate ones.  For example, a method may privately accept </span></div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span> <span class="comment">/// instances of B, but only publish that it accepts instances of A.  Any</span></div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span> <span class="comment">/// object passed to it will be type checked against B, and so will implicitly</span></div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span> <span class="comment">/// by a valid A*.  Similarly, a method may return a subclass of the class that</span></div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> <span class="comment">/// it is declared as returning.</span></div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span> <span class="comment">/// This is most important when considering subclassing.  A method in a</span></div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> <span class="comment">/// subclass must accept any object as an argument that its superclass's</span></div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> <span class="comment">/// implementation accepts.  It may, however, accept a more general type</span></div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> <span class="comment">/// without breaking substitutability (i.e. you can still use the subclass</span></div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> <span class="comment">/// anywhere that you can use the superclass, but not vice versa).  The</span></div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> <span class="comment">/// converse requirement applies to return types: the return type for a</span></div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span> <span class="comment">/// subclass method must be a valid object of the kind that the superclass</span></div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span> <span class="comment">/// advertises, but it may be specified more accurately.  This avoids the need</span></div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span> <span class="comment">/// for explicit down-casting by callers.</span></div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> <span class="comment">/// Note: This is a stricter requirement than for assignment.  </span></div>
+<div class="line"><a name="l01278"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#aab9eb257782bb49894c958fcde670086"> 1278</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaDeclObjC_8cpp.html#aab9eb257782bb49894c958fcde670086">isObjCTypeSubstitutable</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>,</div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>                                     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a> *A,</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>                                     <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a> *B,</div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>                                     <span class="keywordtype">bool</span> rejectId) {</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>   <span class="comment">// Reject a protocol-unqualified id.</span></div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>   <span class="keywordflow">if</span> (rejectId && B-><a class="code" href="classclang_1_1ObjCObjectPointerType.html#ac4ed4d1ecf9acc17f5d2b9b7ff15f1cb">isObjCIdType</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> </div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>   <span class="comment">// If B is a qualified id, then A must also be a qualified id and it must</span></div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>   <span class="comment">// implement all of the protocols in B.  It may not be a qualified class.</span></div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>   <span class="comment">// For example, MyClass<A> can be assigned to id<A>, but MyClass<A> is a</span></div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>   <span class="comment">// stricter definition so it is not substitutable for id<A>.</span></div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>   <span class="keywordflow">if</span> (B-><a class="code" href="classclang_1_1ObjCObjectPointerType.html#a9eecbeb840ef364b0d58a59c417760e8">isObjCQualifiedIdType</a>()) {</div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>     <span class="keywordflow">return</span> A-><a class="code" href="classclang_1_1ObjCObjectPointerType.html#a9eecbeb840ef364b0d58a59c417760e8">isObjCQualifiedIdType</a>() &&</div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>            Context.<a class="code" href="classclang_1_1ASTContext.html#a39a62e3156e847ba155ece639dabdd5b">ObjCQualifiedIdTypesAreCompatible</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a>(A, 0),</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>                                                      <a class="code" href="classclang_1_1QualType.html">QualType</a>(B,0),</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>                                                      <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>   }</div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> </div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>   <span class="comment">/*</span></div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span> <span class="comment">  // id is a special type that bypasses type checking completely.  We want a</span></div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span> <span class="comment">  // warning when it is used in one place but not another.</span></div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span> <span class="comment">  if (C.isObjCIdType(A) || C.isObjCIdType(B)) return false;</span></div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span> <span class="comment"></span></div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span> <span class="comment"></span></div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> <span class="comment">  // If B is a qualified id, then A must also be a qualified id (which it isn't</span></div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span> <span class="comment">  // if we've got this far)</span></div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> <span class="comment">  if (B->isObjCQualifiedIdType()) return false;</span></div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span> <span class="comment">  */</span></div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span> </div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>   <span class="comment">// Now we know that A and B are (potentially-qualified) class types.  The</span></div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>   <span class="comment">// normal rules for assignment apply.</span></div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>   <span class="keywordflow">return</span> Context.<a class="code" href="classclang_1_1ASTContext.html#a4819d803b6726ac10837782702426ef6">canAssignObjCInterfaces</a>(A, B);</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span> }</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span> </div>
+<div class="line"><a name="l01312"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#a35c62b90c8d55cbdf5d6d5b47697d0ff"> 1312</a></span> <span class="keyword">static</span> <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> <a class="code" href="SemaDeclObjC_8cpp.html#a35c62b90c8d55cbdf5d6d5b47697d0ff">getTypeRange</a>(<a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TSI) {</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>   <span class="keywordflow">return</span> (TSI ? TSI-><a class="code" href="classclang_1_1TypeSourceInfo.html#a51bc61879d5926193a3bb3ee1a280fee" title="Return the TypeLoc wrapper for the type source info.">getTypeLoc</a>().<a class="code" href="classclang_1_1TypeLoc.html#a71e89c2f08f25388d41eb39d0fe77462" title="Get the full source range.">getSourceRange</a>() : <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>());</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> }</div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> </div>
+<div class="line"><a name="l01316"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#a44470b0311e10a73c64bafe7f6f3a074"> 1316</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaDeclObjC_8cpp.html#a44470b0311e10a73c64bafe7f6f3a074">CheckMethodOverrideReturn</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>,</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>                                       <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MethodImpl,</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>                                       <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MethodDecl,</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>                                       <span class="keywordtype">bool</span> IsProtocolMethodDecl,</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>                                       <span class="keywordtype">bool</span> IsOverridingMode,</div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>                                       <span class="keywordtype">bool</span> Warn) {</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>   <span class="keywordflow">if</span> (IsProtocolMethodDecl &&</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>       (MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6ea0fac24b767f9d95b474a250b9d8b9">getObjCDeclQualifier</a>() !=</div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>        MethodImpl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6ea0fac24b767f9d95b474a250b9d8b9">getObjCDeclQualifier</a>())) {</div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>     <span class="keywordflow">if</span> (Warn) {</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>         S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(MethodImpl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), </div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>                (IsOverridingMode ? </div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>                  diag::warn_conflicting_overriding_ret_type_modifiers </div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>                  : diag::warn_conflicting_ret_type_modifiers))</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>           << MethodImpl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>()</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>           << <a class="code" href="SemaDeclObjC_8cpp.html#a35c62b90c8d55cbdf5d6d5b47697d0ff">getTypeRange</a>(MethodImpl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a1abdb658ad45f7f8e51b3ee5a7a6145a">getResultTypeSourceInfo</a>());</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>         S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(MethodDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_declaration)</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>           << <a class="code" href="SemaDeclObjC_8cpp.html#a35c62b90c8d55cbdf5d6d5b47697d0ff">getTypeRange</a>(MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a1abdb658ad45f7f8e51b3ee5a7a6145a">getResultTypeSourceInfo</a>());</div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>     }</div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>   }</div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>   </div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>   <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a40efa7d4fe133c0a709f0df4b6fcc2bf" title="Determine whether the given types are equivalent after cvr-qualifiers have been removed.">hasSameUnqualifiedType</a>(MethodImpl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>(),</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>                                        MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>()))</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>   <span class="keywordflow">if</span> (!Warn)</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> </div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>   <span class="keywordtype">unsigned</span> DiagID = </div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>     IsOverridingMode ? diag::warn_conflicting_overriding_ret_types </div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>                      : diag::warn_conflicting_ret_types;</div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span> </div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>   <span class="comment">// Mismatches between ObjC pointers go into a different warning</span></div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>   <span class="comment">// category, and sometimes they're even completely whitelisted.</span></div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a> *ImplPtrTy =</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>         MethodImpl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>()) {</div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a> *IfacePtrTy =</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>           MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>()) {</div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>       <span class="comment">// Allow non-matching return types as long as they don't violate</span></div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>       <span class="comment">// the principle of substitutability.  Specifically, we permit</span></div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>       <span class="comment">// return types that are subclasses of the declared return type,</span></div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>       <span class="comment">// or that are more-qualified versions of the declared type.</span></div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>       <span class="keywordflow">if</span> (<a class="code" href="SemaDeclObjC_8cpp.html#aab9eb257782bb49894c958fcde670086">isObjCTypeSubstitutable</a>(S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, IfacePtrTy, ImplPtrTy, <span class="keyword">false</span>))</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span> </div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>       DiagID = </div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>         IsOverridingMode ? diag::warn_non_covariant_overriding_ret_types </div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>                           : diag::warn_non_covariant_ret_types;</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>     }</div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>   }</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> </div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>   S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(MethodImpl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), DiagID)</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>     << MethodImpl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>()</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>     << MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>()</div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>     << MethodImpl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>()</div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>     << <a class="code" href="SemaDeclObjC_8cpp.html#a35c62b90c8d55cbdf5d6d5b47697d0ff">getTypeRange</a>(MethodImpl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a1abdb658ad45f7f8e51b3ee5a7a6145a">getResultTypeSourceInfo</a>());</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>   S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(MethodDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), </div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>          IsOverridingMode ? diag::note_previous_declaration </div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>                           : diag::note_previous_definition)</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>     << <a class="code" href="SemaDeclObjC_8cpp.html#a35c62b90c8d55cbdf5d6d5b47697d0ff">getTypeRange</a>(MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a1abdb658ad45f7f8e51b3ee5a7a6145a">getResultTypeSourceInfo</a>());</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span> }</div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span> </div>
+<div class="line"><a name="l01380"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#a2bcc2b098f082329484a343a4471d76c"> 1380</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaDeclObjC_8cpp.html#a2bcc2b098f082329484a343a4471d76c">CheckMethodOverrideParam</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>,</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>                                      <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MethodImpl,</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>                                      <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MethodDecl,</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>                                      <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *ImplVar,</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>                                      <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *IfaceVar,</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>                                      <span class="keywordtype">bool</span> IsProtocolMethodDecl,</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>                                      <span class="keywordtype">bool</span> IsOverridingMode,</div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>                                      <span class="keywordtype">bool</span> Warn) {</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>   <span class="keywordflow">if</span> (IsProtocolMethodDecl &&</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>       (ImplVar-><a class="code" href="classclang_1_1ParmVarDecl.html#a84fd067629178df74043b1289ffd4d16">getObjCDeclQualifier</a>() !=</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>        IfaceVar-><a class="code" href="classclang_1_1ParmVarDecl.html#a84fd067629178df74043b1289ffd4d16">getObjCDeclQualifier</a>())) {</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>     <span class="keywordflow">if</span> (Warn) {</div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>       <span class="keywordflow">if</span> (IsOverridingMode)</div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>         S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ImplVar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), </div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>                diag::warn_conflicting_overriding_param_modifiers)</div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>             << <a class="code" href="SemaDeclObjC_8cpp.html#a35c62b90c8d55cbdf5d6d5b47697d0ff">getTypeRange</a>(ImplVar-><a class="code" href="classclang_1_1DeclaratorDecl.html#aa7d515eb57658519d6607f3ade08285f">getTypeSourceInfo</a>())</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>             << MethodImpl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>       <span class="keywordflow">else</span> S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ImplVar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), </div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>              diag::warn_conflicting_param_modifiers)</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>           << <a class="code" href="SemaDeclObjC_8cpp.html#a35c62b90c8d55cbdf5d6d5b47697d0ff">getTypeRange</a>(ImplVar-><a class="code" href="classclang_1_1DeclaratorDecl.html#aa7d515eb57658519d6607f3ade08285f">getTypeSourceInfo</a>())</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>           << MethodImpl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>       S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IfaceVar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_declaration)</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>           << <a class="code" href="SemaDeclObjC_8cpp.html#a35c62b90c8d55cbdf5d6d5b47697d0ff">getTypeRange</a>(IfaceVar-><a class="code" href="classclang_1_1DeclaratorDecl.html#aa7d515eb57658519d6607f3ade08285f">getTypeSourceInfo</a>());   </div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>     }</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>   }</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>       </div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ImplTy = ImplVar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> IfaceTy = IfaceVar-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>   </div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>   <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a40efa7d4fe133c0a709f0df4b6fcc2bf" title="Determine whether the given types are equivalent after cvr-qualifiers have been removed.">hasSameUnqualifiedType</a>(ImplTy, IfaceTy))</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>   </div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>   <span class="keywordflow">if</span> (!Warn)</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>   <span class="keywordtype">unsigned</span> DiagID = </div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>     IsOverridingMode ? diag::warn_conflicting_overriding_param_types </div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>                      : diag::warn_conflicting_param_types;</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span> </div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>   <span class="comment">// Mismatches between ObjC pointers go into a different warning</span></div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>   <span class="comment">// category, and sometimes they're even completely whitelisted.</span></div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a> *ImplPtrTy =</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>         ImplTy-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>()) {</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a> *IfacePtrTy =</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>           IfaceTy-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>()) {</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>       <span class="comment">// Allow non-matching argument types as long as they don't</span></div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>       <span class="comment">// violate the principle of substitutability.  Specifically, the</span></div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>       <span class="comment">// implementation must accept any objects that the superclass</span></div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>       <span class="comment">// accepts, however it may also accept others.</span></div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>       <span class="keywordflow">if</span> (<a class="code" href="SemaDeclObjC_8cpp.html#aab9eb257782bb49894c958fcde670086">isObjCTypeSubstitutable</a>(S.<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, ImplPtrTy, IfacePtrTy, <span class="keyword">true</span>))</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>         <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> </div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>       DiagID = </div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>       IsOverridingMode ? diag::warn_non_contravariant_overriding_param_types </div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>                        :  diag::warn_non_contravariant_param_types;</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>     }</div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>   }</div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span> </div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>   S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ImplVar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), DiagID)</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>     << <a class="code" href="SemaDeclObjC_8cpp.html#a35c62b90c8d55cbdf5d6d5b47697d0ff">getTypeRange</a>(ImplVar-><a class="code" href="classclang_1_1DeclaratorDecl.html#aa7d515eb57658519d6607f3ade08285f">getTypeSourceInfo</a>())</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>     << MethodImpl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>() << IfaceTy << ImplTy;</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>   S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IfaceVar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), </div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>          (IsOverridingMode ? diag::note_previous_declaration </div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>                         : diag::note_previous_definition))</div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>     << <a class="code" href="SemaDeclObjC_8cpp.html#a35c62b90c8d55cbdf5d6d5b47697d0ff">getTypeRange</a>(IfaceVar-><a class="code" href="classclang_1_1DeclaratorDecl.html#aa7d515eb57658519d6607f3ade08285f">getTypeSourceInfo</a>());</div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span> }</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span> <span class="comment"></span></div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> <span class="comment">/// In ARC, check whether the conventional meanings of the two methods</span></div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> <span class="comment">/// match.  If they don't, it's a hard error.</span></div>
+<div class="line"><a name="l01451"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#aef167e6de80b03362cd9f170b77cfe54"> 1451</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaDeclObjC_8cpp.html#aef167e6de80b03362cd9f170b77cfe54">checkMethodFamilyMismatch</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *impl,</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>                                       <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a7e0add38d4eff7a20684fcba24be8887" title="Matches declarations.">decl</a>) {</div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>   <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140" title="A family of Objective-C methods.">ObjCMethodFamily</a> implFamily = impl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a797418dad629dd1538fd9ebaa6daa1f1" title="Determines the family of this method.">getMethodFamily</a>();</div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>   <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140" title="A family of Objective-C methods.">ObjCMethodFamily</a> declFamily = decl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a797418dad629dd1538fd9ebaa6daa1f1" title="Determines the family of this method.">getMethodFamily</a>();</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>   <span class="keywordflow">if</span> (implFamily == declFamily) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span> </div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>   <span class="comment">// Since conventions are sorted by selector, the only possibility is</span></div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>   <span class="comment">// that the types differ enough to cause one selector or the other</span></div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>   <span class="comment">// to fall out of the family.</span></div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>   assert(implFamily == <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a5f62fe9ffed043a6852d5e4019147244" title="No particular method family.">OMF_None</a> || declFamily == <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a5f62fe9ffed043a6852d5e4019147244" title="No particular method family.">OMF_None</a>);</div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> </div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>   <span class="comment">// No further diagnostics required on invalid declarations.</span></div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>   <span class="keywordflow">if</span> (impl-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>() || decl-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>()) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> </div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *unmatched = impl;</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>   <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140" title="A family of Objective-C methods.">ObjCMethodFamily</a> family = declFamily;</div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>   <span class="keywordtype">unsigned</span> errorID = diag::err_arc_lost_method_convention;</div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>   <span class="keywordtype">unsigned</span> noteID = diag::note_arc_lost_method_convention;</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>   <span class="keywordflow">if</span> (declFamily == <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a5f62fe9ffed043a6852d5e4019147244" title="No particular method family.">OMF_None</a>) {</div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>     unmatched = <a class="code" href="namespaceclang_1_1ast__matchers.html#a7e0add38d4eff7a20684fcba24be8887" title="Matches declarations.">decl</a>;</div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>     family = implFamily;</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>     errorID = diag::err_arc_gained_method_convention;</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>     noteID = diag::note_arc_gained_method_convention;</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>   }</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> </div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>   <span class="comment">// Indexes into a %select clause in the diagnostic.</span></div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>   <span class="keyword">enum</span> FamilySelector {</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>     F_alloc, F_copy, F_mutableCopy = F_copy, F_init, F_new</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>   };</div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>   FamilySelector familySelector = FamilySelector();</div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> </div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>   <span class="keywordflow">switch</span> (family) {</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a5f62fe9ffed043a6852d5e4019147244" title="No particular method family.">OMF_None</a>: llvm_unreachable(<span class="stringliteral">"logic error, no method convention"</span>);</div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140ae86182746e5f440a137ab74935cfc6f3">OMF_retain</a>:</div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a7e220cb728054440402011e61c42426d">OMF_release</a>:</div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a2b78c8dee03c81f201d7fd438470b5d4">OMF_autorelease</a>:</div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a64eaf6dd57d06411366a75201a9f2850">OMF_dealloc</a>:</div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a5722533aab245d187223d468bc37f736">OMF_finalize</a>:</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140ab33e5b4cd97daae64b0409a18449ace4">OMF_retainCount</a>:</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a3827e55785e22a2eeeb95809863714ae">OMF_self</a>:</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a5774b271952ff64e13807e5df139b183">OMF_performSelector</a>:</div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>     <span class="comment">// Mismatches for these methods don't change ownership</span></div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>     <span class="comment">// conventions, so we don't care.</span></div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span> </div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a7749fb8107514089095277752fe75ece">OMF_init</a>: familySelector = F_init; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140aa2506f3f3aa110c8634c520cac188850">OMF_alloc</a>: familySelector = F_alloc; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140ae5e7e02afb30e2fd7e5454b4f98678ef">OMF_copy</a>: familySelector = F_copy; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140a3051bdd94642c1f656e86cb06914f9cf">OMF_mutableCopy</a>: familySelector = F_mutableCopy; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a5dc786a6640e4d510cd8b68a5a87a140add0d96887fd8a747f93910ca08eb466c">OMF_new</a>: familySelector = F_new; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>   }</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span> </div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>   <span class="keyword">enum</span> ReasonSelector { R_NonObjectReturn, R_UnrelatedReturn };</div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>   ReasonSelector reasonSelector;</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span> </div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>   <span class="comment">// The only reason these methods don't fall within their families is</span></div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>   <span class="comment">// due to unusual result types.</span></div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>   <span class="keywordflow">if</span> (unmatched-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>()-><a class="code" href="classclang_1_1Type.html#aa9be9c3ceec53da8edbbb86bbf895fff">isObjCObjectPointerType</a>()) {</div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>     reasonSelector = R_UnrelatedReturn;</div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>     reasonSelector = R_NonObjectReturn;</div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>   }</div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span> </div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>   S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(impl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), errorID) << <span class="keywordtype">int</span>(familySelector) << int(reasonSelector);</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>   S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(decl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), noteID) << <span class="keywordtype">int</span>(familySelector) << int(reasonSelector);</div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span> </div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span> }</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span> </div>
+<div class="line"><a name="l01520"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#aa92c540d0e3d04d1d4e9ad99cbaf22b8"> 1520</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#aa92c540d0e3d04d1d4e9ad99cbaf22b8">Sema::WarnConflictingTypedMethods</a>(<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *ImpMethodDecl,</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>                                        <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MethodDecl,</div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>                                        <span class="keywordtype">bool</span> IsProtocolMethodDecl) {</div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>       <a class="code" href="SemaDeclObjC_8cpp.html#aef167e6de80b03362cd9f170b77cfe54">checkMethodFamilyMismatch</a>(*<span class="keyword">this</span>, ImpMethodDecl, MethodDecl))</div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span> </div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>   <a class="code" href="SemaDeclObjC_8cpp.html#a44470b0311e10a73c64bafe7f6f3a074">CheckMethodOverrideReturn</a>(*<span class="keyword">this</span>, ImpMethodDecl, MethodDecl, </div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>                             IsProtocolMethodDecl, <span class="keyword">false</span>, </div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>                             <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> </div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCMethodDecl.html#abbba9916294190611d98ec23edcf6bef">ObjCMethodDecl::param_iterator</a> IM = ImpMethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>(),</div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>        IF = MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>(), EM = ImpMethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>(),</div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>        EF = MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>();</div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>        IM != EM && IF != EF; ++IM, ++IF) {</div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>     <a class="code" href="SemaDeclObjC_8cpp.html#a2bcc2b098f082329484a343a4471d76c">CheckMethodOverrideParam</a>(*<span class="keyword">this</span>, ImpMethodDecl, MethodDecl, *IM, *IF,</div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>                              IsProtocolMethodDecl, <span class="keyword">false</span>, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>   }</div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span> </div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>   <span class="keywordflow">if</span> (ImpMethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#af47b19dc4279f1cf2572ca1a0a8d730e">isVariadic</a>() != MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#af47b19dc4279f1cf2572ca1a0a8d730e">isVariadic</a>()) {</div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ImpMethodDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), </div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>          diag::warn_conflicting_variadic);</div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(MethodDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_declaration);</div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>   }</div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span> }</div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span> </div>
+<div class="line"><a name="l01546"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a178a3ec1da6d16bf2a66b55f6e5e142f"> 1546</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a178a3ec1da6d16bf2a66b55f6e5e142f">Sema::CheckConflictingOverridingMethod</a>(<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Method,</div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>                                        <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Overridden,</div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>                                        <span class="keywordtype">bool</span> IsProtocolMethodDecl) {</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>   </div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>   <a class="code" href="SemaDeclObjC_8cpp.html#a44470b0311e10a73c64bafe7f6f3a074">CheckMethodOverrideReturn</a>(*<span class="keyword">this</span>, Method, Overridden, </div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>                             IsProtocolMethodDecl, <span class="keyword">true</span>, </div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>                             <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>   </div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCMethodDecl.html#abbba9916294190611d98ec23edcf6bef">ObjCMethodDecl::param_iterator</a> IM = Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>(),</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>        IF = Overridden-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>(), EM = Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>(),</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>        EF = Overridden-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>();</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>        IM != EM && IF != EF; ++IM, ++IF) {</div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>     <a class="code" href="SemaDeclObjC_8cpp.html#a2bcc2b098f082329484a343a4471d76c">CheckMethodOverrideParam</a>(*<span class="keyword">this</span>, Method, Overridden, *IM, *IF,</div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>                              IsProtocolMethodDecl, <span class="keyword">true</span>, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>   }</div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>   </div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>   <span class="keywordflow">if</span> (Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#af47b19dc4279f1cf2572ca1a0a8d730e">isVariadic</a>() != Overridden-><a class="code" href="classclang_1_1ObjCMethodDecl.html#af47b19dc4279f1cf2572ca1a0a8d730e">isVariadic</a>()) {</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Method-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), </div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>          diag::warn_conflicting_overriding_variadic);</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Overridden-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_declaration);</div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>   }</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span> }</div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span> <span class="comment"></span></div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span> <span class="comment">/// WarnExactTypedMethods - This routine issues a warning if method</span></div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span> <span class="comment">/// implementation declaration matches exactly that of its declaration.</span></div>
+<div class="line"><a name="l01571"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a2cc40e9fe24bb64cce6d710dec80e766"> 1571</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a2cc40e9fe24bb64cce6d710dec80e766">Sema::WarnExactTypedMethods</a>(<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *ImpMethodDecl,</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>                                  <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MethodDecl,</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>                                  <span class="keywordtype">bool</span> IsProtocolMethodDecl) {</div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>   <span class="comment">// don't issue warning when protocol method is optional because primary</span></div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>   <span class="comment">// class is not required to implement it and it is safe for protocol</span></div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>   <span class="comment">// to implement it.</span></div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>   <span class="keywordflow">if</span> (MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a3d490a2f2f823221b9184dcdaad43f8c">getImplementationControl</a>() == <a class="code" href="classclang_1_1ObjCMethodDecl.html#a542f187aaa0c0781b19ead8e71198abea8a74fa475f05f920a949240fdc03a24e">ObjCMethodDecl::Optional</a>)</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>   <span class="comment">// don't issue warning when primary class's method is </span></div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>   <span class="comment">// depecated/unavailable.</span></div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>   <span class="keywordflow">if</span> (MethodDecl-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1UnavailableAttr.html">UnavailableAttr</a>>() ||</div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>       MethodDecl-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1DeprecatedAttr.html">DeprecatedAttr</a>>())</div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>   </div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>   <span class="keywordtype">bool</span> <a class="code" href="namespaceclang_1_1ast__matchers.html#a58409ce605d979d1d1e0a600ec417a0a" title="Returns the results of matching Matcher on Node.">match</a> = <a class="code" href="SemaDeclObjC_8cpp.html#a44470b0311e10a73c64bafe7f6f3a074">CheckMethodOverrideReturn</a>(*<span class="keyword">this</span>, ImpMethodDecl, MethodDecl, </div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>                                       IsProtocolMethodDecl, <span class="keyword">false</span>, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>   <span class="keywordflow">if</span> (match)</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCMethodDecl.html#abbba9916294190611d98ec23edcf6bef">ObjCMethodDecl::param_iterator</a> IM = ImpMethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>(),</div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>          IF = MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>(), EM = ImpMethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>(),</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>          EF = MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>();</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>          IM != EM && IF != EF; ++IM, ++IF) {</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>       match = <a class="code" href="SemaDeclObjC_8cpp.html#a2bcc2b098f082329484a343a4471d76c">CheckMethodOverrideParam</a>(*<span class="keyword">this</span>, ImpMethodDecl, MethodDecl, </div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>                                        *IM, *IF,</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>                                        IsProtocolMethodDecl, <span class="keyword">false</span>, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>       <span class="keywordflow">if</span> (!match)</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>     }</div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>   <span class="keywordflow">if</span> (match)</div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>     match = (ImpMethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#af47b19dc4279f1cf2572ca1a0a8d730e">isVariadic</a>() == MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#af47b19dc4279f1cf2572ca1a0a8d730e">isVariadic</a>());</div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>   <span class="keywordflow">if</span> (match)</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>     match = !(MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa8cc27a94f7b64eee3cc0661304d4295">isClassMethod</a>() &&</div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>               MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>() == <a class="code" href="namespaceclang.html#a2a239358dba4d59740ad4a772f0b2c58" title="Utility function for constructing a nullary selector.">GetNullarySelector</a>(<span class="stringliteral">"load"</span>, <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>));</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>   </div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>   <span class="keywordflow">if</span> (match) {</div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(ImpMethodDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), </div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>          diag::warn_category_method_impl_match);</div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(MethodDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_method_declared_at)</div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>       << MethodDecl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>   }</div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span> }</div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span> <span class="comment"></span></div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span> <span class="comment">/// FIXME: Type hierarchies in Objective-C can be deep. We could most likely</span></div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span> <span class="comment">/// improve the efficiency of selector lookups and type checking by associating</span></div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span> <span class="comment">/// with each protocol / interface / category the flattened instance tables. If</span></div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span> <span class="comment">/// we used an immutable set to keep the table then it wouldn't add significant</span></div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span> <span class="comment">/// memory cost and it would be handy for lookups.</span></div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span> <span class="comment"></span><span class="comment"></span></div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span> <span class="comment">/// CheckProtocolMethodDefs - This routine checks unimplemented methods</span></div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span> <span class="comment">/// Declared in protocol, and those referenced by it.</span></div>
+<div class="line"><a name="l01620"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#af386fdbfe82dc9517775275ee346a61c"> 1620</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#af386fdbfe82dc9517775275ee346a61c">Sema::CheckProtocolMethodDefs</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ImpLoc,</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>                                    <a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *PDecl,</div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>                                    <span class="keywordtype">bool</span>& IncompleteImpl,</div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1Sema.html#ad5485d7df223532c95e9e086e47e51f0">SelectorSet</a> &InsMap,</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1Sema.html#ad5485d7df223532c95e9e086e47e51f0">SelectorSet</a> &ClsMap,</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>                                    <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *CDecl) {</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>   <a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *C = dyn_cast<<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a>>(CDecl);</div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IDecl = C ? C-><a class="code" href="classclang_1_1ObjCCategoryDecl.html#acdb14eeca277cfa745a4e8e842312008">getClassInterface</a>() </div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>                                : dyn_cast<<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a>>(CDecl);</div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>   assert (IDecl && <span class="stringliteral">"CheckProtocolMethodDefs - IDecl is null"</span>);</div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>   </div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *Super = IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a5f23eb5cda9e27622e71382d1dc4b95d">getSuperClass</a>();</div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *NSIDecl = 0;</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().<a class="code" href="classclang_1_1ObjCRuntime.html" title="The basic abstraction for the target Objective-C runtime.">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#aceeccbbaac7a1c2a4434dc89cc96c0bd" title="Is this runtime basically of the NeXT family of runtimes?">isNeXTFamily</a>()) {</div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>     <span class="comment">// check to see if class implements forwardInvocation method and objects</span></div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>     <span class="comment">// of this class are derived from 'NSProxy' so that to forward requests</span></div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>     <span class="comment">// from one object to another.</span></div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>     <span class="comment">// Under such conditions, which means that every method possible is</span></div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>     <span class="comment">// implemented in the class, we should not issue "Method definition not</span></div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>     <span class="comment">// found" warnings.</span></div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>     <span class="comment">// FIXME: Use a general GetUnarySelector method for this.</span></div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>     <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a>* II = &<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<span class="stringliteral">"forwardInvocation"</span>);</div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>     <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> fISelector = <a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a544656d98576ff2c1adb3e61a038e5b2">Selectors</a>.<a class="code" href="classclang_1_1SelectorTable.html#aae4996e6370b3c39722a757eb37b38b8" title="Can create any sort of selector.">getSelector</a>(1, &II);</div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>     <span class="keywordflow">if</span> (InsMap.count(fISelector))</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>       <span class="comment">// Is IDecl derived from 'NSProxy'? If so, no instance methods</span></div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>       <span class="comment">// need be implemented in the implementation.</span></div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>       NSIDecl = IDecl-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a08e5d801f072d9b251818dee68640b18">lookupInheritedClass</a>(&<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<span class="stringliteral">"NSProxy"</span>));</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>   }</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> </div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>   <span class="comment">// If this is a forward protocol declaration, get its definition.</span></div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>   <span class="keywordflow">if</span> (!PDecl-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#a80248299799f2efb0abd1bb0e1dd87fe" title="Determine whether this particular declaration is also the definition.">isThisDeclarationADefinition</a>() &&</div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>       PDecl-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#acaa3df11f4600181c0910838bea02172" title="Retrieve the definition of this protocol, if any.">getDefinition</a>())</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>     PDecl = PDecl-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#acaa3df11f4600181c0910838bea02172" title="Retrieve the definition of this protocol, if any.">getDefinition</a>();</div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>   </div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>   <span class="comment">// If a method lookup fails locally we still need to look and see if</span></div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>   <span class="comment">// the method was implemented by a base class or an inherited</span></div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>   <span class="comment">// protocol. This lookup is slow, but occurs rarely in correct code</span></div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>   <span class="comment">// and otherwise would terminate in a warning.</span></div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span> </div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>   <span class="comment">// check unimplemented instance methods.</span></div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>   <span class="keywordflow">if</span> (!NSIDecl)</div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">ObjCProtocolDecl::instmeth_iterator</a> I = PDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#adb21f3e7fa3b060c5b31b92ae97f957e">instmeth_begin</a>(),</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>          E = PDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ab363adb39c69750940adf83386f4b923">instmeth_end</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>       <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *method = *I;</div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>       <span class="keywordflow">if</span> (method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a3d490a2f2f823221b9184dcdaad43f8c">getImplementationControl</a>() != <a class="code" href="classclang_1_1ObjCMethodDecl.html#a542f187aaa0c0781b19ead8e71198abea8a74fa475f05f920a949240fdc03a24e">ObjCMethodDecl::Optional</a> &&</div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>           !method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a4ca2941f86e7822b3f15b6d258230cb1">isPropertyAccessor</a>() &&</div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>           !InsMap.count(method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>()) &&</div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>           (!Super || !Super-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a978054a968b81b37cf5601a8d6499a7c">lookupInstanceMethod</a>(method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>()))) {</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>             <span class="comment">// If a method is not implemented in the category implementation but</span></div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>             <span class="comment">// has been declared in its primary class, superclass,</span></div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>             <span class="comment">// or in one of their protocols, no need to issue the warning. </span></div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>             <span class="comment">// This is because method will be implemented in the primary class </span></div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>             <span class="comment">// or one of its super class implementation.</span></div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>             </div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>             <span class="comment">// Ugly, but necessary. Method declared in protcol might have</span></div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>             <span class="comment">// have been synthesized due to a property declared in the class which</span></div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>             <span class="comment">// uses the protocol.</span></div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>             <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MethodInClass =</div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>                   IDecl->lookupInstanceMethod(method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>(), </div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>                                               <span class="keyword">true</span> <span class="comment">/*shallowCategoryLookup*/</span>))</div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>               <span class="keywordflow">if</span> (C || MethodInClass->isPropertyAccessor())</div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>                 <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>             <span class="keywordtype">unsigned</span> <a class="code" href="AnalysisDiagnostic_8h.html#a628471a2bdbc3c1b61ce5b3b44f8bd20">DIAG</a> = diag::warn_unimplemented_protocol_method;</div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>             <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#ace9dfca18443fd122215c74657d33b53">Diags</a>.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a1a9de9de7e5ad8218fa06ca8568aa52c" title="Based on the way the client configured the DiagnosticsEngine object, classify the specified diagnosti...">getDiagnosticLevel</a>(DIAG, ImpLoc)</div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>                 != <a class="code" href="classclang_1_1DiagnosticsEngine.html#a94e5078973aa3a34432e91f3b26263e0a7576ca0c5417d008077e743b3d412234">DiagnosticsEngine::Ignored</a>) {</div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>               <a class="code" href="classclang_1_1Sema.html#a0df2f64749ca7acf2ae15f3908e1e988">WarnUndefinedMethod</a>(ImpLoc, method, IncompleteImpl, DIAG);</div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>               <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(CDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_required_for_protocol_at)</div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>                 << PDecl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>             }</div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>           }</div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>     }</div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>   <span class="comment">// check unimplemented class methods</span></div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">ObjCProtocolDecl::classmeth_iterator</a></div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>          I = PDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a39e0d96e9930f71140afbf01a89004c2">classmeth_begin</a>(), E = PDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a004cd19356ad87461ed07eb1e3ecffd4">classmeth_end</a>();</div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>        I != E; ++I) {</div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>     <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *method = *I;</div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>     <span class="keywordflow">if</span> (method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a3d490a2f2f823221b9184dcdaad43f8c">getImplementationControl</a>() != <a class="code" href="classclang_1_1ObjCMethodDecl.html#a542f187aaa0c0781b19ead8e71198abea8a74fa475f05f920a949240fdc03a24e">ObjCMethodDecl::Optional</a> &&</div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>         !ClsMap.count(method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>()) &&</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>         (!Super || !Super-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#afaeee0adc2fb09f1d7d84e59890267ba">lookupClassMethod</a>(method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>()))) {</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>       <span class="comment">// See above comment for instance method lookups.</span></div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>       <span class="keywordflow">if</span> (C && IDecl->lookupClassMethod(method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>(), </div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>                                         <span class="keyword">true</span> <span class="comment">/*shallowCategoryLookup*/</span>))</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>       <span class="keywordtype">unsigned</span> <a class="code" href="AnalysisDiagnostic_8h.html#a628471a2bdbc3c1b61ce5b3b44f8bd20">DIAG</a> = diag::warn_unimplemented_protocol_method;</div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#ace9dfca18443fd122215c74657d33b53">Diags</a>.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a1a9de9de7e5ad8218fa06ca8568aa52c" title="Based on the way the client configured the DiagnosticsEngine object, classify the specified diagnosti...">getDiagnosticLevel</a>(DIAG, ImpLoc) !=</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>             <a class="code" href="classclang_1_1DiagnosticsEngine.html#a94e5078973aa3a34432e91f3b26263e0a7576ca0c5417d008077e743b3d412234">DiagnosticsEngine::Ignored</a>) {</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>         <a class="code" href="classclang_1_1Sema.html#a0df2f64749ca7acf2ae15f3908e1e988">WarnUndefinedMethod</a>(ImpLoc, method, IncompleteImpl, DIAG);</div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IDecl->getLocation(), diag::note_required_for_protocol_at) <<</div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>           PDecl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>       }</div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>     }</div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>   }</div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>   <span class="comment">// Check on this protocols's referenced protocols, recursively.</span></div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCProtocolDecl.html#adbd4b44a478f573a24072123f93b2fe9">ObjCProtocolDecl::protocol_iterator</a> PI = PDecl-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#a199069b3da6c86cd72a6b8fe9f8feec0">protocol_begin</a>(),</div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>        E = PDecl-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#a681da3dbfa474479f44d59eee31d0e1e">protocol_end</a>(); PI != E; ++PI)</div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>     <a class="code" href="classclang_1_1Sema.html#af386fdbfe82dc9517775275ee346a61c">CheckProtocolMethodDefs</a>(ImpLoc, *PI, IncompleteImpl, InsMap, ClsMap, CDecl);</div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span> }</div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span> <span class="comment"></span></div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span> <span class="comment">/// MatchAllMethodDeclarations - Check methods declared in interface</span></div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span> <span class="comment">/// or protocol against those declared in their implementations.</span></div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01721"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a50422a9d6362e7a9d29ab5e48f217cb7"> 1721</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a50422a9d6362e7a9d29ab5e48f217cb7">Sema::MatchAllMethodDeclarations</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Sema.html#ad5485d7df223532c95e9e086e47e51f0">SelectorSet</a> &InsMap,</div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>                                       <span class="keyword">const</span> <a class="code" href="classclang_1_1Sema.html#ad5485d7df223532c95e9e086e47e51f0">SelectorSet</a> &ClsMap,</div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>                                       <a class="code" href="classclang_1_1Sema.html#ad5485d7df223532c95e9e086e47e51f0">SelectorSet</a> &InsMapSeen,</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>                                       <a class="code" href="classclang_1_1Sema.html#ad5485d7df223532c95e9e086e47e51f0">SelectorSet</a> &ClsMapSeen,</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>                                       <a class="code" href="classclang_1_1ObjCImplDecl.html">ObjCImplDecl</a>* IMPDecl,</div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>                                       <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a>* CDecl,</div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>                                       <span class="keywordtype">bool</span> &IncompleteImpl,</div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>                                       <span class="keywordtype">bool</span> ImmediateClass,</div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>                                       <span class="keywordtype">bool</span> WarnCategoryMethodImpl) {</div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>   <span class="comment">// Check and see if instance methods in class interface have been</span></div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>   <span class="comment">// implemented in the implementation class. If so, their types match.</span></div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">ObjCInterfaceDecl::instmeth_iterator</a> I = CDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#adb21f3e7fa3b060c5b31b92ae97f957e">instmeth_begin</a>(),</div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>        E = CDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ab363adb39c69750940adf83386f4b923">instmeth_end</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>     <span class="keywordflow">if</span> (!InsMapSeen.insert((*I)->getSelector()))</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>     <span class="keywordflow">if</span> (!(*I)->isPropertyAccessor() &&</div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>         !InsMap.count((*I)->getSelector())) {</div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>       <span class="keywordflow">if</span> (ImmediateClass)</div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>         <a class="code" href="classclang_1_1Sema.html#a0df2f64749ca7acf2ae15f3908e1e988">WarnUndefinedMethod</a>(IMPDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), *I, IncompleteImpl,</div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>                             diag::warn_undef_method_impl);</div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>       <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *ImpMethodDecl =</div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>         IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ad21a2708e21290c6e337bd26ce364ca5">getInstanceMethod</a>((*I)->getSelector());</div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>       assert(CDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ad21a2708e21290c6e337bd26ce364ca5">getInstanceMethod</a>((*I)->getSelector()) &&</div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>              <span class="stringliteral">"Expected to find the method through lookup as well"</span>);</div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>       <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MethodDecl = *I;</div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>       <span class="comment">// ImpMethodDecl may be null as in a @dynamic property.</span></div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>       <span class="keywordflow">if</span> (ImpMethodDecl) {</div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>         <span class="keywordflow">if</span> (!WarnCategoryMethodImpl)</div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>           <a class="code" href="classclang_1_1Sema.html#aa92c540d0e3d04d1d4e9ad99cbaf22b8">WarnConflictingTypedMethods</a>(ImpMethodDecl, MethodDecl,</div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>                                       isa<ObjCProtocolDecl>(CDecl));</div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!MethodDecl-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a4ca2941f86e7822b3f15b6d258230cb1">isPropertyAccessor</a>())</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>           <a class="code" href="classclang_1_1Sema.html#a2cc40e9fe24bb64cce6d710dec80e766">WarnExactTypedMethods</a>(ImpMethodDecl, MethodDecl,</div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>                                 isa<ObjCProtocolDecl>(CDecl));</div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>       }</div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>     }</div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>   }</div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span> </div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>   <span class="comment">// Check and see if class methods in class interface have been</span></div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>   <span class="comment">// implemented in the implementation class. If so, their types match.</span></div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">ObjCInterfaceDecl::classmeth_iterator</a> I = CDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a39e0d96e9930f71140afbf01a89004c2">classmeth_begin</a>(),</div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>                                              E = CDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a004cd19356ad87461ed07eb1e3ecffd4">classmeth_end</a>();</div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>        I != E; ++I) {</div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>     <span class="keywordflow">if</span> (!ClsMapSeen.insert((*I)->getSelector()))</div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>     <span class="keywordflow">if</span> (!ClsMap.count((*I)->getSelector())) {</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>       <span class="keywordflow">if</span> (ImmediateClass)</div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>         <a class="code" href="classclang_1_1Sema.html#a0df2f64749ca7acf2ae15f3908e1e988">WarnUndefinedMethod</a>(IMPDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), *I, IncompleteImpl,</div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>                             diag::warn_undef_method_impl);</div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>       <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *ImpMethodDecl =</div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>         IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#aa23c00fa64fe9da4461528f91c381902">getClassMethod</a>((*I)->getSelector());</div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>       assert(CDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#aa23c00fa64fe9da4461528f91c381902">getClassMethod</a>((*I)->getSelector()) &&</div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>              <span class="stringliteral">"Expected to find the method through lookup as well"</span>);</div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>       <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MethodDecl = *I;</div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>       <span class="keywordflow">if</span> (!WarnCategoryMethodImpl)</div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>         <a class="code" href="classclang_1_1Sema.html#aa92c540d0e3d04d1d4e9ad99cbaf22b8">WarnConflictingTypedMethods</a>(ImpMethodDecl, MethodDecl, </div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>                                     isa<ObjCProtocolDecl>(CDecl));</div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>         <a class="code" href="classclang_1_1Sema.html#a2cc40e9fe24bb64cce6d710dec80e766">WarnExactTypedMethods</a>(ImpMethodDecl, MethodDecl,</div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>                               isa<ObjCProtocolDecl>(CDecl));</div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>     }</div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>   }</div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>   </div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *PD = dyn_cast<ObjCProtocolDecl> (CDecl)) {</div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>     <span class="comment">// Also, check for methods declared in protocols inherited by</span></div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>     <span class="comment">// this protocol.</span></div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCProtocolDecl.html#adbd4b44a478f573a24072123f93b2fe9">ObjCProtocolDecl::protocol_iterator</a></div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>           PI = PD->protocol_begin(), E = PD->protocol_end(); PI != E; ++PI)</div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>       <a class="code" href="classclang_1_1Sema.html#a50422a9d6362e7a9d29ab5e48f217cb7">MatchAllMethodDeclarations</a>(InsMap, ClsMap, InsMapSeen, ClsMapSeen,</div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>                                  IMPDecl, (*PI), IncompleteImpl, <span class="keyword">false</span>,</div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>                                  WarnCategoryMethodImpl);</div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>   }</div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>   </div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *I = dyn_cast<ObjCInterfaceDecl> (CDecl)) {</div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>     <span class="comment">// when checking that methods in implementation match their declaration,</span></div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>     <span class="comment">// i.e. when WarnCategoryMethodImpl is false, check declarations in class</span></div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>     <span class="comment">// extension; as well as those in categories.</span></div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>     <span class="keywordflow">if</span> (!WarnCategoryMethodImpl) {</div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl_1_1filtered__category__iterator.html" title="Iterator that walks over the list of categories, filtering out those that do not meet specific criter...">ObjCInterfaceDecl::visible_categories_iterator</a></div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>              Cat = I->visible_categories_begin(),</div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>            CatEnd = I->visible_categories_end();</div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>            Cat != CatEnd; ++Cat) {</div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>         <a class="code" href="classclang_1_1Sema.html#a50422a9d6362e7a9d29ab5e48f217cb7">MatchAllMethodDeclarations</a>(InsMap, ClsMap, InsMapSeen, ClsMapSeen,</div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>                                    IMPDecl, *Cat, IncompleteImpl, <span class="keyword">false</span>,</div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>                                    WarnCategoryMethodImpl);</div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>       }</div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>       <span class="comment">// Also methods in class extensions need be looked at next.</span></div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl_1_1filtered__category__iterator.html" title="Iterator that walks over the list of categories, filtering out those that do not meet specific criter...">ObjCInterfaceDecl::visible_extensions_iterator</a></div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>              Ext = I->visible_extensions_begin(),</div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>              ExtEnd = I->visible_extensions_end();</div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>            Ext != ExtEnd; ++Ext) {</div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>         <a class="code" href="classclang_1_1Sema.html#a50422a9d6362e7a9d29ab5e48f217cb7">MatchAllMethodDeclarations</a>(InsMap, ClsMap, InsMapSeen, ClsMapSeen,</div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>                                    IMPDecl, *Ext, IncompleteImpl, <span class="keyword">false</span>,</div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>                                    WarnCategoryMethodImpl);</div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>       }</div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>     }</div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span> </div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>     <span class="comment">// Check for any implementation of a methods declared in protocol.</span></div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a9da2d6646fb8c8dd1793f81688b6c0f0">ObjCInterfaceDecl::all_protocol_iterator</a></div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>           PI = I->all_referenced_protocol_begin(),</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>           E = I->all_referenced_protocol_end(); PI != E; ++PI)</div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>       <a class="code" href="classclang_1_1Sema.html#a50422a9d6362e7a9d29ab5e48f217cb7">MatchAllMethodDeclarations</a>(InsMap, ClsMap, InsMapSeen, ClsMapSeen,</div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>                                  IMPDecl,</div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>                                  (*PI), IncompleteImpl, <span class="keyword">false</span>, </div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>                                  WarnCategoryMethodImpl);</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>     </div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>     <span class="comment">// FIXME. For now, we are not checking for extact match of methods </span></div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>     <span class="comment">// in category implementation and its primary class's super class. </span></div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>     <span class="keywordflow">if</span> (!WarnCategoryMethodImpl && I->getSuperClass())</div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>       <a class="code" href="classclang_1_1Sema.html#a50422a9d6362e7a9d29ab5e48f217cb7">MatchAllMethodDeclarations</a>(InsMap, ClsMap, InsMapSeen, ClsMapSeen,</div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>                                  IMPDecl,</div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>                                  I->getSuperClass(), IncompleteImpl, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>   }</div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span> }</div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span> <span class="comment"></span></div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span> <span class="comment">/// CheckCategoryVsClassMethodMatches - Checks that methods implemented in</span></div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span> <span class="comment">/// category matches with those implemented in its primary class and</span></div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span> <span class="comment">/// warns each time an exact match is found. </span></div>
+<div class="line"><a name="l01842"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a24aea95b054cd70a2e47268247cbd7b0"> 1842</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#a24aea95b054cd70a2e47268247cbd7b0">Sema::CheckCategoryVsClassMethodMatches</a>(</div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>                                   <a class="code" href="classclang_1_1ObjCCategoryImplDecl.html">ObjCCategoryImplDecl</a> *CatIMPDecl) {</div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>   <a class="code" href="classclang_1_1Sema.html#ad5485d7df223532c95e9e086e47e51f0">SelectorSet</a> InsMap, ClsMap;</div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>   </div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">ObjCImplementationDecl::instmeth_iterator</a></div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>        I = CatIMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#adb21f3e7fa3b060c5b31b92ae97f957e">instmeth_begin</a>(), </div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>        E = CatIMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ab363adb39c69750940adf83386f4b923">instmeth_end</a>(); I!=E; ++I)</div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>     InsMap.insert((*I)->getSelector());</div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>   </div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">ObjCImplementationDecl::classmeth_iterator</a></div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>        I = CatIMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a39e0d96e9930f71140afbf01a89004c2">classmeth_begin</a>(),</div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>        E = CatIMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a004cd19356ad87461ed07eb1e3ecffd4">classmeth_end</a>(); I != E; ++I)</div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>     ClsMap.insert((*I)->getSelector());</div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>   <span class="keywordflow">if</span> (InsMap.empty() && ClsMap.empty())</div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>   </div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>   <span class="comment">// Get category's primary class.</span></div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>   <a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *CatDecl = CatIMPDecl-><a class="code" href="classclang_1_1ObjCCategoryImplDecl.html#a0f87bd2e4d3ba1ad6eb452db64404c42">getCategoryDecl</a>();</div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>   <span class="keywordflow">if</span> (!CatDecl)</div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IDecl = CatDecl-><a class="code" href="classclang_1_1ObjCCategoryDecl.html#acdb14eeca277cfa745a4e8e842312008">getClassInterface</a>();</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>   <span class="keywordflow">if</span> (!IDecl)</div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>   <a class="code" href="classclang_1_1Sema.html#ad5485d7df223532c95e9e086e47e51f0">SelectorSet</a> InsMapSeen, ClsMapSeen;</div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>   <span class="keywordtype">bool</span> IncompleteImpl = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>   <a class="code" href="classclang_1_1Sema.html#a50422a9d6362e7a9d29ab5e48f217cb7">MatchAllMethodDeclarations</a>(InsMap, ClsMap, InsMapSeen, ClsMapSeen,</div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>                              CatIMPDecl, IDecl,</div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>                              IncompleteImpl, <span class="keyword">false</span>, </div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>                              <span class="keyword">true</span> <span class="comment">/*WarnCategoryMethodImpl*/</span>);</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span> }</div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span> </div>
+<div class="line"><a name="l01873"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#ac0d91ffb312a58b270d5b41c9e7e7cfd"> 1873</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#ac0d91ffb312a58b270d5b41c9e7e7cfd">Sema::ImplMethodsVsClassMethods</a>(<a class="code" href="classclang_1_1Scope.html">Scope</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1ObjCImplDecl.html">ObjCImplDecl</a>* IMPDecl,</div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>                                      <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a>* CDecl,</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>                                      <span class="keywordtype">bool</span> IncompleteImpl) {</div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>   <a class="code" href="classclang_1_1Sema.html#ad5485d7df223532c95e9e086e47e51f0">SelectorSet</a> InsMap;</div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>   <span class="comment">// Check and see if instance methods in class interface have been</span></div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>   <span class="comment">// implemented in the implementation class.</span></div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">ObjCImplementationDecl::instmeth_iterator</a></div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>          I = IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#adb21f3e7fa3b060c5b31b92ae97f957e">instmeth_begin</a>(), E = IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#ab363adb39c69750940adf83386f4b923">instmeth_end</a>(); I!=E; ++I)</div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>     InsMap.insert((*I)->getSelector());</div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span> </div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>   <span class="comment">// Check and see if properties declared in the interface have either 1)</span></div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>   <span class="comment">// an implementation or 2) there is a @synthesize/@dynamic implementation</span></div>
+<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>   <span class="comment">// of the property in the @implementation.</span></div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IDecl = dyn_cast<ObjCInterfaceDecl>(CDecl))</div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>     <span class="keywordflow">if</span>  (!(<a class="code" href="classclang_1_1Sema.html#a6da5a25306c679ff309e842bb7ffc394">LangOpts</a>.ObjCDefaultSynthProperties &&</div>
+<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>            <a class="code" href="classclang_1_1Sema.html#a6da5a25306c679ff309e842bb7ffc394">LangOpts</a>.<a class="code" href="classclang_1_1LangOptions.html#a34a8b84f730051971c84c36daa84dda7">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a5523ca4491b7915e32c02d98a491505e" title="Does this runtime follow the set of implied behaviors for a "non-fragile" ABI?">isNonFragile</a>()) ||</div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>          IDecl->isObjCRequiresPropertyDefs())</div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>       <a class="code" href="classclang_1_1Sema.html#a9bd91bddc066e31cfad03a11c95ed38b">DiagnoseUnimplementedProperties</a>(S, IMPDecl, CDecl);</div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>       </div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>   <a class="code" href="classclang_1_1Sema.html#ad5485d7df223532c95e9e086e47e51f0">SelectorSet</a> ClsMap;</div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">ObjCImplementationDecl::classmeth_iterator</a></div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>        I = IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a39e0d96e9930f71140afbf01a89004c2">classmeth_begin</a>(),</div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>        E = IMPDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a004cd19356ad87461ed07eb1e3ecffd4">classmeth_end</a>(); I != E; ++I)</div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>     ClsMap.insert((*I)->getSelector());</div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span> </div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>   <span class="comment">// Check for type conflict of methods declared in a class/protocol and</span></div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>   <span class="comment">// its implementation; if any.</span></div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>   <a class="code" href="classclang_1_1Sema.html#ad5485d7df223532c95e9e086e47e51f0">SelectorSet</a> InsMapSeen, ClsMapSeen;</div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>   <a class="code" href="classclang_1_1Sema.html#a50422a9d6362e7a9d29ab5e48f217cb7">MatchAllMethodDeclarations</a>(InsMap, ClsMap, InsMapSeen, ClsMapSeen,</div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>                              IMPDecl, CDecl,</div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>                              IncompleteImpl, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>   </div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>   <span class="comment">// check all methods implemented in category against those declared</span></div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>   <span class="comment">// in its primary class.</span></div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryImplDecl.html">ObjCCategoryImplDecl</a> *CatDecl = </div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>         dyn_cast<ObjCCategoryImplDecl>(IMPDecl))</div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>     <a class="code" href="classclang_1_1Sema.html#a24aea95b054cd70a2e47268247cbd7b0">CheckCategoryVsClassMethodMatches</a>(CatDecl);</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span> </div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>   <span class="comment">// Check the protocol list for unimplemented methods in the @implementation</span></div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>   <span class="comment">// class.</span></div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>   <span class="comment">// Check and see if class methods in class interface have been</span></div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>   <span class="comment">// implemented in the implementation class.</span></div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span> </div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *I = dyn_cast<ObjCInterfaceDecl> (CDecl)) {</div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a9da2d6646fb8c8dd1793f81688b6c0f0">ObjCInterfaceDecl::all_protocol_iterator</a></div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>           PI = I->all_referenced_protocol_begin(),</div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>           E = I->all_referenced_protocol_end(); PI != E; ++PI)</div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>       <a class="code" href="classclang_1_1Sema.html#af386fdbfe82dc9517775275ee346a61c">CheckProtocolMethodDefs</a>(IMPDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), *PI, IncompleteImpl,</div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>                               InsMap, ClsMap, I);</div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>     <span class="comment">// Check class extensions (unnamed categories)</span></div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl_1_1filtered__category__iterator.html" title="Iterator that walks over the list of categories, filtering out those that do not meet specific criter...">ObjCInterfaceDecl::visible_extensions_iterator</a></div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>            Ext = I->visible_extensions_begin(),</div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>            ExtEnd = I->visible_extensions_end();</div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>          Ext != ExtEnd; ++Ext) {</div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>       <a class="code" href="classclang_1_1Sema.html#ac0d91ffb312a58b270d5b41c9e7e7cfd">ImplMethodsVsClassMethods</a>(S, IMPDecl, *Ext, IncompleteImpl);</div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>     }</div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *C = dyn_cast<ObjCCategoryDecl>(CDecl)) {</div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>     <span class="comment">// For extended class, unimplemented methods in its protocols will</span></div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>     <span class="comment">// be reported in the primary class.</span></div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>     <span class="keywordflow">if</span> (!C->IsClassExtension()) {</div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html#a2838849e5805ca4bce587a4d9c68acb8">ObjCCategoryDecl::protocol_iterator</a> PI = C->protocol_begin(),</div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>            E = C->protocol_end(); PI != E; ++PI)</div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>         <a class="code" href="classclang_1_1Sema.html#af386fdbfe82dc9517775275ee346a61c">CheckProtocolMethodDefs</a>(IMPDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), *PI, IncompleteImpl,</div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>                                 InsMap, ClsMap, CDecl);</div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>       <a class="code" href="classclang_1_1Sema.html#a9bd91bddc066e31cfad03a11c95ed38b">DiagnoseUnimplementedProperties</a>(S, IMPDecl, CDecl);</div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>     } </div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>   } <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>     llvm_unreachable(<span class="stringliteral">"invalid ObjCContainerDecl type."</span>);</div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span> }</div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span> <span class="comment"></span></div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span> <span class="comment">/// ActOnForwardClassDeclaration -</span></div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span> <span class="comment"></span><a class="code" href="classclang_1_1OpaquePtr.html" title="Wrapper for void* pointer.">Sema::DeclGroupPtrTy</a></div>
+<div class="line"><a name="l01945"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a7685ce6e588d1fe44262f1169e6f9127"> 1945</a></span> <a class="code" href="classclang_1_1Sema.html#a7685ce6e588d1fe44262f1169e6f9127" title="ActOnForwardClassDeclaration -.">Sema::ActOnForwardClassDeclaration</a>(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> AtClassLoc,</div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>                                    <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> **IdentList,</div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>                                    <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> *IdentLocs,</div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>                                    <span class="keywordtype">unsigned</span> NumElts) {</div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<Decl *, 8></a> DeclsInGroup;</div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != NumElts; ++i) {</div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>     <span class="comment">// Check for another declaration kind with the same name.</span></div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>     <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *PrevDecl</div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>       = <a class="code" href="classclang_1_1Sema.html#a48d86d16f21c7156e76e364727e3beea" title="Look up a name, looking for a single declaration. Return null if the results were absent...">LookupSingleName</a>(<a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>, IdentList[i], IdentLocs[i], </div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>                          <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa0f401cd356feef42a5d4f95df7a6bf66">LookupOrdinaryName</a>, <a class="code" href="classclang_1_1Sema.html#a91abc8920d6bf0e4dc8c7c21aa821a09a63186acb6716b204ba3cd3b3a778b434" title="The lookup results will be used for redeclaration of a name, if an entity by that name already exists...">ForRedeclaration</a>);</div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>     <span class="keywordflow">if</span> (PrevDecl && !isa<ObjCInterfaceDecl>(PrevDecl)) {</div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>       <span class="comment">// GCC apparently allows the following idiom:</span></div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>       <span class="comment">//</span></div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>       <span class="comment">// typedef NSObject < XCElementTogglerP > XCElementToggler;</span></div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>       <span class="comment">// @class XCElementToggler;</span></div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>       <span class="comment">//</span></div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>       <span class="comment">// Here we have chosen to ignore the forward class declaration</span></div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>       <span class="comment">// with a warning. Since this is the implied behavior.</span></div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>       <a class="code" href="classclang_1_1TypedefNameDecl.html" title="Base class for declarations which introduce a typedef-name.">TypedefNameDecl</a> *TDD = dyn_cast<<a class="code" href="classclang_1_1TypedefNameDecl.html" title="Base class for declarations which introduce a typedef-name.">TypedefNameDecl</a>>(PrevDecl);</div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>       <span class="keywordflow">if</span> (!TDD || !TDD-><a class="code" href="classclang_1_1TypedefNameDecl.html#a5fccedff6d3854db365a540145029158">getUnderlyingType</a>()-><a class="code" href="classclang_1_1Type.html#a044e6e3fc98266ba0e065860aa6f7305">isObjCObjectType</a>()) {</div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtClassLoc, diag::err_redefinition_different_kind) << IdentList[i];</div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PrevDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_definition);</div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>         <span class="comment">// a forward class declaration matching a typedef name of a class refers</span></div>
+<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>         <span class="comment">// to the underlying class. Just ignore the forward class with a warning</span></div>
+<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>         <span class="comment">// as this will force the intended behavior which is to lookup the typedef</span></div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>         <span class="comment">// name.</span></div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>         <span class="keywordflow">if</span> (isa<ObjCObjectType>(TDD-><a class="code" href="classclang_1_1TypedefNameDecl.html#a5fccedff6d3854db365a540145029158">getUnderlyingType</a>())) {</div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(AtClassLoc, diag::warn_forward_class_redefinition) << IdentList[i];</div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PrevDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_definition);</div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>           <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>         }</div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>       }</div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>     }</div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>     </div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>     <span class="comment">// Create a declaration to describe this forward declaration.</span></div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>     <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *PrevIDecl</div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>       = dyn_cast_or_null<ObjCInterfaceDecl>(PrevDecl);</div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span> </div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>     <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *ClassName = IdentList[i];</div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>     <span class="keywordflow">if</span> (PrevIDecl && PrevIDecl-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>() != ClassName) {</div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>       <span class="comment">// A previous decl with a different name is because of</span></div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>       <span class="comment">// @compatibility_alias, for example:</span></div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>       <span class="comment">// \code</span></div>
+<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>       <span class="comment">//   @class NewImage;</span></div>
+<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>       <span class="comment">//   @compatibility_alias OldImage NewImage;</span></div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>       <span class="comment">// \endcode</span></div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>       <span class="comment">// A lookup for 'OldImage' will return the 'NewImage' decl.</span></div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>       <span class="comment">//</span></div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>       <span class="comment">// In such a case use the real declaration name, instead of the alias one,</span></div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>       <span class="comment">// otherwise we will break IdentifierResolver and redecls-chain invariants.</span></div>
+<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>       <span class="comment">// FIXME: If necessary, add a bit to indicate that this ObjCInterfaceDecl</span></div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>       <span class="comment">// has been aliased.</span></div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>       ClassName = PrevIDecl-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>();</div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>     }</div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span> </div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>     <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IDecl</div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>       = <a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a8bad7a98c520f28fdeabb0b88125b3ea">ObjCInterfaceDecl::Create</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, <a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>, AtClassLoc,</div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>                                   ClassName, PrevIDecl, IdentLocs[i]);</div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>     IDecl-><a class="code" href="classclang_1_1ObjCContainerDecl.html#a9f20c0dd3594b28dde5fbf6f8f9a35ef">setAtEndRange</a>(IdentLocs[i]);</div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>     </div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>     <a class="code" href="classclang_1_1Sema.html#a45bd7757e01b318e87ae7dc5ea0ce8bf" title="Add this decl to the scope shadowed decl chains.">PushOnScopeChains</a>(IDecl, <a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>);</div>
+<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>     <a class="code" href="classclang_1_1Sema.html#ad7c1d356c40a6768973c91bfceb5f35c">CheckObjCDeclScope</a>(IDecl);</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>     DeclsInGroup.push_back(IDecl);</div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>   }</div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span> </div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a4de7a6579723dfee04a4afb5ef0c5a62">BuildDeclaratorGroup</a>(DeclsInGroup, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span> }</div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span> </div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaDeclObjC_8cpp.html#a4f17afce39d233ed75df23925e75e7c3">tryMatchRecordTypes</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>,</div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>                                 <a class="code" href="classclang_1_1Sema.html#a97c508e732eeaabb4da9aa7673fc4bd0">Sema::MethodMatchStrategy</a> strategy,</div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>                                 <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *left, <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *right);</div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span> </div>
+<div class="line"><a name="l02018"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#a7ef1579e4b547212b2d10165006dace5"> 2018</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaDeclObjC_8cpp.html#a7ef1579e4b547212b2d10165006dace5">matchTypes</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>, <a class="code" href="classclang_1_1Sema.html#a97c508e732eeaabb4da9aa7673fc4bd0">Sema::MethodMatchStrategy</a> strategy,</div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>                        <a class="code" href="classclang_1_1QualType.html">QualType</a> leftQT, <a class="code" href="classclang_1_1QualType.html">QualType</a> rightQT) {</div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *left =</div>
+<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>     Context.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(leftQT).<a class="code" href="classclang_1_1CanQual.html#af48a042eb252e80347f11899625ca0dc" title="Retrieve the unqualified form of this type.">getUnqualifiedType</a>().<a class="code" href="classclang_1_1CanQual.html#ade6897b3c823f8f586ee6f677d8ac15c" title="Retrieve the underlying type pointer, which refers to a canonical type.">getTypePtr</a>();</div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *right =</div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>     Context.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(rightQT).<a class="code" href="classclang_1_1CanQual.html#af48a042eb252e80347f11899625ca0dc" title="Retrieve the unqualified form of this type.">getUnqualifiedType</a>().<a class="code" href="classclang_1_1CanQual.html#ade6897b3c823f8f586ee6f677d8ac15c" title="Retrieve the underlying type pointer, which refers to a canonical type.">getTypePtr</a>();</div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span> </div>
+<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>   <span class="keywordflow">if</span> (left == right) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span> </div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>   <span class="comment">// If we're doing a strict match, the types have to match exactly.</span></div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>   <span class="keywordflow">if</span> (strategy == <a class="code" href="classclang_1_1Sema.html#a97c508e732eeaabb4da9aa7673fc4bd0a6117e2de62dad709edd43fb14ede8f07">Sema::MMS_strict</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span> </div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>   <span class="keywordflow">if</span> (left-><a class="code" href="classclang_1_1Type.html#a6d84e779575f1e510f7ddc98119662bd" title="Def If non-NULL, and the type refers to some kind of declaration that can be completed (such as a C s...">isIncompleteType</a>() || right-><a class="code" href="classclang_1_1Type.html#a6d84e779575f1e510f7ddc98119662bd" title="Def If non-NULL, and the type refers to some kind of declaration that can be completed (such as a C s...">isIncompleteType</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span> </div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>   <span class="comment">// Otherwise, use this absurdly complicated algorithm to try to</span></div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>   <span class="comment">// validate the basic, low-level compatibility of the two types.</span></div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span> </div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>   <span class="comment">// As a minimum, require the sizes and alignments to match.</span></div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>   <span class="keywordflow">if</span> (Context.<a class="code" href="classclang_1_1ASTContext.html#aa86fe60458619bf7845ba3048cea5996" title="Get the size and alignment of the specified complete type in bits.">getTypeInfo</a>(left) != Context.<a class="code" href="classclang_1_1ASTContext.html#aa86fe60458619bf7845ba3048cea5996" title="Get the size and alignment of the specified complete type in bits.">getTypeInfo</a>(right))</div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span> </div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>   <span class="comment">// Consider all the kinds of non-dependent canonical types:</span></div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>   <span class="comment">// - functions and arrays aren't possible as return and parameter types</span></div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>   </div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>   <span class="comment">// - vector types of equal size can be arbitrarily mixed</span></div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>   <span class="keywordflow">if</span> (isa<VectorType>(left)) <span class="keywordflow">return</span> isa<VectorType>(right);</div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>   <span class="keywordflow">if</span> (isa<VectorType>(right)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span> </div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>   <span class="comment">// - references should only match references of identical type</span></div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>   <span class="comment">// - structs, unions, and Objective-C objects must match more-or-less</span></div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>   <span class="comment">//   exactly</span></div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>   <span class="comment">// - everything else should be a scalar</span></div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>   <span class="keywordflow">if</span> (!left-><a class="code" href="classclang_1_1Type.html#a69765f6b95c14d64a9555ab8824dac61">isScalarType</a>() || !right-><a class="code" href="classclang_1_1Type.html#a69765f6b95c14d64a9555ab8824dac61">isScalarType</a>())</div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>     <span class="keywordflow">return</span> <a class="code" href="SemaDeclObjC_8cpp.html#a4f17afce39d233ed75df23925e75e7c3">tryMatchRecordTypes</a>(Context, strategy, left, right);</div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span> </div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>   <span class="comment">// Make scalars agree in kind, except count bools as chars, and group</span></div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>   <span class="comment">// all non-member pointers together.</span></div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>   <a class="code" href="classclang_1_1Type.html#accadca8a1096bbe6b2a9576f1bca8055">Type::ScalarTypeKind</a> leftSK = left-><a class="code" href="classclang_1_1Type.html#af77453b8cb56112ff95513a33b9fd121" title="getScalarTypeKind - Given that this is a scalar type, classify it.">getScalarTypeKind</a>();</div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>   <a class="code" href="classclang_1_1Type.html#accadca8a1096bbe6b2a9576f1bca8055">Type::ScalarTypeKind</a> rightSK = right-><a class="code" href="classclang_1_1Type.html#af77453b8cb56112ff95513a33b9fd121" title="getScalarTypeKind - Given that this is a scalar type, classify it.">getScalarTypeKind</a>();</div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>   <span class="keywordflow">if</span> (leftSK == <a class="code" href="classclang_1_1Type.html#accadca8a1096bbe6b2a9576f1bca8055a60d84c90fd09570d247007dea9229eed">Type::STK_Bool</a>) leftSK = <a class="code" href="classclang_1_1Type.html#accadca8a1096bbe6b2a9576f1bca8055aecae20e05cc55815a98890e9594a418f">Type::STK_Integral</a>;</div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>   <span class="keywordflow">if</span> (rightSK == <a class="code" href="classclang_1_1Type.html#accadca8a1096bbe6b2a9576f1bca8055a60d84c90fd09570d247007dea9229eed">Type::STK_Bool</a>) rightSK = <a class="code" href="classclang_1_1Type.html#accadca8a1096bbe6b2a9576f1bca8055aecae20e05cc55815a98890e9594a418f">Type::STK_Integral</a>;</div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>   <span class="keywordflow">if</span> (leftSK == <a class="code" href="classclang_1_1Type.html#accadca8a1096bbe6b2a9576f1bca8055aae93603f80d4b9352318ed00b3303f87">Type::STK_CPointer</a> || leftSK == <a class="code" href="classclang_1_1Type.html#accadca8a1096bbe6b2a9576f1bca8055a10e6d5a984830677c8040657921bfd9f">Type::STK_BlockPointer</a>)</div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>     leftSK = <a class="code" href="classclang_1_1Type.html#accadca8a1096bbe6b2a9576f1bca8055a90ff7e6c88fae81133aa4a4c7a8c4a3e">Type::STK_ObjCObjectPointer</a>;</div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>   <span class="keywordflow">if</span> (rightSK == <a class="code" href="classclang_1_1Type.html#accadca8a1096bbe6b2a9576f1bca8055aae93603f80d4b9352318ed00b3303f87">Type::STK_CPointer</a> || rightSK == <a class="code" href="classclang_1_1Type.html#accadca8a1096bbe6b2a9576f1bca8055a10e6d5a984830677c8040657921bfd9f">Type::STK_BlockPointer</a>)</div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>     rightSK = <a class="code" href="classclang_1_1Type.html#accadca8a1096bbe6b2a9576f1bca8055a90ff7e6c88fae81133aa4a4c7a8c4a3e">Type::STK_ObjCObjectPointer</a>;</div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span> </div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>   <span class="comment">// Note that data member pointers and function member pointers don't</span></div>
+<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>   <span class="comment">// intermix because of the size differences.</span></div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span> </div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>   <span class="keywordflow">return</span> (leftSK == rightSK);</div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span> }</div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span> </div>
+<div class="line"><a name="l02070"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#a4f17afce39d233ed75df23925e75e7c3"> 2070</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaDeclObjC_8cpp.html#a4f17afce39d233ed75df23925e75e7c3">tryMatchRecordTypes</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>,</div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>                                 <a class="code" href="classclang_1_1Sema.html#a97c508e732eeaabb4da9aa7673fc4bd0">Sema::MethodMatchStrategy</a> strategy,</div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>                                 <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *lt, <span class="keyword">const</span> <a class="code" href="classclang_1_1Type.html">Type</a> *rt) {</div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>   assert(lt && rt && lt != rt);</div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span> </div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>   <span class="keywordflow">if</span> (!isa<RecordType>(lt) || !isa<RecordType>(rt)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>   <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *left = cast<RecordType>(lt)->getDecl();</div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>   <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *right = cast<RecordType>(rt)->getDecl();</div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span> </div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>   <span class="comment">// Require union-hood to match.</span></div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>   <span class="keywordflow">if</span> (left-><a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>() != right-><a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span> </div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>   <span class="comment">// Require an exact match if either is non-POD.</span></div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>   <span class="keywordflow">if</span> ((isa<CXXRecordDecl>(left) && !cast<CXXRecordDecl>(left)->isPOD()) ||</div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>       (isa<CXXRecordDecl>(right) && !cast<CXXRecordDecl>(right)->isPOD()))</div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span> </div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>   <span class="comment">// Require size and alignment to match.</span></div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>   <span class="keywordflow">if</span> (Context.<a class="code" href="classclang_1_1ASTContext.html#aa86fe60458619bf7845ba3048cea5996" title="Get the size and alignment of the specified complete type in bits.">getTypeInfo</a>(lt) != Context.<a class="code" href="classclang_1_1ASTContext.html#aa86fe60458619bf7845ba3048cea5996" title="Get the size and alignment of the specified complete type in bits.">getTypeInfo</a>(rt)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span> </div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>   <span class="comment">// Require fields to match.</span></div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>   <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> li = left-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(), le = left-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>   <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> ri = right-><a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>(), re = right-><a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>();</div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>   <span class="keywordflow">for</span> (; li != le && ri != re; ++li, ++ri) {</div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>     <span class="keywordflow">if</span> (!<a class="code" href="SemaDeclObjC_8cpp.html#a7ef1579e4b547212b2d10165006dace5">matchTypes</a>(Context, strategy, li->getType(), ri->getType()))</div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>   }</div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>   <span class="keywordflow">return</span> (li == le && ri == re);</div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span> }</div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span> <span class="comment"></span></div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span> <span class="comment">/// MatchTwoMethodDeclarations - Checks that two methods have matching type and</span></div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span> <span class="comment">/// returns true, or false, accordingly.</span></div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span> <span class="comment">/// TODO: Handle protocol list; such as id<p1,p2> in type comparisons</span></div>
+<div class="line"><a name="l02103"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#abded456881381bd9aba81f6b7ffbd86a"> 2103</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Sema.html#abded456881381bd9aba81f6b7ffbd86a">Sema::MatchTwoMethodDeclarations</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *left,</div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>                                       <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *right,</div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>                                       <a class="code" href="classclang_1_1Sema.html#a97c508e732eeaabb4da9aa7673fc4bd0">MethodMatchStrategy</a> strategy) {</div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>   <span class="keywordflow">if</span> (!<a class="code" href="SemaDeclObjC_8cpp.html#a7ef1579e4b547212b2d10165006dace5">matchTypes</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, strategy,</div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>                   left-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>(), right-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>()))</div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span> </div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>   <span class="comment">// If either is hidden, it is not considered to match.</span></div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>   <span class="keywordflow">if</span> (left-><a class="code" href="classclang_1_1NamedDecl.html#a6725184df2e9d5ca8ba02da12cd1aa08" title="Determine whether this declaration is hidden from name lookup.">isHidden</a>() || right-><a class="code" href="classclang_1_1NamedDecl.html#a6725184df2e9d5ca8ba02da12cd1aa08" title="Determine whether this declaration is hidden from name lookup.">isHidden</a>())</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span> </div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>       (left-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSReturnsRetainedAttr.html">NSReturnsRetainedAttr</a>>()</div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>          != right-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSReturnsRetainedAttr.html">NSReturnsRetainedAttr</a>>() ||</div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>        left-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSConsumesSelfAttr.html">NSConsumesSelfAttr</a>>()</div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>          != right-><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a><<a class="code" href="classclang_1_1NSConsumesSelfAttr.html">NSConsumesSelfAttr</a>>()))</div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span> </div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>   <a class="code" href="classclang_1_1ObjCMethodDecl.html#a841541ca3ef9960a3474a637e3c8829d">ObjCMethodDecl::param_const_iterator</a></div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>     li = left-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>(), le = left-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>(), ri = right-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a6e3f1b5626a6e795168b51ff78888bf9">param_begin</a>(),</div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>     re = right-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>();</div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span> </div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>   <span class="keywordflow">for</span> (; li != le && ri != re; ++li, ++ri) {</div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>     assert(ri != right-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a41c8a73187b3feac6defb5c1e7987b36">param_end</a>() && <span class="stringliteral">"Param mismatch"</span>);</div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ParmVarDecl.html" title="ParmVarDecl - Represents a parameter to a function.">ParmVarDecl</a> *lparm = *li, *rparm = *ri;</div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span> </div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>     <span class="keywordflow">if</span> (!<a class="code" href="SemaDeclObjC_8cpp.html#a7ef1579e4b547212b2d10165006dace5">matchTypes</a>(<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>, strategy, lparm->getType(), rparm->getType()))</div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span> </div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount &&</div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>         lparm->hasAttr<<a class="code" href="classclang_1_1NSConsumedAttr.html">NSConsumedAttr</a>>() != rparm->hasAttr<<a class="code" href="classclang_1_1NSConsumedAttr.html">NSConsumedAttr</a>>())</div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>       <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>   }</div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span> }</div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span> </div>
+<div class="line"><a name="l02139"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#ac360dd63a191a325dc5ef08ff31e4600"> 2139</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#ac360dd63a191a325dc5ef08ff31e4600" title="Add the given method to the list of globally-known methods.">Sema::addMethodToGlobalList</a>(<a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a> *List, <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Method) {</div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>   <span class="comment">// Record at the head of the list whether there were 0, 1, or >= 2 methods</span></div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>   <span class="comment">// inside categories.</span></div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *</div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>         CD = dyn_cast<ObjCCategoryDecl>(Method-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>()))</div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>     <span class="keywordflow">if</span> (!CD->IsClassExtension() && List-><a class="code" href="structclang_1_1ObjCMethodList.html#af883fbea92f69d42ec3d23ec21426ab6">getBits</a>() < 2)</div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>         List-><a class="code" href="structclang_1_1ObjCMethodList.html#a9c2538109908eda1abea8188d806aaed">setBits</a>(List-><a class="code" href="structclang_1_1ObjCMethodList.html#af883fbea92f69d42ec3d23ec21426ab6">getBits</a>()+1);</div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span> </div>
+<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>   <span class="comment">// If the list is empty, make it a singleton list.</span></div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>   <span class="keywordflow">if</span> (List-><a class="code" href="structclang_1_1ObjCMethodList.html#a92770ff3cb7c8b72b0cdf07f2bda7b36">Method</a> == 0) {</div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>     List-><a class="code" href="structclang_1_1ObjCMethodList.html#a92770ff3cb7c8b72b0cdf07f2bda7b36">Method</a> = Method;</div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>     List-><a class="code" href="structclang_1_1ObjCMethodList.html#a4bb5f98ed1ad837d2b3e9df55dfd448a">setNext</a>(0);</div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>   }</div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>   </div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>   <span class="comment">// We've seen a method with this name, see if we have already seen this type</span></div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>   <span class="comment">// signature.</span></div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>   <a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a> *<a class="code" href="Format_8cpp.html#a367365df5b490f2ddb411318d9d421a9">Previous</a> = List;</div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>   <span class="keywordflow">for</span> (; List; Previous = List, List = List-><a class="code" href="structclang_1_1ObjCMethodList.html#a4ef59313a764d07f92175aeba593cd2d">getNext</a>()) {</div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>     <span class="comment">// If we are building a module, keep all of the methods.</span></div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().Modules && !<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().<a class="code" href="classclang_1_1LangOptions.html#afd139a4fe76990c1c01e77ae67cd1310" title="The name of the current module.">CurrentModule</a>.empty())</div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span> </div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Sema.html#abded456881381bd9aba81f6b7ffbd86a">MatchTwoMethodDeclarations</a>(Method, List->Method))</div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>     </div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>     <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *PrevObjCMethod = List->Method;</div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span> </div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>     <span class="comment">// Propagate the 'defined' bit.</span></div>
+<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>     <span class="keywordflow">if</span> (Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#af9fd315bab8178e3f0e77bb26150a1fe">isDefined</a>())</div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>       PrevObjCMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a0d40aeddd5c1adada29a2dd5356227b5">setDefined</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>     </div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>     <span class="comment">// If a method is deprecated, push it in the global pool.</span></div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>     <span class="comment">// This is used for better diagnostics.</span></div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>     <span class="keywordflow">if</span> (Method-><a class="code" href="classclang_1_1Decl.html#a01801a9e76ce39a4fe89e6e26d1a6b06" title="Determine whether this declaration is marked 'deprecated'.">isDeprecated</a>()) {</div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>       <span class="keywordflow">if</span> (!PrevObjCMethod-><a class="code" href="classclang_1_1Decl.html#a01801a9e76ce39a4fe89e6e26d1a6b06" title="Determine whether this declaration is marked 'deprecated'.">isDeprecated</a>())</div>
+<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>         List->Method = Method;</div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>     }</div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>     <span class="comment">// If new method is unavailable, push it into global pool</span></div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>     <span class="comment">// unless previous one is deprecated.</span></div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>     <span class="keywordflow">if</span> (Method-><a class="code" href="classclang_1_1Decl.html#a6c63f20232a8a1e35cfd0ab2e61e972d" title="Determine whether this declaration is marked 'unavailable'.">isUnavailable</a>()) {</div>
+<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>       <span class="keywordflow">if</span> (PrevObjCMethod-><a class="code" href="classclang_1_1Decl.html#a59880f2930b89626b5061e060e80fbdf" title="Determine the availability of the given declaration.">getAvailability</a>() < <a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307bad487c04bb68ba53ac91ce482697f2bd3">AR_Deprecated</a>)</div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>         List->Method = Method;</div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>     }</div>
+<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>     </div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>   }</div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>   </div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>   <span class="comment">// We have a new signature for an existing method - add it.</span></div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>   <span class="comment">// This is extremely rare. Only 1% of Cocoa selectors are "overloaded".</span></div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>   <a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a> *Mem = <a class="code" href="classclang_1_1Sema.html#ad9ac3c7cfb05748da3bab945eff00751">BumpAlloc</a>.Allocate<<a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a>>();</div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>   Previous-><a class="code" href="structclang_1_1ObjCMethodList.html#a4bb5f98ed1ad837d2b3e9df55dfd448a">setNext</a>(<span class="keyword">new</span> (Mem) <a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a>(Method, 0));</div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span> }</div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span> <span class="comment"></span></div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span> <span class="comment">/// \brief Read the contents of the method pool for a given selector from</span></div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span> <span class="comment">/// external storage.</span></div>
+<div class="line"><a name="l02195"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#aca030006d98e2d99abaa14a1ea9d9bde"> 2195</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#aca030006d98e2d99abaa14a1ea9d9bde" title="Read the contents of the method pool for a given selector from external storage.">Sema::ReadMethodPool</a>(<a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> Sel) {</div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>   assert(ExternalSource && <span class="stringliteral">"We need an external AST source"</span>);</div>
+<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>   ExternalSource-><a class="code" href="classclang_1_1ExternalSemaSource.html#a2ffd6ece2f0eec55fdcc9be1c2578290" title="Load the contents of the global method pool for a given selector.">ReadMethodPool</a>(Sel);</div>
+<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span> }</div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span> </div>
+<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span> <span class="keywordtype">void</span> Sema::AddMethodToGlobalPool(<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Method, <span class="keywordtype">bool</span> impl,</div>
+<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>                                  <span class="keywordtype">bool</span> instance) {</div>
+<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>   <span class="comment">// Ignore methods of invalid containers.</span></div>
+<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>   <span class="keywordflow">if</span> (cast<Decl>(Method-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>())->isInvalidDecl())</div>
+<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span> </div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>   <span class="keywordflow">if</span> (ExternalSource)</div>
+<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>     <a class="code" href="classclang_1_1Sema.html#aca030006d98e2d99abaa14a1ea9d9bde" title="Read the contents of the method pool for a given selector from external storage.">ReadMethodPool</a>(Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>());</div>
+<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>   </div>
+<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>   GlobalMethodPool::iterator Pos = <a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.find(Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>());</div>
+<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>   <span class="keywordflow">if</span> (Pos == <a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.end())</div>
+<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>     Pos = <a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.insert(std::make_pair(Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>(),</div>
+<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>                                            <a class="code" href="classclang_1_1Sema.html#aba13ff9a8aef9a8b8d3dfef4d3f1d64b">GlobalMethods</a>())).first;</div>
+<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>   </div>
+<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>   Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a0d40aeddd5c1adada29a2dd5356227b5">setDefined</a>(impl);</div>
+<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>   </div>
+<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>   <a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a> &Entry = instance ? Pos->second.first : Pos->second.second;</div>
+<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>   <a class="code" href="classclang_1_1Sema.html#ac360dd63a191a325dc5ef08ff31e4600" title="Add the given method to the list of globally-known methods.">addMethodToGlobalList</a>(&Entry, Method);</div>
+<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span> }</div>
+<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span> <span class="comment"></span></div>
+<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span> <span class="comment">/// Determines if this is an "acceptable" loose mismatch in the global</span></div>
+<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span> <span class="comment">/// method pool.  This exists mostly as a hack to get around certain</span></div>
+<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span> <span class="comment">/// global mismatches which we can't afford to make warnings / errors.</span></div>
+<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span> <span class="comment">/// Really, what we want is a way to take a method out of the global</span></div>
+<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span> <span class="comment">/// method pool.</span></div>
+<div class="line"><a name="l02225"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#acf7aef9eeb21202fcdd4be7f636de07b"> 2225</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaDeclObjC_8cpp.html#acf7aef9eeb21202fcdd4be7f636de07b">isAcceptableMethodMismatch</a>(<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *chosen,</div>
+<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>                                        <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *other) {</div>
+<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>   <span class="keywordflow">if</span> (!chosen-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a437ea0ebec5ba72fcf0084dd01654d4c">isInstanceMethod</a>())</div>
+<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span> </div>
+<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>   <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> sel = chosen-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>();</div>
+<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>   <span class="keywordflow">if</span> (!sel.<a class="code" href="classclang_1_1Selector.html#a27ff9883d243e82c10340d6146e49a7a">isUnarySelector</a>() || sel.<a class="code" href="classclang_1_1Selector.html#aa64896d1220d9750ecb2553af301971f" title="Retrieve the name at a given position in the selector.">getNameForSlot</a>(0) != <span class="stringliteral">"length"</span>)</div>
+<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span> </div>
+<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>   <span class="comment">// Don't complain about mismatches for -length if the method we</span></div>
+<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>   <span class="comment">// chose has an integral result type.</span></div>
+<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>   <span class="keywordflow">return</span> (chosen-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>()-><a class="code" href="classclang_1_1Type.html#a8bde7a56623fd89e9efafde792c56dac">isIntegerType</a>());</div>
+<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span> }</div>
+<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span> </div>
+<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Sema::LookupMethodInGlobalPool(<a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> Sel, <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> R,</div>
+<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>                                                <span class="keywordtype">bool</span> receiverIdOrClass,</div>
+<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>                                                <span class="keywordtype">bool</span> warn, <span class="keywordtype">bool</span> instance) {</div>
+<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>   <span class="keywordflow">if</span> (ExternalSource)</div>
+<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>     <a class="code" href="classclang_1_1Sema.html#aca030006d98e2d99abaa14a1ea9d9bde" title="Read the contents of the method pool for a given selector from external storage.">ReadMethodPool</a>(Sel);</div>
+<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>     </div>
+<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>   GlobalMethodPool::iterator Pos = <a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.find(Sel);</div>
+<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>   <span class="keywordflow">if</span> (Pos == <a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.end())</div>
+<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span> </div>
+<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>   <span class="comment">// Gather the non-hidden methods.</span></div>
+<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>   <a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a> &MethList = instance ? Pos->second.first : Pos->second.second;</div>
+<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<ObjCMethodDecl *, 4></a> Methods;</div>
+<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>   <span class="keywordflow">for</span> (<a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a> *M = &MethList; M; M = M-><a class="code" href="structclang_1_1ObjCMethodList.html#a4ef59313a764d07f92175aeba593cd2d">getNext</a>()) {</div>
+<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>     <span class="keywordflow">if</span> (M->Method && !M->Method->isHidden()) {</div>
+<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>       <span class="comment">// If we're not supposed to warn about mismatches, we're done.</span></div>
+<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>       <span class="keywordflow">if</span> (!warn)</div>
+<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>         <span class="keywordflow">return</span> M->Method;</div>
+<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span> </div>
+<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>       Methods.push_back(M->Method);</div>
+<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>     }</div>
+<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>   }</div>
+<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span> </div>
+<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>   <span class="comment">// If there aren't any visible methods, we're done.</span></div>
+<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>   <span class="comment">// FIXME: Recover if there are any known-but-hidden methods?</span></div>
+<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>   <span class="keywordflow">if</span> (Methods.empty())</div>
+<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span> </div>
+<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>   <span class="keywordflow">if</span> (Methods.size() == 1)</div>
+<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>     <span class="keywordflow">return</span> Methods[0];</div>
+<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span> </div>
+<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>   <span class="comment">// We found multiple methods, so we may have to complain.</span></div>
+<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>   <span class="keywordtype">bool</span> issueDiagnostic = <span class="keyword">false</span>, issueError = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span> </div>
+<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>   <span class="comment">// We support a warning which complains about *any* difference in</span></div>
+<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>   <span class="comment">// method signature.</span></div>
+<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>   <span class="keywordtype">bool</span> strictSelectorMatch =</div>
+<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>     (receiverIdOrClass && warn &&</div>
+<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>      (<a class="code" href="classclang_1_1Sema.html#ace9dfca18443fd122215c74657d33b53">Diags</a>.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a1a9de9de7e5ad8218fa06ca8568aa52c" title="Based on the way the client configured the DiagnosticsEngine object, classify the specified diagnosti...">getDiagnosticLevel</a>(diag::warn_strict_multiple_method_decl,</div>
+<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>                                R.<a class="code" href="classclang_1_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208">getBegin</a>())</div>
+<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>         != <a class="code" href="classclang_1_1DiagnosticsEngine.html#a94e5078973aa3a34432e91f3b26263e0a7576ca0c5417d008077e743b3d412234">DiagnosticsEngine::Ignored</a>));</div>
+<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>   <span class="keywordflow">if</span> (strictSelectorMatch) {</div>
+<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 1, N = Methods.size(); I != N; ++I) {</div>
+<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>       <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Sema.html#abded456881381bd9aba81f6b7ffbd86a">MatchTwoMethodDeclarations</a>(Methods[0], Methods[I], <a class="code" href="classclang_1_1Sema.html#a97c508e732eeaabb4da9aa7673fc4bd0a6117e2de62dad709edd43fb14ede8f07">MMS_strict</a>)) {</div>
+<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>         issueDiagnostic = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>       }</div>
+<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>     }</div>
+<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>   }</div>
+<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span> </div>
+<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>   <span class="comment">// If we didn't see any strict differences, we won't see any loose</span></div>
+<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>   <span class="comment">// differences.  In ARC, however, we also need to check for loose</span></div>
+<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>   <span class="comment">// mismatches, because most of them are errors.</span></div>
+<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>   <span class="keywordflow">if</span> (!strictSelectorMatch ||</div>
+<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>       (issueDiagnostic && <a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount))</div>
+<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 1, N = Methods.size(); I != N; ++I) {</div>
+<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>       <span class="comment">// This checks if the methods differ in type mismatch.</span></div>
+<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>       <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Sema.html#abded456881381bd9aba81f6b7ffbd86a">MatchTwoMethodDeclarations</a>(Methods[0], Methods[I], <a class="code" href="classclang_1_1Sema.html#a97c508e732eeaabb4da9aa7673fc4bd0a6e626c7a9317da4eed3485f23cee9dc0">MMS_loose</a>) &&</div>
+<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>           !<a class="code" href="SemaDeclObjC_8cpp.html#acf7aef9eeb21202fcdd4be7f636de07b">isAcceptableMethodMismatch</a>(Methods[0], Methods[I])) {</div>
+<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>         issueDiagnostic = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a5f632d714a520550786bde65d3771228">getLangOpts</a>().ObjCAutoRefCount)</div>
+<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>           issueError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>       }</div>
+<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>     }</div>
+<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span> </div>
+<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>   <span class="keywordflow">if</span> (issueDiagnostic) {</div>
+<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>     <span class="keywordflow">if</span> (issueError)</div>
+<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(R.<a class="code" href="classclang_1_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208">getBegin</a>(), diag::err_arc_multiple_method_decl) << Sel << R;</div>
+<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strictSelectorMatch)</div>
+<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(R.<a class="code" href="classclang_1_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208">getBegin</a>(), diag::warn_strict_multiple_method_decl) << Sel << R;</div>
+<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(R.<a class="code" href="classclang_1_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208">getBegin</a>(), diag::warn_multiple_method_decl) << Sel << R;</div>
+<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span> </div>
+<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>     <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Methods[0]->getLocStart(),</div>
+<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>          issueError ? diag::note_possibility : diag::note_using)</div>
+<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>       << Methods[0]->getSourceRange();</div>
+<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 1, N = Methods.size(); I != N; ++I) {</div>
+<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>       <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Methods[I]->getLocStart(), diag::note_also_found)</div>
+<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>         << Methods[I]->getSourceRange();</div>
+<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>   }</div>
+<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>   }</div>
+<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>   <span class="keywordflow">return</span> Methods[0];</div>
+<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span> }</div>
+<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span> </div>
+<div class="line"><a name="l02324"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a9b0ae55fdbe0c4100ad13511d2c3cf99"> 2324</a></span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *<a class="code" href="classclang_1_1Sema.html#a9b0ae55fdbe0c4100ad13511d2c3cf99">Sema::LookupImplementedMethodInGlobalPool</a>(<a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> Sel) {</div>
+<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>   GlobalMethodPool::iterator Pos = <a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.find(Sel);</div>
+<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>   <span class="keywordflow">if</span> (Pos == <a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.end())</div>
+<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span> </div>
+<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>   <a class="code" href="classclang_1_1Sema.html#aba13ff9a8aef9a8b8d3dfef4d3f1d64b">GlobalMethods</a> &Methods = Pos->second;</div>
+<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span> </div>
+<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>   <span class="keywordflow">if</span> (Methods.first.Method && Methods.first.Method->isDefined())</div>
+<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>     <span class="keywordflow">return</span> Methods.first.Method;</div>
+<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>   <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (Methods.second.Method && Methods.second.Method->isDefined())</div>
+<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>     <span class="keywordflow">return</span> Methods.second.Method;</div>
+<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span> }</div>
+<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span> </div>
+<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l02339"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#a5697c112e53817c7e3ac046abb54aeef"> 2339</a></span> <a class="code" href="SemaDeclObjC_8cpp.html#a5697c112e53817c7e3ac046abb54aeef">HelperSelectorsForTypoCorrection</a>(</div>
+<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>                       <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<const ObjCMethodDecl *></a> &BestMethod,</div>
+<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>                       StringRef <a class="code" href="CommentSema_8cpp.html#ace01d1978435b977e8a71c3196358cc1">Typo</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> * Method) {</div>
+<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>   <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <a class="code" href="CommentSema_8cpp.html#a3f310eaad001980d5df3c330a0acf44a">MaxEditDistance</a> = 1;</div>
+<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>   <span class="keywordtype">unsigned</span> <a class="code" href="CommentSema_8cpp.html#ac9b35cfcc6698eb2b8e3244d74e6d10d">BestEditDistance</a> = MaxEditDistance + 1;</div>
+<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>   std::string MethodName = Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>().<a class="code" href="classclang_1_1Selector.html#a0c56d387ecb718cc92340804fc575979" title="Derive the full selector name (e.g. "foo:bar:") and return it as an std::string.">getAsString</a>();</div>
+<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>   </div>
+<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>   <span class="keywordtype">unsigned</span> MinPossibleEditDistance = abs((<span class="keywordtype">int</span>)MethodName.size() - (int)Typo.size());</div>
+<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>   <span class="keywordflow">if</span> (MinPossibleEditDistance > 0 &&</div>
+<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>       Typo.size() / MinPossibleEditDistance < 1)</div>
+<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>   <span class="keywordtype">unsigned</span> EditDistance = Typo.edit_distance(MethodName, <span class="keyword">true</span>, MaxEditDistance);</div>
+<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>   <span class="keywordflow">if</span> (EditDistance > MaxEditDistance)</div>
+<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>   <span class="keywordflow">if</span> (EditDistance == BestEditDistance)</div>
+<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>     BestMethod.push_back(Method);</div>
+<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (EditDistance < BestEditDistance) {</div>
+<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>     BestMethod.clear();</div>
+<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>     BestMethod.push_back(Method);</div>
+<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>   }</div>
+<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span> }</div>
+<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span> </div>
+<div class="line"><a name="l02361"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#a8981bd826e9723b6e9fa26127af84a8b"> 2361</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SemaDeclObjC_8cpp.html#a8981bd826e9723b6e9fa26127af84a8b">HelperIsMethodInObjCType</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> Sel,</div>
+<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>                                      <a class="code" href="classclang_1_1QualType.html">QualType</a> ObjectType) {</div>
+<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>   <span class="keywordflow">if</span> (ObjectType.<a class="code" href="classclang_1_1QualType.html#a8f87f58000490ad01cd09add1f27d7ac" title="isNull - Return true if this QualType doesn't point to a type yet.">isNull</a>())</div>
+<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>   <span class="keywordflow">if</span> (S.<a class="code" href="classclang_1_1Sema.html#a0151fedc4b5aea3fc0f2c7d26fd7fa85" title="LookupMethodInType - Look up a method in an ObjCObjectType.">LookupMethodInObjectType</a>(Sel, ObjectType, <span class="keyword">true</span><span class="comment">/*Instance method*/</span>))</div>
+<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>   <span class="keywordflow">return</span> S.<a class="code" href="classclang_1_1Sema.html#a0151fedc4b5aea3fc0f2c7d26fd7fa85" title="LookupMethodInType - Look up a method in an ObjCObjectType.">LookupMethodInObjectType</a>(Sel, ObjectType, <span class="keyword">false</span><span class="comment">/*Class method*/</span>) != 0;</div>
+<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span> }</div>
+<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span> </div>
+<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *</div>
+<div class="line"><a name="l02371"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a7c537b53d825386c2a231e1a71f75091"> 2371</a></span> <a class="code" href="classclang_1_1Sema.html#a7c537b53d825386c2a231e1a71f75091">Sema::SelectorsForTypoCorrection</a>(<a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> Sel,</div>
+<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>                                  <a class="code" href="classclang_1_1QualType.html">QualType</a> ObjectType) {</div>
+<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>   <span class="keywordtype">unsigned</span> NumArgs = Sel.<a class="code" href="classclang_1_1Selector.html#ab184ee3814539b0c0d4cfbf47c448cc7">getNumArgs</a>();</div>
+<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<const ObjCMethodDecl *, 8></a> Methods;</div>
+<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>   <span class="keywordtype">bool</span> ObjectIsId = <span class="keyword">true</span>, ObjectIsClass = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>   <span class="keywordflow">if</span> (ObjectType.<a class="code" href="classclang_1_1QualType.html#a8f87f58000490ad01cd09add1f27d7ac" title="isNull - Return true if this QualType doesn't point to a type yet.">isNull</a>())</div>
+<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>     ObjectIsId = ObjectIsClass = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!ObjectType-><a class="code" href="classclang_1_1Type.html#aa9be9c3ceec53da8edbbb86bbf895fff">isObjCObjectPointerType</a>())</div>
+<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a> *ObjCPtr =</div>
+<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>            ObjectType-><a class="code" href="classclang_1_1Type.html#a4e46cfb96824987d41a488a8ef52dfa6">getAsObjCInterfacePointerType</a>()) {</div>
+<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>     ObjectType = <a class="code" href="classclang_1_1QualType.html">QualType</a>(ObjCPtr->getInterfaceType(), 0);</div>
+<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>     ObjectIsId = ObjectIsClass = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>   }</div>
+<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ObjectType-><a class="code" href="classclang_1_1Type.html#a804794071498377a09e30e5e3399580e">isObjCIdType</a>() || ObjectType-><a class="code" href="classclang_1_1Type.html#aa60914a09293ea3aaf876bf9a5890f06">isObjCQualifiedIdType</a>())</div>
+<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>     ObjectIsClass = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ObjectType-><a class="code" href="classclang_1_1Type.html#a3eec62972e7cfc1f7f07d42d38b5323d">isObjCClassType</a>() || ObjectType-><a class="code" href="classclang_1_1Type.html#abf53c8015e1e73c748abb4988e066038">isObjCQualifiedClassType</a>())</div>
+<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>     ObjectIsId = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>   </div>
+<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>   <span class="keywordflow">for</span> (GlobalMethodPool::iterator b = <a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.begin(),</div>
+<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>        e = <a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.end(); b != e; b++) {</div>
+<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>     <span class="comment">// instance methods</span></div>
+<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>     <span class="keywordflow">for</span> (<a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a> *M = &b->second.first; M; M=M-><a class="code" href="structclang_1_1ObjCMethodList.html#a4ef59313a764d07f92175aeba593cd2d">getNext</a>())</div>
+<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>       <span class="keywordflow">if</span> (M->Method &&</div>
+<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>           (M->Method->getSelector().getNumArgs() == NumArgs) &&</div>
+<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>           (M->Method->getSelector() != Sel)) {</div>
+<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>         <span class="keywordflow">if</span> (ObjectIsId)</div>
+<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>           Methods.push_back(M->Method);</div>
+<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!ObjectIsClass &&</div>
+<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>                  <a class="code" href="SemaDeclObjC_8cpp.html#a8981bd826e9723b6e9fa26127af84a8b">HelperIsMethodInObjCType</a>(*<span class="keyword">this</span>, M->Method->getSelector(), ObjectType))</div>
+<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>           Methods.push_back(M->Method);</div>
+<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>       }</div>
+<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>     <span class="comment">// class methods</span></div>
+<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>     <span class="keywordflow">for</span> (<a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a> *M = &b->second.second; M; M=M-><a class="code" href="structclang_1_1ObjCMethodList.html#a4ef59313a764d07f92175aeba593cd2d">getNext</a>())</div>
+<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>       <span class="keywordflow">if</span> (M->Method &&</div>
+<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>           (M->Method->getSelector().getNumArgs() == NumArgs) &&</div>
+<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>           (M->Method->getSelector() != Sel)) {</div>
+<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>         <span class="keywordflow">if</span> (ObjectIsClass)</div>
+<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>           Methods.push_back(M->Method);</div>
+<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>         <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!ObjectIsId &&</div>
+<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>                  <a class="code" href="SemaDeclObjC_8cpp.html#a8981bd826e9723b6e9fa26127af84a8b">HelperIsMethodInObjCType</a>(*<span class="keyword">this</span>, M->Method->getSelector(), ObjectType))</div>
+<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>           Methods.push_back(M->Method);</div>
+<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>       }</div>
+<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>   }</div>
+<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>   </div>
+<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<const ObjCMethodDecl *, 8></a> SelectedMethods;</div>
+<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Methods.size(); i < e; i++) {</div>
+<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>     <a class="code" href="SemaDeclObjC_8cpp.html#a5697c112e53817c7e3ac046abb54aeef">HelperSelectorsForTypoCorrection</a>(SelectedMethods,</div>
+<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>                                      Sel.<a class="code" href="classclang_1_1Selector.html#a0c56d387ecb718cc92340804fc575979" title="Derive the full selector name (e.g. "foo:bar:") and return it as an std::string.">getAsString</a>(), Methods[i]);</div>
+<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>   }</div>
+<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>   <span class="keywordflow">return</span> (SelectedMethods.size() == 1) ? SelectedMethods[0] : <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
+<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span> }</div>
+<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span> </div>
+<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l02427"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#afe67009e0c12e8ac9c7e6fc837b7fc55"> 2427</a></span> <a class="code" href="SemaDeclObjC_8cpp.html#afe67009e0c12e8ac9c7e6fc837b7fc55">HelperToDiagnoseMismatchedMethodsInGlobalPool</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>,</div>
+<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>                                               <a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a> &MethList) {</div>
+<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>   <a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a> *M = &MethList;</div>
+<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>   <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *TargetMethod = M-><a class="code" href="structclang_1_1ObjCMethodList.html#a92770ff3cb7c8b72b0cdf07f2bda7b36">Method</a>;</div>
+<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>   <span class="keywordflow">while</span> (TargetMethod &&</div>
+<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>          isa<ObjCImplDecl>(TargetMethod-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>())) {</div>
+<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>     M = M-><a class="code" href="structclang_1_1ObjCMethodList.html#a4ef59313a764d07f92175aeba593cd2d">getNext</a>();</div>
+<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>     TargetMethod = M ? M-><a class="code" href="structclang_1_1ObjCMethodList.html#a92770ff3cb7c8b72b0cdf07f2bda7b36">Method</a> : 0;</div>
+<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>   }</div>
+<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>   <span class="keywordflow">if</span> (!TargetMethod)</div>
+<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>   <span class="keywordtype">bool</span> FirstTime = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>   <span class="keywordflow">for</span> (M = M-><a class="code" href="structclang_1_1ObjCMethodList.html#a4ef59313a764d07f92175aeba593cd2d">getNext</a>(); M; M=M-><a class="code" href="structclang_1_1ObjCMethodList.html#a4ef59313a764d07f92175aeba593cd2d">getNext</a>()) {</div>
+<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>     <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *MatchingMethodDecl = M-><a class="code" href="structclang_1_1ObjCMethodList.html#a92770ff3cb7c8b72b0cdf07f2bda7b36">Method</a>;</div>
+<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>     <span class="keywordflow">if</span> (isa<ObjCImplDecl>(MatchingMethodDecl-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>()))</div>
+<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>     <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#abded456881381bd9aba81f6b7ffbd86a">MatchTwoMethodDeclarations</a>(TargetMethod,</div>
+<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>                                       MatchingMethodDecl, <a class="code" href="classclang_1_1Sema.html#a97c508e732eeaabb4da9aa7673fc4bd0a6e626c7a9317da4eed3485f23cee9dc0">Sema::MMS_loose</a>)) {</div>
+<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>       <span class="keywordflow">if</span> (FirstTime) {</div>
+<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>         FirstTime = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>         S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(TargetMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warning_multiple_selectors)</div>
+<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>         << TargetMethod-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>();</div>
+<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>       }</div>
+<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>       S.<a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(MatchingMethodDecl-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_also_found);</div>
+<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>     }</div>
+<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>   }</div>
+<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span> }</div>
+<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span> </div>
+<div class="line"><a name="l02455"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#ab9d928b24453a2ab15362cf610a68225"> 2455</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#ab9d928b24453a2ab15362cf610a68225">Sema::DiagnoseMismatchedMethodsInGlobalPool</a>() {</div>
+<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>   <span class="keywordtype">unsigned</span> <a class="code" href="AnalysisDiagnostic_8h.html#a628471a2bdbc3c1b61ce5b3b44f8bd20">DIAG</a> = diag::warning_multiple_selectors;</div>
+<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#ace9dfca18443fd122215c74657d33b53">Diags</a>.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a1a9de9de7e5ad8218fa06ca8568aa52c" title="Based on the way the client configured the DiagnosticsEngine object, classify the specified diagnosti...">getDiagnosticLevel</a>(DIAG, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>())</div>
+<div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>       == <a class="code" href="classclang_1_1DiagnosticsEngine.html#a94e5078973aa3a34432e91f3b26263e0a7576ca0c5417d008077e743b3d412234">DiagnosticsEngine::Ignored</a>)</div>
+<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>   <span class="keywordflow">for</span> (GlobalMethodPool::iterator b = <a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.begin(),</div>
+<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>        e = <a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.end(); b != e; b++) {</div>
+<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>     <span class="comment">// first, instance methods</span></div>
+<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>     <a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a> &InstMethList = b->second.first;</div>
+<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>     <a class="code" href="SemaDeclObjC_8cpp.html#afe67009e0c12e8ac9c7e6fc837b7fc55">HelperToDiagnoseMismatchedMethodsInGlobalPool</a>(*<span class="keyword">this</span>, InstMethList);</div>
+<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>     <span class="comment">// second, class methods</span></div>
+<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>     <a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a> &ClsMethList = b->second.second;</div>
+<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>     <a class="code" href="SemaDeclObjC_8cpp.html#afe67009e0c12e8ac9c7e6fc837b7fc55">HelperToDiagnoseMismatchedMethodsInGlobalPool</a>(*<span class="keyword">this</span>, ClsMethList);</div>
+<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>   }</div>
+<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span> }</div>
+<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span> <span class="comment"></span></div>
+<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span> <span class="comment">/// DiagnoseDuplicateIvars -</span></div>
+<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span> <span class="comment">/// Check for duplicate ivars in the entire class at the start of </span></div>
+<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span> <span class="comment">/// \@implementation. This becomes necesssary because class extension can</span></div>
+<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span> <span class="comment">/// add ivars to a class in random order which will not be known until</span></div>
+<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span> <span class="comment">/// class's \@implementation is seen.</span></div>
+<div class="line"><a name="l02476"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#ad70333557b86245aaab42a3ca785399a"> 2476</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1Sema.html#ad70333557b86245aaab42a3ca785399a">Sema::DiagnoseDuplicateIvars</a>(<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>, </div>
+<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>                                   <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *SID) {</div>
+<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">ObjCInterfaceDecl::ivar_iterator</a> IVI = ID-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a4b61df735b3d6609f7d1c1a895a23ec4">ivar_begin</a>(),</div>
+<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>        IVE = ID-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#aef3374a41feb65037fd39f6e9f3cdf2b">ivar_end</a>(); IVI != IVE; ++IVI) {</div>
+<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>     <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a>* Ivar = *IVI;</div>
+<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>     <span class="keywordflow">if</span> (Ivar-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>())</div>
+<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II = Ivar-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()) {</div>
+<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>       <a class="code" href="classclang_1_1ObjCIvarDecl.html">ObjCIvarDecl</a>* prevIvar = SID-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a1a0c954cf7c0fbbf77b4bf65c5a5c604">lookupInstanceVariable</a>(II);</div>
+<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>       <span class="keywordflow">if</span> (prevIvar) {</div>
+<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Ivar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_duplicate_member) << II;</div>
+<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(prevIvar-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_declaration);</div>
+<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>         Ivar-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>       }</div>
+<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>     }</div>
+<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>   }</div>
+<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span> }</div>
+<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span> </div>
+<div class="line"><a name="l02494"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a6cbd0e3725f12e7d56376d55dbac953c"> 2494</a></span> <a class="code" href="classclang_1_1Sema.html#a1e374fbe43058aa6cd1da5e50952b656">Sema::ObjCContainerKind</a> <a class="code" href="classclang_1_1Sema.html#a6cbd0e3725f12e7d56376d55dbac953c">Sema::getObjCContainerKind</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>   <span class="keywordflow">switch</span> (<a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>-><a class="code" href="classclang_1_1DeclContext.html#a5e0c621abad65a0be1989f1c346af3ef">getDeclKind</a>()) {</div>
+<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>     <span class="keywordflow">case</span> Decl::ObjCInterface:</div>
+<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a1e374fbe43058aa6cd1da5e50952b656a41f89b96db02ea545bc681e6e513f0f7">Sema::OCK_Interface</a>;</div>
+<div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>     <span class="keywordflow">case</span> Decl::ObjCProtocol:</div>
+<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a1e374fbe43058aa6cd1da5e50952b656afe5957ff1a96e34d99849639282409d3">Sema::OCK_Protocol</a>;</div>
+<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>     <span class="keywordflow">case</span> Decl::ObjCCategory:</div>
+<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>       <span class="keywordflow">if</span> (dyn_cast<ObjCCategoryDecl>(<a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>)->IsClassExtension())</div>
+<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>         <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a1e374fbe43058aa6cd1da5e50952b656a557548d125a0c260d4ce37bf4fde645f">Sema::OCK_ClassExtension</a>;</div>
+<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>         <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a1e374fbe43058aa6cd1da5e50952b656ad10b73bb77ca19c1cf2aed47a26816d7">Sema::OCK_Category</a>;</div>
+<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>     <span class="keywordflow">case</span> Decl::ObjCImplementation:</div>
+<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a1e374fbe43058aa6cd1da5e50952b656ae329490d0643a1939794e2ea35e02ea9">Sema::OCK_Implementation</a>;</div>
+<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>     <span class="keywordflow">case</span> Decl::ObjCCategoryImpl:</div>
+<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a1e374fbe43058aa6cd1da5e50952b656afd7150be70261b90acd116766998e5cc">Sema::OCK_CategoryImplementation</a>;</div>
+<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span> </div>
+<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#a1e374fbe43058aa6cd1da5e50952b656afdb0fe7942d76c91d5c9be497f41f8a6">Sema::OCK_None</a>;</div>
+<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>   }</div>
+<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span> }</div>
+<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span> </div>
+<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span> <span class="comment">// Note: For class/category implementations, allMethods is always null.</span></div>
+<div class="line"><a name="l02516"></a><span class="lineno"><a class="code" href="classclang_1_1Sema.html#a9fe337d430c66c29b0dc3a9c60369680"> 2516</a></span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Sema.html#a9fe337d430c66c29b0dc3a9c60369680">Sema::ActOnAtEnd</a>(<a class="code" href="classclang_1_1Scope.html">Scope</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> AtEnd, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Decl *></a> allMethods,</div>
+<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>                        <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<DeclGroupPtrTy></a> allTUVars) {</div>
+<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a6cbd0e3725f12e7d56376d55dbac953c">getObjCContainerKind</a>() == <a class="code" href="classclang_1_1Sema.html#a1e374fbe43058aa6cd1da5e50952b656afdb0fe7942d76c91d5c9be497f41f8a6">Sema::OCK_None</a>)</div>
+<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span> </div>
+<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>   assert(AtEnd.<a class="code" href="classclang_1_1SourceRange.html#acdaac0809b0eec9ce9ec88e1a9da7fb6">isValid</a>() && <span class="stringliteral">"Invalid location for '@end'"</span>);</div>
+<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span> </div>
+<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>   <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *OCD = dyn_cast<<a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a>>(<a class="code" href="classclang_1_1Sema.html#a915a017e1ec7e24452d90bebe226c8cc" title="CurContext - This is the current declaration context of parsing.">CurContext</a>);</div>
+<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>   <a class="code" href="classclang_1_1Decl.html">Decl</a> *ClassDecl = cast<Decl>(OCD);</div>
+<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>   </div>
+<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>   <span class="keywordtype">bool</span> isInterfaceDeclKind =</div>
+<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>         isa<ObjCInterfaceDecl>(ClassDecl) || isa<ObjCCategoryDecl>(ClassDecl)</div>
+<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>          || isa<ObjCProtocolDecl>(ClassDecl);</div>
+<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>   <span class="keywordtype">bool</span> checkIdenticalMethods = isa<ObjCImplementationDecl>(ClassDecl);</div>
+<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span> </div>
+<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>   <span class="comment">// FIXME: Remove these and use the ObjCContainerDecl/DeclContext.</span></div>
+<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>   llvm::DenseMap<Selector, const ObjCMethodDecl*> InsMap;</div>
+<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>   llvm::DenseMap<Selector, const ObjCMethodDecl*> ClsMap;</div>
+<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span> </div>
+<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = allMethods.size(); i != e; i++ ) {</div>
+<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>     <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Method =</div>
+<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>       cast_or_null<ObjCMethodDecl>(allMethods[i]);</div>
+<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span> </div>
+<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>     <span class="keywordflow">if</span> (!Method) <span class="keywordflow">continue</span>;  <span class="comment">// Already issued a diagnostic.</span></div>
+<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>     <span class="keywordflow">if</span> (Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a437ea0ebec5ba72fcf0084dd01654d4c">isInstanceMethod</a>()) {<span class="comment"></span></div>
+<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span> <span class="comment">      /// Check for instance method of the same name with incompatible types</span></div>
+<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span> <span class="comment"></span>      <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *&PrevMethod = InsMap[Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>()];</div>
+<div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>       <span class="keywordtype">bool</span> <a class="code" href="namespaceclang_1_1ast__matchers.html#a58409ce605d979d1d1e0a600ec417a0a" title="Returns the results of matching Matcher on Node.">match</a> = PrevMethod ? <a class="code" href="classclang_1_1Sema.html#abded456881381bd9aba81f6b7ffbd86a">MatchTwoMethodDeclarations</a>(Method, PrevMethod)</div>
+<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>                               : <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>       <span class="keywordflow">if</span> ((isInterfaceDeclKind && PrevMethod && !match)</div>
+<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>           || (checkIdenticalMethods && match)) {</div>
+<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Method-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_duplicate_method_decl)</div>
+<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>             << Method-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PrevMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_declaration);</div>
+<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>         Method-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>         <span class="keywordflow">if</span> (PrevMethod) {</div>
+<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>           Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a677f921616a4a17df80766a83f2fcfa6">setAsRedeclaration</a>(PrevMethod);</div>
+<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>           <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a091e2575135f7f9f1aeb25ba0090bfde">getSourceManager</a>().<a class="code" href="classclang_1_1SourceManager.html#a99c639318222119c75ea9c12f1aa5cf2" title="Returns if a SourceLocation is in a system header.">isInSystemHeader</a>(</div>
+<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>                  Method-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>()))</div>
+<div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>             <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Method-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_duplicate_method_decl)</div>
+<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>               << Method-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PrevMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_declaration);</div>
+<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>         }</div>
+<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>         InsMap[Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>()] = Method;<span class="comment"></span></div>
+<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span> <span class="comment">        /// The following allows us to typecheck messages to "id".</span></div>
+<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span> <span class="comment"></span>        <a class="code" href="classclang_1_1Sema.html#a6fd92927cc2d97aa2c444f9ac9ec9398">AddInstanceMethodToGlobalPool</a>(Method);</div>
+<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>       }</div>
+<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>     } <span class="keywordflow">else</span> {<span class="comment"></span></div>
+<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span> <span class="comment">      /// Check for class method of the same name with incompatible types</span></div>
+<div class="line"><a name="l02566"></a><span class="lineno"> 2566</span> <span class="comment"></span>      <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *&PrevMethod = ClsMap[Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>()];</div>
+<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>       <span class="keywordtype">bool</span> <a class="code" href="namespaceclang_1_1ast__matchers.html#a58409ce605d979d1d1e0a600ec417a0a" title="Returns the results of matching Matcher on Node.">match</a> = PrevMethod ? <a class="code" href="classclang_1_1Sema.html#abded456881381bd9aba81f6b7ffbd86a">MatchTwoMethodDeclarations</a>(Method, PrevMethod)</div>
+<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>                               : <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>       <span class="keywordflow">if</span> ((isInterfaceDeclKind && PrevMethod && !match)</div>
+<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>           || (checkIdenticalMethods && match)) {</div>
+<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Method-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::err_duplicate_method_decl)</div>
+<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>           << Method-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PrevMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_declaration);</div>
+<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>         Method-><a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>();</div>
+<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>         <span class="keywordflow">if</span> (PrevMethod) {</div>
+<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>           Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a677f921616a4a17df80766a83f2fcfa6">setAsRedeclaration</a>(PrevMethod);</div>
+<div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>           <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Sema.html#a3ccddacb1f4f71b084296175cc9e5b0e">Context</a>.<a class="code" href="classclang_1_1ASTContext.html#a091e2575135f7f9f1aeb25ba0090bfde">getSourceManager</a>().<a class="code" href="classclang_1_1SourceManager.html#a99c639318222119c75ea9c12f1aa5cf2" title="Returns if a SourceLocation is in a system header.">isInSystemHeader</a>(</div>
+<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>                  Method-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>()))</div>
+<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>             <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(Method-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::warn_duplicate_method_decl)</div>
+<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>               << Method-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>();</div>
+<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(PrevMethod-><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), diag::note_previous_declaration);</div>
+<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>         }</div>
+<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>         ClsMap[Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>()] = Method;</div>
+<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>         <a class="code" href="classclang_1_1Sema.html#aad40f178d8aef25fc9a84bf2cdb255a3" title="AddFactoryMethodToGlobalPool - Same as above, but for factory methods.">AddFactoryMethodToGlobalPool</a>(Method);</div>
+<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>       }</div>
+<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>     }</div>
+<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>   }</div>
+<div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>   <span class="keywordflow">if</span> (isa<ObjCInterfaceDecl>(ClassDecl)) {</div>
+<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>     <span class="comment">// Nothing to do here.</span></div>
+<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *C = dyn_cast<ObjCCategoryDecl>(ClassDecl)) {</div>
+<div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>     <span class="comment">// Categories are used to extend the class by declaring new methods.</span></div>
+<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>     <span class="comment">// By the same token, they are also used to add new properties. No</span></div>
+<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>     <span class="comment">// need to compare the added property to those in the class.</span></div>
+<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span> </div>
+<div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>     <span class="keywordflow">if</span> (C->IsClassExtension()) {</div>
+<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>       <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *CCPrimary = C->getClassInterface();</div>
+<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>       <a class="code" href="classclang_1_1Sema.html#aa386b64d7c733a7e8ba8123461f0dc3f">DiagnoseClassExtensionDupMethods</a>(C, CCPrimary);</div>
+<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>     }</div>
+<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>   }</div>
+<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *CDecl = dyn_cast<ObjCContainerDecl>(ClassDecl)) {</div>
+<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>     <span class="keywordflow">if</span> (CDecl->getIdentifier())</div>
+<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>       <span class="comment">// ProcessPropertyDecl is responsible for diagnosing conflicts with any</span></div>
+<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>       <span class="comment">// user-defined setter/getter. It also synthesizes setter/getter methods</span></div>
+<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>       <span class="comment">// and adds them to the DeclContext and global method pools.</span></div>
+<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">ObjCContainerDecl::prop_iterator</a> I = CDecl->prop_begin(),</div>
+<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>                                             E = CDecl->prop_end();</div>
+<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>            I != E; ++I)</div>
+<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>         <a class="code" href="classclang_1_1Sema.html#a171970a77b05346b320021d6d97dafc3">ProcessPropertyDecl</a>(*I, CDecl);</div>
+<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>     CDecl->setAtEndRange(AtEnd);</div>
+<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>   }</div>
+<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *IC=dyn_cast<ObjCImplementationDecl>(ClassDecl)) {</div>
+<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>     IC->setAtEndRange(AtEnd);</div>
+<div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a>* IDecl = IC->getClassInterface()) {</div>
+<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>       <span class="comment">// Any property declared in a class extension might have user</span></div>
+<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>       <span class="comment">// declared setter or getter in current class extension or one</span></div>
+<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>       <span class="comment">// of the other class extensions. Mark them as synthesized as</span></div>
+<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>       <span class="comment">// property will be synthesized when property with same name is</span></div>
+<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>       <span class="comment">// seen in the @implementation.</span></div>
+<div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl_1_1filtered__category__iterator.html" title="Iterator that walks over the list of categories, filtering out those that do not meet specific criter...">ObjCInterfaceDecl::visible_extensions_iterator</a></div>
+<div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>              Ext = IDecl->visible_extensions_begin(),</div>
+<div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>              ExtEnd = IDecl->visible_extensions_end();</div>
+<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>            Ext != ExtEnd; ++Ext) {</div>
+<div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>         <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">ObjCContainerDecl::prop_iterator</a> I = Ext->prop_begin(),</div>
+<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>              E = Ext->prop_end(); I != E; ++I) {</div>
+<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>           <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Property = *I;</div>
+<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>           <span class="comment">// Skip over properties declared @dynamic</span></div>
+<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>           <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html">ObjCPropertyImplDecl</a> *PIDecl</div>
+<div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>               = IC->FindPropertyImplDecl(Property-><a class="code" href="classclang_1_1NamedDecl.html#a554752f8f43eea0e6288da7205167fe2">getIdentifier</a>()))</div>
+<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>             <span class="keywordflow">if</span> (PIDecl->getPropertyImplementation() </div>
+<div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>                   == <a class="code" href="classclang_1_1ObjCPropertyImplDecl.html#acdb7be10674a19eac70b6bdb1face435a7fabe790aec6ffb4bea226668ac8787a">ObjCPropertyImplDecl::Dynamic</a>)</div>
+<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>               <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02633"></a><span class="lineno"> 2633</span> </div>
+<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>           <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl_1_1filtered__category__iterator.html" title="Iterator that walks over the list of categories, filtering out those that do not meet specific criter...">ObjCInterfaceDecl::visible_extensions_iterator</a></div>
+<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>                  Ext = IDecl->visible_extensions_begin(),</div>
+<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>                  ExtEnd = IDecl->visible_extensions_end();</div>
+<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>                Ext != ExtEnd; ++Ext) {</div>
+<div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>             <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *GetterMethod</div>
+<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>                   = Ext->getInstanceMethod(Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a403f7866008e173bf1346ccef5221f99">getGetterName</a>()))</div>
+<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>               GetterMethod->setPropertyAccessor(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>             <span class="keywordflow">if</span> (!Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#a66d0a870cb7a45e334f4400956781dbf" title="isReadOnly - Return true iff the property has a setter.">isReadOnly</a>())</div>
+<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>               <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *SetterMethod</div>
+<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>                     = Ext->getInstanceMethod(Property-><a class="code" href="classclang_1_1ObjCPropertyDecl.html#aa7d97f612763f8d63f2b4571c14d14f3">getSetterName</a>()))</div>
+<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>                 SetterMethod->setPropertyAccessor(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>           }</div>
+<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>         }</div>
+<div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>       }</div>
+<div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>       <a class="code" href="classclang_1_1Sema.html#ac0d91ffb312a58b270d5b41c9e7e7cfd">ImplMethodsVsClassMethods</a>(S, IC, IDecl);</div>
+<div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>       <a class="code" href="classclang_1_1Sema.html#adf80ec954a4cfe32cbbdf799d65d6634">AtomicPropertySetterGetterRules</a>(IC, IDecl);</div>
+<div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>       <a class="code" href="classclang_1_1Sema.html#a62f383f13827ba06a22770b29b089232">DiagnoseOwningPropertyGetterSynthesis</a>(IC);</div>
+<div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>   </div>
+<div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>       <span class="keywordtype">bool</span> HasRootClassAttr = IDecl->hasAttr<<a class="code" href="classclang_1_1ObjCRootClassAttr.html">ObjCRootClassAttr</a>>();</div>
+<div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>       <span class="keywordflow">if</span> (IDecl->getSuperClass() == <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>) {</div>
+<div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>         <span class="comment">// This class has no superclass, so check that it has been marked with</span></div>
+<div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>         <span class="comment">// __attribute((objc_root_class)).</span></div>
+<div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>         <span class="keywordflow">if</span> (!HasRootClassAttr) {</div>
+<div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>           <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> DeclLoc(IDecl->getLocation());</div>
+<div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>           <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> SuperClassLoc(<a class="code" href="classclang_1_1Sema.html#a6829f2b169c74ad544c53a8b1415061b">PP</a>.<a class="code" href="classclang_1_1Preprocessor.html#aef7193e9d262ea6852d666beb28dc1a0" title="Computes the source location just past the end of the token at this source location.">getLocForEndOfToken</a>(DeclLoc));</div>
+<div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>           <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(DeclLoc, diag::warn_objc_root_class_missing)</div>
+<div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>             << IDecl->getIdentifier();</div>
+<div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>           <span class="comment">// See if NSObject is in the current scope, and if it is, suggest</span></div>
+<div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>           <span class="comment">// adding " : NSObject " to the class declaration.</span></div>
+<div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>           <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *IF = <a class="code" href="classclang_1_1Sema.html#a48d86d16f21c7156e76e364727e3beea" title="Look up a name, looking for a single declaration. Return null if the results were absent...">LookupSingleName</a>(<a class="code" href="classclang_1_1Sema.html#ac4a2923573dc0610e557c98a19f3e1b9">TUScope</a>,</div>
+<div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>                                            <a class="code" href="classclang_1_1Sema.html#a891ce026cc3b4286e815fe0521334f74" title="Caches identifiers/selectors for NSFoundation APIs.">NSAPIObj</a>->getNSClassId(<a class="code" href="classclang_1_1NSAPI.html#a3dfe23f64f69bce381d4ef9d8ec03c0ca4947826db5baf33d4dc9074ae7a4fca8">NSAPI::ClassId_NSObject</a>),</div>
+<div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>                                            DeclLoc, <a class="code" href="classclang_1_1Sema.html#a0c6e994c44767e74e2892aa0235efb1aa0f401cd356feef42a5d4f95df7a6bf66">LookupOrdinaryName</a>);</div>
+<div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>           <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *NSObjectDecl = dyn_cast_or_null<ObjCInterfaceDecl>(IF);</div>
+<div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>           <span class="keywordflow">if</span> (NSObjectDecl && NSObjectDecl->getDefinition()) {</div>
+<div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>             <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SuperClassLoc, diag::note_objc_needs_superclass)</div>
+<div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>               << <a class="code" href="classclang_1_1FixItHint.html#afd481d826e9ddaa39fc82a698a810246" title="Create a code modification hint that inserts the given code string at a specific location.">FixItHint::CreateInsertion</a>(SuperClassLoc, <span class="stringliteral">" : NSObject "</span>);</div>
+<div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>           } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>             <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(SuperClassLoc, diag::note_objc_needs_superclass);</div>
+<div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>           }</div>
+<div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>         }</div>
+<div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (HasRootClassAttr) {</div>
+<div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>         <span class="comment">// Complain that only root classes may have this attribute.</span></div>
+<div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>         <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(IDecl->getLocation(), diag::err_objc_root_class_subclass);</div>
+<div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>       }</div>
+<div class="line"><a name="l02678"></a><span class="lineno"> 2678</span> </div>
+<div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Sema.html#a6da5a25306c679ff309e842bb7ffc394">LangOpts</a>.<a class="code" href="classclang_1_1LangOptions.html#a34a8b84f730051971c84c36daa84dda7">ObjCRuntime</a>.<a class="code" href="classclang_1_1ObjCRuntime.html#a5523ca4491b7915e32c02d98a491505e" title="Does this runtime follow the set of implied behaviors for a "non-fragile" ABI?">isNonFragile</a>()) {</div>
+<div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>         <span class="keywordflow">while</span> (IDecl->getSuperClass()) {</div>
+<div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>           <a class="code" href="classclang_1_1Sema.html#ad70333557b86245aaab42a3ca785399a">DiagnoseDuplicateIvars</a>(IDecl, IDecl->getSuperClass());</div>
+<div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>           IDecl = IDecl->getSuperClass();</div>
+<div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>         }</div>
+<div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>       }</div>
+<div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>     }</div>
+<div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>     <a class="code" href="classclang_1_1Sema.html#a6e9212d10966549fcfa4e55170ddb275">SetIvarInitializers</a>(IC);</div>
+<div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryImplDecl.html">ObjCCategoryImplDecl</a>* CatImplClass =</div>
+<div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>                                    dyn_cast<ObjCCategoryImplDecl>(ClassDecl)) {</div>
+<div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>     CatImplClass->setAtEndRange(AtEnd);</div>
+<div class="line"><a name="l02690"></a><span class="lineno"> 2690</span> </div>
+<div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>     <span class="comment">// Find category interface decl and then check that all methods declared</span></div>
+<div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>     <span class="comment">// in this interface are implemented in the category @implementation.</span></div>
+<div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a>* IDecl = CatImplClass->getClassInterface()) {</div>
+<div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *Cat</div>
+<div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>             = IDecl->FindCategoryDeclaration(CatImplClass->getIdentifier())) {</div>
+<div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>         <a class="code" href="classclang_1_1Sema.html#ac0d91ffb312a58b270d5b41c9e7e7cfd">ImplMethodsVsClassMethods</a>(S, CatImplClass, Cat);</div>
+<div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>       }</div>
+<div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>     }</div>
+<div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>   }</div>
+<div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>   <span class="keywordflow">if</span> (isInterfaceDeclKind) {</div>
+<div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>     <span class="comment">// Reject invalid vardecls.</span></div>
+<div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = allTUVars.size(); i != e; i++) {</div>
+<div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>       <a class="code" href="classclang_1_1DeclGroupRef.html">DeclGroupRef</a> DG = allTUVars[i].get();</div>
+<div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1Decl.html">DeclGroupRef::iterator</a> I = DG.<a class="code" href="classclang_1_1DeclGroupRef.html#a6992d5c8adb23509dbdd5f0c6e302a39">begin</a>(), E = DG.<a class="code" href="classclang_1_1DeclGroupRef.html#a6a4708b4425390f3d2c2f002a765e413">end</a>(); I != E; ++I)</div>
+<div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VDecl = dyn_cast<VarDecl>(*I)) {</div>
+<div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>           <span class="keywordflow">if</span> (!VDecl->hasExternalStorage())</div>
+<div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>             <a class="code" href="classclang_1_1Sema.html#ad29dfd1f2677772bf6b1da186a7583c3" title="Emit a diagnostic.">Diag</a>(VDecl->getLocation(), diag::err_objc_var_decl_inclass);</div>
+<div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>         }</div>
+<div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>     }</div>
+<div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>   }</div>
+<div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>   <a class="code" href="classclang_1_1Sema.html#a9e867248b95b4591b34b90e93780ef12">ActOnObjCContainerFinishDefinition</a>();</div>
+<div class="line"><a name="l02712"></a><span class="lineno"> 2712</span> </div>
+<div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = allTUVars.size(); i != e; i++) {</div>
+<div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>     <a class="code" href="classclang_1_1DeclGroupRef.html">DeclGroupRef</a> DG = allTUVars[i].get();</div>
+<div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1Decl.html">DeclGroupRef::iterator</a> I = DG.<a class="code" href="classclang_1_1DeclGroupRef.html#a6992d5c8adb23509dbdd5f0c6e302a39">begin</a>(), E = DG.<a class="code" href="classclang_1_1DeclGroupRef.html#a6a4708b4425390f3d2c2f002a765e413">end</a>(); I != E; ++I)</div>
+<div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>       (*I)->setTopLevelDeclInObjCContainer();</div>
+<div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>     <a class="code" href="classclang_1_1Sema.html#abb0166241058a45af82cc0ee40a8005a">Consumer</a>.<a class="code" href="classclang_1_1ASTConsumer.html#a62658b64d8d8bcfe99470bec45a7bab5" title="Handle the specified top-level declaration that occurred inside and ObjC container. The default implementation ignored them.">HandleTopLevelDeclInObjCContainer</a>(DG);</div>
+<div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>   }</div>
+<div class="line"><a name="l02719"></a><span class="lineno"> 2719</span> </div>
+<div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>   <a class="code" href="classclang_1_1Sema.html#a933cebf415880df2ca3b5b2bb88bf12e">ActOnDocumentableDecl</a>(ClassDecl);</div>
+<div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>   <span class="keywordflow">return</span> ClassDecl;</div>
+<div class="line"><a name="l02722"></a><span class="lineno"> 2722</span> }</div>
+<div class="line"><a name="l02723"></a><span class="lineno"> 2723</span> </div>
+<div class="line"><a name="l02724"></a><span class="lineno"> 2724</span> <span class="comment"></span></div>
+<div class="line"><a name="l02725"></a><span class="lineno"> 2725</span> <span class="comment">/// CvtQTToAstBitMask - utility routine to produce an AST bitmask for</span></div>
+<div class="line"><a name="l02726"></a><span class="lineno"> 2726</span> <span class="comment">/// objective-c's type qualifier from the parser version of the same info.</span></div>
+<div class="line"><a name="l02727"></a><span class="lineno"> 2727</span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24">Decl::ObjCDeclQualifier</a></div>
+<div class="line"><a name="l02728"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#afd6a84b05f9047ad05b10678a20209a3"> 2728</a></span> <a class="code" href="SemaDeclObjC_8cpp.html#afd6a84b05f9047ad05b10678a20209a3">CvtQTToAstBitMask</a>(<a class="code" href="classclang_1_1ObjCDeclSpec.html#a49591ce3aa0a2637d81b11a2f5148683">ObjCDeclSpec::ObjCDeclQualifier</a> PQTVal) {</div>
+<div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>   <span class="keywordflow">return</span> (<a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24">Decl::ObjCDeclQualifier</a>) (<a class="code" href="classunsigned.html">unsigned</a>) PQTVal;</div>
+<div class="line"><a name="l02730"></a><span class="lineno"> 2730</span> }</div>
+<div class="line"><a name="l02731"></a><span class="lineno"> 2731</span> </div>
+<div class="line"><a name="l02732"></a><span class="lineno"> 2732</span> <span class="keyword">static</span> <span class="keyword">inline</span></div>
+<div class="line"><a name="l02733"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#a5829bca377a899eda420b5fda7529813"> 2733</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="SemaDeclObjC_8cpp.html#a5829bca377a899eda420b5fda7529813">countAlignAttr</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVector.html">AttrVec</a> &A) {</div>
+<div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>   <span class="keywordtype">unsigned</span> count=0;</div>
+<div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>   <span class="keywordflow">for</span> (AttrVec::const_iterator i = A.begin(), e = A.end(); i != e; ++i)</div>
+<div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>     <span class="keywordflow">if</span> ((*i)->getKind() == attr::Aligned)</div>
+<div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>       ++count;</div>
+<div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>   <span class="keywordflow">return</span> count;</div>
+<div class="line"><a name="l02739"></a><span class="lineno"> 2739</span> }</div>
+<div class="line"><a name="l02740"></a><span class="lineno"> 2740</span> </div>
+<div class="line"><a name="l02741"></a><span class="lineno"> 2741</span> <span class="keyword">static</span> <span class="keyword">inline</span></div>
+<div class="line"><a name="l02742"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#af6c7d3dcd19314fb40be685ec5e44fbf"> 2742</a></span> <span class="keywordtype">bool</span> <a class="code" href="SemaDeclObjC_8cpp.html#af6c7d3dcd19314fb40be685ec5e44fbf">containsInvalidMethodImplAttribute</a>(<a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *IMD,</div>
+<div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>                                         <span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVector.html">AttrVec</a> &A) {</div>
+<div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>   <span class="comment">// If method is only declared in implementation (private method),</span></div>
+<div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>   <span class="comment">// No need to issue any diagnostics on method definition with attributes.</span></div>
+<div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>   <span class="keywordflow">if</span> (!IMD)</div>
+<div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>   </div>
+<div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>   <span class="comment">// method declared in interface has no attribute. </span></div>
+<div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>   <span class="comment">// But implementation has attributes. This is invalid.</span></div>
+<div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>   <span class="comment">// Except when implementation has 'Align' attribute which is</span></div>
+<div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>   <span class="comment">// immaterial to method declared in interface.</span></div>
+<div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>   <span class="keywordflow">if</span> (!IMD-><a class="code" href="classclang_1_1Decl.html#a003fece5918f94442ff29d24f5e8c1cc">hasAttrs</a>())</div>
+<div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>     <span class="keywordflow">return</span> (A.size() > <a class="code" href="SemaDeclObjC_8cpp.html#a5829bca377a899eda420b5fda7529813">countAlignAttr</a>(A));</div>
+<div class="line"><a name="l02755"></a><span class="lineno"> 2755</span> </div>
+<div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVector.html">AttrVec</a> &D = IMD-><a class="code" href="classclang_1_1Decl.html#a59463d45ab90b696a368b58d23eb49aa">getAttrs</a>();</div>
+<div class="line"><a name="l02757"></a><span class="lineno"> 2757</span> </div>
+<div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>   <span class="keywordtype">unsigned</span> countAlignOnImpl = <a class="code" href="SemaDeclObjC_8cpp.html#a5829bca377a899eda420b5fda7529813">countAlignAttr</a>(A);</div>
+<div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>   <span class="keywordflow">if</span> (!countAlignOnImpl && (A.size() != D.size()))</div>
+<div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (countAlignOnImpl) {</div>
+<div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>     <span class="keywordtype">unsigned</span> countAlignOnDecl = <a class="code" href="SemaDeclObjC_8cpp.html#a5829bca377a899eda420b5fda7529813">countAlignAttr</a>(D);</div>
+<div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>     <span class="keywordflow">if</span> (countAlignOnDecl && (A.size() != D.size()))</div>
+<div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!countAlignOnDecl && </div>
+<div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>              ((A.size()-countAlignOnImpl) != D.size()))</div>
+<div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>   }</div>
+<div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>   </div>
+<div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>   <span class="comment">// attributes on method declaration and definition must match exactly.</span></div>
+<div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>   <span class="comment">// Note that we have at most a couple of attributes on methods, so this</span></div>
+<div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>   <span class="comment">// n*n search is good enough.</span></div>
+<div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>   <span class="keywordflow">for</span> (AttrVec::const_iterator i = A.begin(), e = A.end(); i != e; ++i) {</div>
+<div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>     <span class="keywordflow">if</span> ((*i)->getKind() == attr::Aligned)</div>
+<div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>     <span class="keywordtype">bool</span> <a class="code" href="namespaceclang_1_1ast__matchers.html#a58409ce605d979d1d1e0a600ec417a0a" title="Returns the results of matching Matcher on Node.">match</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>     <span class="keywordflow">for</span> (AttrVec::const_iterator i1 = D.begin(), e1 = D.end(); i1 != e1; ++i1) {</div>
+<div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>       <span class="keywordflow">if</span> ((*i)->getKind() == (*i1)->getKind()) {</div>
+<div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>         match = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>       }</div>
+<div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>     }</div>
+<div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>     <span class="keywordflow">if</span> (!match)</div>
+<div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>   }</div>
+<div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>   </div>
+<div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02788"></a><span class="lineno"> 2788</span> }</div>
+<div class="line"><a name="l02789"></a><span class="lineno"> 2789</span> <span class="comment"></span></div>
+<div class="line"><a name="l02790"></a><span class="lineno"> 2790</span> <span class="comment">/// \brief Check whether the declared result type of the given Objective-C</span></div>
+<div class="line"><a name="l02791"></a><span class="lineno"> 2791</span> <span class="comment">/// method declaration is compatible with the method's class.</span></div>
+<div class="line"><a name="l02792"></a><span class="lineno"> 2792</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02793"></a><span class="lineno"> 2793</span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classclang_1_1Sema.html#ac9a2748b1865a6c75b3eb51b0fc9da50" title="Describes the compatibility of a result type with its method.">Sema::ResultTypeCompatibilityKind</a> </div>
+<div class="line"><a name="l02794"></a><span class="lineno"><a class="code" href="SemaDeclObjC_8cpp.html#afcafcba07562d583b79268ec566f041e"> 2794</a></span> <a class="code" href="SemaDeclObjC_8cpp.html#afcafcba07562d583b79268ec566f041e" title="Check whether the declared result type of the given Objective-C method declaration is compatible with...">CheckRelatedResultTypeCompatibility</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Method,</div>
+<div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>                                     <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *CurrentClass) {</div>
+<div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ResultType = Method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a5019b51f490a8eb6c6a6c89938486a5f">getResultType</a>();</div>
+<div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>   </div>
+<div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>   <span class="comment">// If an Objective-C method inherits its related result type, then its </span></div>
+<div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>   <span class="comment">// declared result type must be compatible with its own class type. The</span></div>
+<div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>   <span class="comment">// declared result type is compatible if:</span></div>
+<div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a> *ResultObjectType</div>
+<div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>                                 = ResultType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a>>()) {</div>
+<div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>     <span class="comment">//   - it is id or qualified id, or</span></div>
+<div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>     <span class="keywordflow">if</span> (ResultObjectType->isObjCIdType() ||</div>
+<div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>         ResultObjectType->isObjCQualifiedIdType())</div>
+<div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#ac9a2748b1865a6c75b3eb51b0fc9da50ade9bfbb57b1faa495b3b4de283617486">Sema::RTC_Compatible</a>;</div>
+<div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>   </div>
+<div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>     <span class="keywordflow">if</span> (CurrentClass) {</div>
+<div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *ResultClass </div>
+<div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>                                       = ResultObjectType->getInterfaceDecl()) {</div>
+<div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>         <span class="comment">//   - it is the same as the method's class type, or</span></div>
+<div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>         <span class="keywordflow">if</span> (<a class="code" href="namespaceclang.html#ad9d926b16adbdbc93705737b69d47cae" title="Determine whether two declarations declare the same entity.">declaresSameEntity</a>(CurrentClass, ResultClass))</div>
+<div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>           <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#ac9a2748b1865a6c75b3eb51b0fc9da50ade9bfbb57b1faa495b3b4de283617486">Sema::RTC_Compatible</a>;</div>
+<div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>         </div>
+<div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>         <span class="comment">//   - it is a superclass of the method's class type</span></div>
+<div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>         <span class="keywordflow">if</span> (ResultClass->isSuperClassOf(CurrentClass))</div>
+<div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>           <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#ac9a2748b1865a6c75b3eb51b0fc9da50ade9bfbb57b1faa495b3b4de283617486">Sema::RTC_Compatible</a>;</div>
+<div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>       }      </div>
+<div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>       <span class="comment">// Any Objective-C pointer type might be acceptable for a protocol</span></div>
+<div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>       <span class="comment">// method; we just don't know.</span></div>
+<div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#ac9a2748b1865a6c75b3eb51b0fc9da50aefe4a5eacf35c76e36d8600d1d2e4eaa">Sema::RTC_Unknown</a>;</div>
+<div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>     }</div>
+<div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>   }</div>
+<div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>   </div>
+<div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Sema.html#ac9a2748b1865a6c75b3eb51b0fc9da50a32d96232acac1cc6350b58b8abb12758">Sema::RTC_Incompatible</a>;</div>
+<div class="line"><a name="l02827"></a><span class="lineno"> 2827</span> }</div>
+<div class="line"><a name="l02828"></a><span class="lineno"> 2828</span> </div>
+<div class="line"><a name="l02829"></a><span class="lineno"> 2829</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l02830"></a><span class="lineno"> 2830</span> <span class="comment">/// A helper class for searching for methods which a particular method</span></div>
+<div class="line"><a name="l02831"></a><span class="lineno"> 2831</span> <span class="comment">/// overrides.</span></div>
+<div class="line"><a name="l02832"></a><span class="lineno"> 2832</span> <span class="comment"></span><span class="keyword">class </span>OverrideSearch {</div>
+<div class="line"><a name="l02833"></a><span class="lineno"> 2833</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>   <a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>   <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *Method;</div>
+<div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>   llvm::SmallPtrSet<ObjCMethodDecl*, 4> Overridden;</div>
+<div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>   <span class="keywordtype">bool</span> Recursive;</div>
+<div class="line"><a name="l02838"></a><span class="lineno"> 2838</span> </div>
+<div class="line"><a name="l02839"></a><span class="lineno"> 2839</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>   OverrideSearch(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1ObjCMethodDecl.html">ObjCMethodDecl</a> *method) : S(S), Method(method) {</div>
+<div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>     <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> selector = method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#aa91ae093f29f2781c87f725e42fddf98">getSelector</a>();</div>
+<div class="line"><a name="l02842"></a><span class="lineno"> 2842</span> </div>
+<div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>     <span class="comment">// Bypass this search if we've never seen an instance/class method</span></div>
+<div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>     <span class="comment">// with this selector before.</span></div>
+<div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>     Sema::GlobalMethodPool::iterator it = S.<a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.find(selector);</div>
+<div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>     <span class="keywordflow">if</span> (it == S.<a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.end()) {</div>
+<div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>       <span class="keywordflow">if</span> (!S.<a class="code" href="classclang_1_1Sema.html#a1b4820fc2e542e2a8ac45958c0edbdc8">getExternalSource</a>()) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>       S.<a class="code" href="classclang_1_1Sema.html#aca030006d98e2d99abaa14a1ea9d9bde" title="Read the contents of the method pool for a given selector from external storage.">ReadMethodPool</a>(selector);</div>
+<div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>       </div>
+<div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>       it = S.<a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.find(selector);</div>
+<div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>       <span class="keywordflow">if</span> (it == S.<a class="code" href="classclang_1_1Sema.html#a9dfde7abbdace984ee6bd94ce97be5d5">MethodPool</a>.end())</div>
+<div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>     }</div>
+<div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>     <a class="code" href="structclang_1_1ObjCMethodList.html" title="ObjCMethodList - a linked list of methods with different signatures.">ObjCMethodList</a> &list =</div>
+<div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>       method-><a class="code" href="classclang_1_1ObjCMethodDecl.html#a437ea0ebec5ba72fcf0084dd01654d4c">isInstanceMethod</a>() ? it->second.first : it->second.second;</div>
+<div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>     <span class="keywordflow">if</span> (!list.<a class="code" href="structclang_1_1ObjCMethodList.html#a92770ff3cb7c8b72b0cdf07f2bda7b36">Method</a>) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02857"></a><span class="lineno"> 2857</span> </div>
+<div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>     <a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *container</div>
+<div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>       = cast<ObjCContainerDecl>(method-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>());</div>
+<div class="line"><a name="l02860"></a><span class="lineno"> 2860</span> </div>
+<div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>     <span class="comment">// Prevent the search from reaching this container again.  This is</span></div>
+<div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>     <span class="comment">// important with categories, which override methods from the</span></div>
+<div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>     <span class="comment">// interface and each other.</span></div>
+<div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *Category = dyn_cast<ObjCCategoryDecl>(container)) {</div>
+<div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>       searchFromContainer(container);</div>
+<div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *Interface = Category->getClassInterface())</div>
+<div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>         searchFromContainer(Interface);</div>
+<div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>       searchFromContainer(container);</div>
+<div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>     }</div>
+<div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>   }</div>
+<div class="line"><a name="l02872"></a><span class="lineno"> 2872</span> </div>
+<div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>   <span class="keyword">typedef</span> llvm::SmallPtrSet<ObjCMethodDecl*, 128>::iterator iterator;</div>
+<div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>   iterator begin()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Overridden.begin(); }</div>
+<div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>   iterator end()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Overridden.end(); }</div>
+<div class="line"><a name="l02876"></a><span class="lineno"> 2876</span> </div>
+<div class="line"><a name="l02877"></a><span class="lineno"> 2877</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>   <span class="keywordtype">void</span> searchFromContainer(<a class="code" href="classclang_1_1ObjCContainerDecl.html">ObjCContainerDecl</a> *container) {</div>
+<div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>     <span class="keywordflow">if</span> (container-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>()) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02880"></a><span class="lineno"> 2880</span> </div>
+<div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>     <span class="keywordflow">switch</span> (container-><a class="code" href="classclang_1_1DeclContext.html#a5e0c621abad65a0be1989f1c346af3ef">getDeclKind</a>()) {</div>
+<div class="line"><a name="l02882"></a><span class="lineno"> 2882</span> <span class="preprocessor">#define OBJCCONTAINER(type, base) \</span></div>
+<div class="line"><a name="l02883"></a><span class="lineno"> 2883</span> <span class="preprocessor">    case Decl::type: \</span></div>
+<div class="line"><a name="l02884"></a><span class="lineno"> 2884</span> <span class="preprocessor">      searchFrom(cast<type##Decl>(container)); \</span></div>
+<div class="line"><a name="l02885"></a><span class="lineno"> 2885</span> <span class="preprocessor">      break;</span></div>
+<div class="line"><a name="l02886"></a><span class="lineno"> 2886</span> <span class="preprocessor"></span><span class="preprocessor">#define ABSTRACT_DECL(expansion)</span></div>
+<div class="line"><a name="l02887"></a><span class="lineno"> 2887</span> <span class="preprocessor"></span><span class="preprocessor">#define DECL(type, base) \</span></div>
+<div class="line"><a name="l02888"></a><span class="lineno"> 2888</span> <span class="preprocessor">    case Decl::type:</span></div>
+<div class="line"><a name="l02889"></a><span class="lineno"> 2889</span> <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="DeclNodes_8inc.html">clang/AST/DeclNodes.inc</a>"</span></div>
+<div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>       llvm_unreachable(<span class="stringliteral">"not an ObjC container!"</span>);</div>
+<div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>     }</div>
+<div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>   }</div>
+<div class="line"><a name="l02893"></a><span class="lineno"> 2893</span> </div>
+<div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>   <span class="keywordtype">void</span> searchFrom(<a class="code" href="classclang_1_1ObjCProtocolDecl.html" title="Represents an Objective-C protocol declaration.">ObjCProtocolDecl</a> *protocol) {</div>
+<div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>     <span class="keywordflow">if</span> (!protocol-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#a8da3398ad6bc882ac7a75d009770e485" title="Determine whether this protocol has a definition.">hasDefinition</a>())</div>
+<div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>     </div>
+<div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>     <span class="comment">// A method in a protocol declaration overrides declarations from</span></div>
+<div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>     <span class="comment">// referenced ("parent") protocols.</span></div>
+<div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>     search(protocol-><a class="code" href="classclang_1_1ObjCProtocolDecl.html#a921a60498edd91a22642ebe095938a0e">getReferencedProtocols</a>());</div>
+<div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>   }</div>
+<div class="line"><a name="l02902"></a><span class="lineno"> 2902</span> </div>
+<div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>   <span class="keywordtype">void</span> searchFrom(<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *category) {</div>
+<div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>     <span class="comment">// A method in a category declaration overrides declarations from</span></div>
+<div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>     <span class="comment">// the main class and from protocols the category references.</span></div>
+<div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>     <span class="comment">// The main class is handled in the constructor.</span></div>
+<div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>     search(category-><a class="code" href="classclang_1_1ObjCCategoryDecl.html#ac6ea09f15cf43bf7a93372b4ea4a073e">getReferencedProtocols</a>());</div>
+<div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>   }</div>
+<div class="line"><a name="l02909"></a><span class="lineno"> 2909</span> </div>
+<div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>   <span class="keywordtype">void</span> searchFrom(<a class="code" href="classclang_1_1ObjCCategoryImplDecl.html">ObjCCategoryImplDecl</a> *impl) {</div>
+<div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>     <span class="comment">// A method in a category definition that has a category</span></div>
+<div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>     <span class="comment">// declaration overrides declarations from the category</span></div>
+<div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>     <span class="comment">// declaration.</span></div>
+<div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *category = impl-><a class="code" href="classclang_1_1ObjCCategoryImplDecl.html#a0f87bd2e4d3ba1ad6eb452db64404c42">getCategoryDecl</a>()) {</div>
+<div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>       search(category);</div>
+<div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *Interface = category-><a class="code" href="classclang_1_1ObjCCategoryDecl.html#acdb14eeca277cfa745a4e8e842312008">getClassInterface</a>())</div>
+<div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>         search(Interface);</div>
+<div class="line"><a name="l02918"></a><span class="lineno"> 2918</span> </div>
+<div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>     <span class="comment">// Otherwise it overrides declarations from the class.</span></div>
+<div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *Interface = impl-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>()) {</div>
+<div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>       search(Interface);</div>
+<div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>     }</div>
+<div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>   }</div>
+<div class="line"><a name="l02924"></a><span class="lineno"> 2924</span> </div>
+<div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>   <span class="keywordtype">void</span> searchFrom(<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *iface) {</div>
+<div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>     <span class="comment">// A method in a class declaration overrides declarations from</span></div>
+<div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>     <span class="keywordflow">if</span> (!iface-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a2337d6990ec398fa1863459e77183e52" title="Determine whether this class has been defined.">hasDefinition</a>())</div>
+<div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>     </div>
+<div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>     <span class="comment">//   - categories,</span></div>
+<div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl_1_1filtered__category__iterator.html" title="Iterator that walks over the list of categories, filtering out those that do not meet specific criter...">ObjCInterfaceDecl::known_categories_iterator</a></div>
+<div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>            cat = iface-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a36fc0feabb243927d8140fb5ff6f8600" title="Retrieve an iterator to the beginning of the known-categories list.">known_categories_begin</a>(),</div>
+<div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>            catEnd = iface-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a001b33c8d83209b1290f993b0ffcf077" title="Retrieve an iterator to the end of the known-categories list.">known_categories_end</a>();</div>
+<div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>          cat != catEnd; ++cat) {</div>
+<div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>       search(*cat);</div>
+<div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>     }</div>
+<div class="line"><a name="l02937"></a><span class="lineno"> 2937</span> </div>
+<div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>     <span class="comment">//   - the super class, and</span></div>
+<div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *super = iface-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#a5f23eb5cda9e27622e71382d1dc4b95d">getSuperClass</a>())</div>
+<div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>       search(super);</div>
+<div class="line"><a name="l02941"></a><span class="lineno"> 2941</span> </div>
+<div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>     <span class="comment">//   - any referenced protocols.</span></div>
+<div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>     search(iface-><a class="code" href="classclang_1_1ObjCInterfaceDecl.html#aad0940f141114d024a9cc4cd33b0f09a">getReferencedProtocols</a>());</div>
+<div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>   }</div>
+<div class="line"><a name="l02945"></a><span class="lineno"> 2945</span> </div>
+<div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>   <span class="keywordtype">void</span> searchFrom(<a class="code" href="classclang_1_1ObjCImplementationDecl.html">ObjCImplementationDecl</a> *impl) {</div>
+<div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>     <span class="comment">// A method in a class implementation overrides declarations from</span></div>
+<div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>     <span class="comment">// the class interface.</span></div>
+<div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *Interface = impl-><a class="code" href="classclang_1_1ObjCImplDecl.html#ae3c6fb728fe5a7aee81ca394470493c4">getClassInterface</a>())</div>
+<div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>       search(Interface);</div>
+<div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>   }</div>
+<div class="line"><a name="l02952"></a><span class="lineno"> 2952</span> </div>
+<div class="line"><a name="l02953"></a><span class="lineno"> 2953</span> </div>
+<div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>   <span class="keywordtype">void</span> search(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCProtocolList.html" title="A list of Objective-C protocols, along with the source locations at which they were referenced...">ObjCProtocolList</a> &protocols) {</div>
+<div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCList.html#a472e691c20859d438222a5b2f5d7473d">ObjCProtocolList::iterator</a> i = proto