Hi,
there seems to be a problem with parsing code using overloaded operators if it follows a return-statement. It doesn't matter if the overloaded operator is a member or a free standing function.
struct Test
{
Test operator-(Test const &other) {return other;}
Test test2(Test const &other) {return other;}
int test() {return 0;}
};
Test operator+(Test const &t1, Test const &t2) {return t1;}
int main()
{
Test t1,t2;
(t1-t2).test(); // ok
(t1+t2).test(); // ok
t1.test2(t2).test(); // ok, but wrong additionally members listed
return (t1-t2).test(); // result of operator not recognized
return (t1+t2).test(); // result of operator not recognized
return t1.test2(t2).test(); // ok, but wrong additionally members listed
}
The effect in the example is that I don't get a member listbox when typing return (t1-t2). and the test() in return (t1-t2).test(); is no recognized by VAX.
The problem is not there if you use regular functions instead of overloaded operators. But interestingly I get another problem there, independent if after a return or not:
As you can see, there are 4 wrong members listed. They come from two different classes in the boost::functional-header which is completely unrelated and not used anywhere in the test-project. (Hmm, after opening that boost-header just now, VAX added a 5th wrong member to the list, named computed().)
I'm quite sure, that both problems are regressions but I can't remember which versions got it right before.