[LLVMdev] Clang API parsing of the destructor

Richard Smith richard at metafoo.co.uk
Fri Sep 21 13:44:49 PDT 2012


On Fri, Sep 21, 2012 at 12:22 PM, Kamaljit Lall <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         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/cac7585a/attachment.html>


More information about the llvm-dev mailing list