This patch is intended to change <font class="Apple-style-span" face="'courier new', monospace">clang::Token::getName()</font> <font class="Apple-style-span" face="arial, helvetica, sans-serif"> so that it returns </font><font class="Apple-style-span" face="'courier new', monospace">llvm::StringRef</font><font class="Apple-style-span" face="arial, helvetica, sans-serif"> instead of </font><font class="Apple-style-span" face="'courier new', monospace">const char*</font><font class="Apple-style-span" face="arial, helvetica, sans-serif">.</font><div>
<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">This is my first patch (ever), so if I did something I wasn't supposed to, just scream at me and I'll try to fix it. :-)</font></div>
</div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">This turned out to be an easy place to start; the doxygen reference indicates that this method isn't referenced at all. Clang built fine with these changes.</font></div>
<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">Regards, </font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif">ZJ</font></div>
<div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br>
</font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><div>Index: include/clang/Basic/TokenKinds.h</div><div>===================================================================</div><div>--- TokenKinds.h<span class="Apple-tab-span" style="white-space:pre">     </span>(revision 133818)</div>
<div>+++ TokenKinds.h<span class="Apple-tab-span" style="white-space:pre">      </span>(working copy)</div><div>@@ -14,6 +14,10 @@</div><div> #ifndef LLVM_CLANG_TOKENKINDS_H</div><div> #define LLVM_CLANG_TOKENKINDS_H</div><div>
 </div><div>+namespace llvm {</div><div>+  class StringRef;</div><div>+}</div><div>+</div><div> namespace clang {</div><div> </div><div> namespace tok {</div><div>@@ -53,7 +57,7 @@</div><div> ///</div><div> /// The name of a token will be an internal name (such as "l_square")</div>
<div> /// and should not be used as part of diagnostic messages.</div><div>-const char *getTokenName(enum TokenKind Kind);</div><div>+llvm::StringRef getTokenName(enum TokenKind Kind);</div><div> </div><div> /// \brief Determines the spelling of simple punctuation tokens like</div>
<div> /// '!' or '%', and returns NULL for literal and annotation tokens.</div><div><br></div><div>Index: lib/Basic/TokenKinds.cpp</div><div>===================================================================</div>
<div>--- TokenKinds.cpp<span class="Apple-tab-span" style="white-space:pre">    </span>(revision 133818)</div><div>+++ TokenKinds.cpp<span class="Apple-tab-span" style="white-space:pre">  </span>(working copy)</div><div>@@ -12,7 +12,7 @@</div>
<div> //===----------------------------------------------------------------------===//</div><div> </div><div> #include "clang/Basic/TokenKinds.h"</div><div>-</div><div>+#include "llvm/ADT/StringRef.h"</div>
<div> #include <cassert></div><div> using namespace clang;</div><div> </div><div>@@ -23,9 +23,9 @@</div><div>   0</div><div> };</div><div> </div><div>-const char *tok::getTokenName(enum TokenKind Kind) {</div><div>+llvm::StringRef tok::getTokenName(enum TokenKind Kind) {</div>
<div>   assert(Kind < tok::NUM_TOKENS);</div><div>-  return TokNames[Kind];</div><div>+  return llvm::StringRef(TokNames[Kind]);</div><div> }</div><div> </div><div> const char *tok::getTokenSimpleSpelling(enum TokenKind Kind) {</div>
<div><br></div><div>Index: include/clang/Lex/Token.h</div><div>===================================================================</div><div>--- Token.h<span class="Apple-tab-span" style="white-space:pre"> </span>(revision 133818)</div>
<div>+++ Token.h<span class="Apple-tab-span" style="white-space:pre">   </span>(working copy)</div><div>@@ -18,6 +18,7 @@</div><div> #include "clang/Basic/TokenKinds.h"</div><div> #include "clang/Basic/SourceLocation.h"</div>
<div> #include "clang/Basic/OperatorKinds.h"</div><div>+#include "llvm/ADT/StringRef.h"</div><div> #include <cstdlib></div><div> </div><div> namespace clang {</div><div>@@ -145,7 +146,7 @@</div><div>
     setAnnotationEndLoc(R.getEnd());</div><div>   }</div><div> </div><div>-  const char *getName() const {</div><div>+  llvm::StringRef getName() const {</div><div>     return tok::getTokenName( (tok::TokenKind) Kind);</div>
<div>   }</div><div> </div><div><br></div></font></div>