Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] parser issues in Helios

I get these errors using the full indexer.
 
Cheers,
Nate.

________________________________
> Date: Fri, 10 Dec 2010 12:06:53 +0300
> From: xeormail@xxxxxxxxx
> To: cdt-dev@xxxxxxxxxxx
> Subject: Re: [cdt-dev] parser issues in Helios
>
> Hi,
>
> I have also started trying to make the latest CDT live with boost, and
> found that probably many issues caused by this bug:
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=197989
>
> Boost makes heavy use of preprocessor features, and the assumption that
> file is included only once doesn't allow the code to be parsed right. I
> have made CDT to use full indexer, and see much less issues (for
> example, with BOOST_FOREACH). This also means that code parsed through
> gcc preprocessor may not show the problem.
>
> Thanks,
> Leonid
>
> On Fri, Dec 10, 2010 at 6:19 AM, Sergey Prigogin
> >
> wrote:
>
>
> On Thu, Dec 9, 2010 at 7:01 PM, Nathan Ridge
> > wrote:
>
> Hello,
>
> I've tried out the Milestone 3 development build of Eclipse Indigo with
> the corresponding development build of CDT 8. It's very nice!
>
> I'm really glad to see C++0x features implemented up to what's supported
> by gcc 4.5. I think Eclipse Indigo with gcc 4.5 now has more complete
> C++0x support than any other IDE/compiler combination I'm aware of.
>
> Another nice feature is that semantic errors caught by the parser
> are now underlined in red. I previously used syntax coloring to simulate
> this feature (with the absence of proper syntax coloring indicating a
> semantic error), but the red underlines are much more explicit and give
> the reason for the error.
>
> One side effect of this feature is that as a result of imperfections in
> the parser, valid lines of code are sometimes underlined in red. I
> thought I'd point out a few cases:
>
> 1. The parser complains about the BOOST_FOREACH macro, citing a number of
> "Invalid arguments" errors:
>
> #include
> #include
> int main()
> {
> int array[3] = {1, 2, 3};
>
> BOOST_FOREACH(int i, array) // ERROR HERE
> std::cout << i << '\n';
>
> return 0;
> }
>
> 2. The parser cannot recognize certain conversions to boost::function:
>
> #include
> void f(boost::function f) {}
> void g();
> int main()
> {
> f(g); // ERROR HERE
>
> return 0;
> }
>
> Here the error is:
>
> Invalid arguments Candidates are: void f(boost::function)
>
> 3. This is a very minor thing, but the parser warns about main()
> not returning a value:
>
> int main()
> {
> }
>
> "No return, in function returning non-void"
>
> Since the standard explicitly allows main to not return anything
> (and construes it as returning 0 implicitly), you may want to add
> a special case for this.
>
> I'd be happy to file bug reports for these cases if you'd like me to,
> as well to continue pointing out other issues with the parser
> as I come across them.
>
> Thanks a lot for your feedback. Please file bugs for the issues you
> discovered. In case of parser bugs 1 and 2 could you please run your
> test files through gcc preprocessor and attach the expanded files to
> the bugs. This way the bugs can be reproduced without dependency on a
> specific version of Boost.
>
> Cheers,
> Nate.
>
> -sergey
> _______________________________________________
> cdt-dev mailing list
> cdt-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/cdt-dev
>
>
> _______________________________________________
> cdt-dev mailing list
> cdt-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/cdt-dev
>
>
>
> _______________________________________________ cdt-dev mailing list
> cdt-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/cdt-dev 		 	   		  

Back to the top