emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: IDE


From: Dmitry Gutov
Subject: Re: IDE
Date: Mon, 12 Oct 2015 17:25:49 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:41.0) Gecko/20100101 Thunderbird/41.0

On 10/12/2015 05:08 PM, Oleh Krehel wrote:

Thanks for mentioning that. I wasn't sure that was the case.

It's basically MIT license, see https://directory.fsf.org/wiki/Atom#tab=Details.

CEDET already resolves these complicated chains pretty well, as long as
it's got the correct AST.

Semantic has some known issues in this general area, exactly because it's hard. Clang, on the other hand, resolves them well.

What if `bar' is declared as `auto' (see C++11)? Or `app' itself?

This would be harder, but still very doable, even within CEDET.

You mean something would have to implement that. Good luck.

Another possible complication is using function templates in that method call chain.

1. Finding where the relevant headers are located on the file
system. This means that the AST parser should hook into the currently
used build system, and correctly see which #ifdef switches apply where.
Only GCC or its likes have access to this info always. To reiterate, if
the program compiles with GCC, the exact same switches must be passed to
the AST parser, so that it parses exactly the same headers in exactly
the same way.

This is non-trivial, because the switches are usually constructed by the build tool at run time. But see:

https://github.com/Sarcasm/irony-mode#compilation-database

2. Parsing the newly introduced language features. Here CEDET and
cc-mode are behind because of the shear complexity of the full C++
syntax. However, GCC does it very well.

Note that any CEDET feature that handles target type resolution is also subject to having to deal with new C++ language features.

I've been working on function-args.el to extend CEDET C++ support for my
uses for around 2 years now. The most common error that I have to work
around is "Type definition not found", which happens either because the
header path wasn't resolved, or the wrong #ifdef path was taken.

It could simply mean that until things work well on this level, you're not going to pay attention to the more subtle problems.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]