On Fri, Sep 21, 2012 at 12:22 PM, Kamaljit Lall <span dir="ltr"><<a href="mailto:klall@factset.com" target="_blank">klall@factset.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">






<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal" style="margin-bottom:7.5pt;line-height:130%;background:#eeeeee">
<span style="line-height:130%;font-size:10.0pt;font-family:"Arial","sans-serif"">I am using the clang API (version 3.1 - trunk 153913) to compile some very simple code as follows</span><span><span style="background:#eeeeee"><u></u><u></u></span></span></p>

<p class="MsoNormal" style="margin-bottom:7.5pt;line-height:130%;background:#eeeeee">
<span><span style="background:#eeeeee">class</span></span><span><span style="background:#eeeeee">
</span></span><span><span style="background:#eeeeee">MyClass</span></span><span><span style="background:#eeeeee"> </span></span><span style="background:#eeeeee"><br>
<span>{</span><span> </span><br>
<span>   </span><span>~</span></span><span><span style="background:#eeeeee">MyClass</span></span><span><span style="background:#eeeeee">()</span></span><span><span style="background:#eeeeee">
</span></span><span><span style="background:#eeeeee">;</span></span><span><span style="background:#eeeeee"> </span></span><span style="background:#eeeeee"><br>
<span> </span><br>
<span>};</span><span> </span><br>
<span> </span><br>
</span><span><span style="background:#eeeeee">MyClass</span></span><span><span style="background:#eeeeee">::~</span></span><span><span style="background:#eeeeee">MyClass</span></span><span><span style="background:#eeeeee">()</span></span><span><span style="background:#eeeeee"> </span></span><span style="background:#eeeeee"><br>

<span>{</span><span> </span><br>
<span> </span><br>
<span>}</span><span> </span></span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"><br>
 <br>
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:darkblue;background:#eeeeee">int</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> main() <br>

{ <br>
   </span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:darkblue;background:#eeeeee">return</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#eeeeee">0</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">; <br>
} </span><span style="line-height:130%;font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt;line-height:130%">
<span style="line-height:130%;font-size:10.0pt;font-family:"Arial","sans-serif"">My problem is that I get the error message: test.cpp:20:10: error: destructor cannot have a return type
</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">MyClass::~MyClass()</span><span style="line-height:130%;font-size:10.0pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>

<p class="MsoNormal" style="margin-bottom:12.0pt;line-height:130%">
<span style="line-height:130%;font-size:10.0pt;font-family:"Arial","sans-serif"">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.
<u></u><u></u></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt;line-height:130%">
<span style="line-height:130%;font-size:10.0pt;font-family:"Arial","sans-serif"">Note that I can also compile with clang++ fine: -bash-4.1$ clang++ test.cpp
<u></u><u></u></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt;line-height:130%">
<span style="line-height:130%;font-size:10.0pt;font-family:"Arial","sans-serif"">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.<u></u><u></u></span></p>

<p class="MsoNormal" style="margin-bottom:12.0pt;line-height:130%">
<span style="line-height:130%;font-size:10.0pt;font-family:"Arial","sans-serif"">Here is my clang API usage:<u></u><u></u></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="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> <br>
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:darkblue;background:#eeeeee">int</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> 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="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> diagnosticOptions; <br>

    diagnosticOptions.</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">ShowColors</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">=</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#eeeeee">1</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">; <br>

    diagnosticOptions.</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">ShowOptionNames</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">=</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#eeeeee">1</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">; <br>

    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">TextDiagnosticPrinter</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> *pTextDiagnosticPrinter
 = <br>
       </span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:darkblue;background:#eeeeee">new</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">TextDiagnosticPrinter</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">( <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="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"><clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">DiagnosticIDs</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">>
 pDiagIDs; <br>
    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">DiagnosticsEngine</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> *pDiagnosticsEngine
 = <br>
       </span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:darkblue;background:#eeeeee">new</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">DiagnosticsEngine</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">(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="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> languageOptions; <br>

    languageOptions.</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">GNUMode</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> =
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#eeeeee">1</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">; <br>
    languageOptions.</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">CXXExceptions</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> =
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#eeeeee">1</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">; <br>
    languageOptions.RTTI = </span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#eeeeee">1</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">; <br>

    languageOptions.</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">Bool</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> =
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#eeeeee">1</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">; <br>
    languageOptions.</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">CPlusPlus</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> =
</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:maroon;background:#eeeeee">1</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">; <br></span></p>
</div></div></blockquote><div><br></div><div>Don't do this, use CompilerInvocation::setLangDefaults. Your problem is probably that ImplicitInt is enabled (but you're likely to have other LangOptions wrong too, and this code may break next time we add one).</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal" style="line-height:130%;background:#eeeeee">
<span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">
    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">FileSystemOptions</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> fileSystemOptions; <br>

    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">FileManager</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> 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="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> 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="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> targetOptions; <br>

     targetOptions.</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">Triple</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> =
</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="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">; <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="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">; <br>

 <br>
    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">TargetInfo</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas"> *pTargetInfo = <br>

    clang::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">TargetInfo</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">::</span><span style="font-size:10.0pt;line-height:130%;font-family:Consolas;color:#2b91af;background:#eeeeee">CreateTargetInfo</span><span style="line-height:130%;background:#eeeeee;font-size:10.0pt;font-family:Consolas">( <br>

        *pDiagnosticsEngine, </span><span style="line-height:130%;font-size:10.0pt;font-family:Consolas"><u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>

<br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></blockquote></div><br>