<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        margin-bottom:12.0pt;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin-top:0in;
        margin-right:0in;
        margin-bottom:7.5pt;
        margin-left:0in;
        background:#EEEEEE;
        font-size:10.0pt;
        font-family:Consolas;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        background:#EEEEEE;}
span.pln1
        {mso-style-name:pln1;
        color:black;}
span.pun1
        {mso-style-name:pun1;
        color:black;}
span.kwd1
        {mso-style-name:kwd1;
        color:darkblue;}
span.lit1
        {mso-style-name:lit1;
        color:maroon;}
span.com1
        {mso-style-name:com1;
        color:gray;}
span.typ1
        {mso-style-name:typ1;
        color:#2B91AF;}
span.str1
        {mso-style-name:str1;
        color:maroon;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal" style="margin-bottom:7.5pt;line-height:130%;background:#EEEEEE">
<span style="font-size:10.0pt;line-height:130%;font-family:"Arial","sans-serif";color:black">I am using the clang API (version 3.1 - trunk 153913) to compile some very simple code as follows</span><span class="kwd1"><span style="background:#EEEEEE"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin-bottom:7.5pt;line-height:130%;background:#EEEEEE">
<span class="kwd1"><span style="background:#EEEEEE">class</span></span><span class="pln1"><span style="background:#EEEEEE">
</span></span><span class="typ1"><span style="background:#EEEEEE">MyClass</span></span><span class="pln1"><span style="background:#EEEEEE"> </span></span><span style="color:black;background:#EEEEEE"><br>
<span class="pun1">{</span><span class="pln1"> </span><br>
<span class="pln1">   </span><span class="pun1">~</span></span><span class="typ1"><span style="background:#EEEEEE">MyClass</span></span><span class="pun1"><span style="background:#EEEEEE">()</span></span><span class="pln1"><span style="background:#EEEEEE">
</span></span><span class="pun1"><span style="background:#EEEEEE">;</span></span><span class="pln1"><span style="background:#EEEEEE"> </span></span><span style="color:black;background:#EEEEEE"><br>
<span class="pln1"> </span><br>
<span class="pun1">};</span><span class="pln1"> </span><br>
<span class="pln1"> </span><br>
</span><span class="typ1"><span style="background:#EEEEEE">MyClass</span></span><span class="pun1"><span style="background:#EEEEEE">::~</span></span><span class="typ1"><span style="background:#EEEEEE">MyClass</span></span><span class="pun1"><span style="background:#EEEEEE">()</span></span><span class="pln1"><span style="background:#EEEEEE"> </span></span><span style="color:black;background:#EEEEEE"><br>
<span class="pun1">{</span><span class="pln1"> </span><br>
<span class="pln1"> </span><br>
<span class="pun1">}</span><span class="pln1"> </span></span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"><br>
 <br>
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:darkblue;background:#EEEEEE">int</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> main() <br>
{ <br>
   </span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:darkblue;background:#EEEEEE">return</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#EEEEEE">0</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">; <br>
} </span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt;line-height:130%">
<span style="font-size:10.0pt;line-height:130%;font-family:"Arial","sans-serif";color:black">My problem is that I get the error message: test.cpp:20:10: error: destructor cannot have a return type
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">MyClass::~MyClass()</span><span style="font-size:10.0pt;line-height:130%;font-family:"Arial","sans-serif";color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt;line-height:130%">
<span style="font-size:10.0pt;line-height:130%;font-family:"Arial","sans-serif";color:black">If someone can point me to the right direction that would be great. It compiles fine if the destructor is defined inline to the class.
<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt;line-height:130%">
<span style="font-size:10.0pt;line-height:130%;font-family:"Arial","sans-serif";color:black">Note that I can also compile with clang++ fine: -bash-4.1$ clang++ test.cpp
<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt;line-height:130%">
<span style="font-size:10.0pt;line-height:130%;font-family:"Arial","sans-serif";color:black">So there must be a setting I'm missing in my clang API usage. Can anyone indicate what that might be. I've been searching all over for a missing option/configuration.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt;line-height:130%">
<span style="font-size:10.0pt;line-height:130%;font-family:"Arial","sans-serif";color:black">Here is my clang API usage:<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height:130%;background:#EEEEEE"><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:gray;background:#EEEEEE">// Include appropriate headers.
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> <br>
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:darkblue;background:#EEEEEE">int</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> main() <br>
{ <br>
    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">DiagnosticOptions</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> diagnosticOptions; <br>
    diagnosticOptions.</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">ShowColors</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">=</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#EEEEEE">1</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">; <br>
    diagnosticOptions.</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">ShowOptionNames</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">=</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#EEEEEE">1</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">; <br>
    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">TextDiagnosticPrinter</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> *pTextDiagnosticPrinter
 = <br>
       </span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:darkblue;background:#EEEEEE">new</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">TextDiagnosticPrinter</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">( <br>
           llvm::outs(), <br>
           diagnosticOptions); <br>
    llvm::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">IntrusiveRefCntPtr</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"><clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">DiagnosticIDs</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">>
 pDiagIDs; <br>
    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">DiagnosticsEngine</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> *pDiagnosticsEngine
 = <br>
       </span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:darkblue;background:#EEEEEE">new</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">DiagnosticsEngine</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">(pDiagIDs,
 pTextDiagnosticPrinter); <br>
 <br>
    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">LangOptions</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> languageOptions; <br>
    languageOptions.</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">GNUMode</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> =
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#EEEEEE">1</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">; <br>
    languageOptions.</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">CXXExceptions</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> =
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#EEEEEE">1</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">; <br>
    languageOptions.RTTI = </span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#EEEEEE">1</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">; <br>
    languageOptions.</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">Bool</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> =
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#EEEEEE">1</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">; <br>
    languageOptions.</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">CPlusPlus</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> =
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#EEEEEE">1</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">; <br>
    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">FileSystemOptions</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> fileSystemOptions; <br>
    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">FileManager</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> fileManager(fileSystemOptions); <br>
 <br>
    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">SourceManager</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> sourceManager( <br>
      *pDiagnosticsEngine, <br>
      fileManager); <br>
 <br>
 <br>
    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">TargetOptions</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> targetOptions; <br>
     targetOptions.</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">Triple</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> =
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#EEEEEE">"x86_64-unknown-linux-gnu"</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">; <br>
    targetOptions.CPU = </span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#EEEEEE">"x86-64"</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">; <br>
 <br>
    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">TargetInfo</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE"> *pTargetInfo = <br>
    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">TargetInfo</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2B91AF;background:#EEEEEE">CreateTargetInfo</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black;background:#EEEEEE">( <br>
        *pDiagnosticsEngine, </span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:black"><o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>