I noticed just now that code completion is very thorough while analysing the scope of declared objects, but to the extreme of ignoring global static objects. Is this behaviour intentional?
Quote from: ptDev on April 29, 2010, 12:22:23 AM
I noticed just now that code completion is very thorough while analysing the scope of declared objects, but to the extreme of ignoring global static objects. Is this behaviour intentional?
Ok, I don't fully understand what's your meaning. Can you give a simple test code?
eg:
//global static objects
static int aaa;
???
BTW:The parserthread.cpp do the whole "syntax analyze" job, and this file is quite easy to understand.
Probably you should start with telling us the version of C::B you are using.
Quote from: MortenMacFly on April 29, 2010, 06:28:05 AM
Probably you should start with telling us the version of C::B you are using.
I apoplogize, I wrote this quite late last night, and was a bit too tired to explain properly.
I am running Code::Blocks svn revision 6202, built with MinGW-TDM 4.4.1-2 and wxWidgets 2.8.10.
The code which CC didn't parse properly was something similar to:
#include "myarray.h"
#include "myclass.h"
static myspace::myarray a; // Global static objects typed before any myclass member functions
static myspace::myarray b;
// ...
void myclass::method()
{
a. // ... <-- Here, I typed the access operator, but the CC member list did not appear
}
However, declaring
local objects from the same namespace and class resulted in the expected behaviour:
void myclass::method()
{
myspace::myarray a;
a. // ... <-- Here, the CC member list appeared normally
}
If I switched between ommiting the local object or not, so would the CC tooltip disappear or reappear.
Ok, I have just test the sample code like below with our parserTest project.
namespace myspace {
class myarray{
public:
int m_aaa;
}
};
myspace::myarray a; // Global static objects typed before any myclass member functions
myspace::myarray b;
And the output of the parser is like below:
...
000058. namespace namespace myspace {...} [1,1]
000059. class class myarray {...} [3,0]
000060. variable int myspace::myarray::m_aaa [5,0]
000061. variable myarray myspace::a [10,0]
000062. variable myarray myspace::b [11,0]
And if I add the "static" before the statement, I found that the parser give the same result:
...
--------------L-i-s-t--L-o-g--------------
000060. namespace namespace myspace {...} [1,1]
000061. class class myarray {...} [3,0]
000062. variable int myspace::myarray::m_aaa [5,0]
000063. variable myarray myspace::a [10,0]
000064. variable myarray myspace::b [11,0]
So, as a conclusion, I think parser works as expected. So, maybe there's a bug in other part of CC. :D