[LLVMdev] Clang API parsing of the destructor

Kamaljit Lall klall at factset.com
Fri Sep 21 14:32:51 PDT 2012


Ok, thanks for that tip, that works.

Kam


From: metafoo at gmail.com [mailto:metafoo at gmail.com] On Behalf Of Richard Smith
Sent: Friday, September 21, 2012 4:45 PM
To: Kamaljit Lall
Cc: LLVMdev at cs.uiuc.edu
Subject: Re: [LLVMdev] Clang API parsing of the destructor

On Fri, Sep 21, 2012 at 12:22 PM, Kamaljit Lall <klall at factset.com<mailto:klall at factset.com>> wrote:
I am using the clang API (version 3.1 - trunk 153913) to compile some very simple code as follows
class MyClass
{
   ~MyClass() ;

};

MyClass::~MyClass()
{

}

int main()
{
   return 0;
}
My problem is that I get the error message: test.cpp:20:10: error: destructor cannot have a return type MyClass::~MyClass()
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.
Note that I can also compile with clang++ fine: -bash-4.1$ clang++ test.cpp
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.
Here is my clang API usage:
// Include appropriate headers.
int main()
{
    clang::DiagnosticOptions diagnosticOptions;
    diagnosticOptions.ShowColors=1;
    diagnosticOptions.ShowOptionNames=1;
    clang::TextDiagnosticPrinter *pTextDiagnosticPrinter =
       new clang::TextDiagnosticPrinter(
           llvm::outs(),
           diagnosticOptions);
    llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs> pDiagIDs;
    clang::DiagnosticsEngine *pDiagnosticsEngine =
       new clang::DiagnosticsEngine(pDiagIDs, pTextDiagnosticPrinter);

    clang::LangOptions languageOptions;
    languageOptions.GNUMode = 1;
    languageOptions.CXXExceptions = 1;
    languageOptions.RTTI = 1;
    languageOptions.Bool = 1;
    languageOptions.CPlusPlus = 1;

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).

    clang::FileSystemOptions fileSystemOptions;
    clang::FileManager fileManager(fileSystemOptions);

    clang::SourceManager sourceManager(
      *pDiagnosticsEngine,
      fileManager);


    clang::TargetOptions targetOptions;
     targetOptions.Triple = "x86_64-unknown-linux-gnu";
    targetOptions.CPU = "x86-64";

    clang::TargetInfo *pTargetInfo =
    clang::TargetInfo::CreateTargetInfo(
        *pDiagnosticsEngine,


_______________________________________________
LLVM Developers mailing list
LLVMdev at cs.uiuc.edu<mailto:LLVMdev at cs.uiuc.edu>         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120921/86db35bf/attachment.html>


More information about the llvm-dev mailing list