Author Topic: Tagging has trouble with "void ::Foo()"  (Read 12772 times)

chrisant

  • Senior Community Member
  • Posts: 1410
  • Hero Points: 131
Re: Tagging has trouble with "void ::Foo()"
« Reply #15 on: April 23, 2009, 07:15:34 pm »
Additional info:
 ;D The "std" trick enables Find References to find references that it was previously unable to find, although they are marked as unknown type references.
 :( The "std" trick confuses symbol coloring and completion of methods off of many pointer variables (plain normal pointers, not smart pointers).

Dennis

  • SlickEdit Team Member
  • Senior Community Member
  • *
  • Posts: 3290
  • Hero Points: 463
Re: Tagging has trouble with "void ::Foo()"
« Reply #16 on: April 23, 2009, 08:46:25 pm »
The "std" hack is aptly named, it's a hack, just a tad better than the previous hack.

However, I have some better news for you.  I have just checked in a fix for the problems displayed in the "Repro.zip" test cases.  This will be available in the next hot fix.  Obviously for the fix to work, you will need to disable the hack and rebuild your workspace tag file, otherwise the tagger isn't really getting a shot at the real code.

Maybe I missed something, but I did not observe problems with the test case posted by JB - context tagging seemed to get everything right.

As for the Repro2.zip test case, it's next on my list.  Smart pointers do have the innate ability to make me want to rip my eyeballs out, so I'm not making any promises on this one yet.

chrisant

  • Senior Community Member
  • Posts: 1410
  • Hero Points: 131
Re: Tagging has trouble with "void ::Foo()"
« Reply #17 on: April 23, 2009, 09:36:14 pm »
However, I have some better news for you.  I have just checked in a fix for the problems displayed in the "Repro.zip" test cases.  This will be available in the next hot fix.  Obviously for the fix to work, you will need to disable the hack and rebuild your workspace tag file, otherwise the tagger isn't really getting a shot at the real code.
Great news, thank you!  8)  The icing on the cake is that they're hot-fixable.  You Are The Man.


As for the Repro2.zip test case, it's next on my list.  Smart pointers do have the innate ability to make me want to rip my eyeballs out, so I'm not making any promises on this one yet.
Understood.  Thanks for the quick attention!

hs2

  • Senior Community Member
  • Posts: 2752
  • Hero Points: 291
Re: Tagging has trouble with "void ::Foo()"
« Reply #18 on: April 26, 2009, 02:58:13 pm »
Quote
Also, I am strongly growing to wish there was a global usercpp.h, but also a workspace-specific preprocessor hint file, and also project-specific preprocessor hint file.  Different projects have different quirks, and I've having to make compromises where I chose to mess up tagging in one project to improve tagging in another project,...

Yes - this is also a long-standing request (see this thread).
Although the global usercpp.h approach works surprisingly well, it's not ideal when working with a number of different dev.envs/platforms at the same time.
Worst case is e.g. #ifdef'd multi-platform code requiring conflicting CPP settings.
In this case you've to omit some otherwise correct #defines in usercpp.h to get tagging working, but this can lead e.g. to a number of ambiguous symbols etc.
I still wonder how clever the SE guys solved this problem regarding their OS layer code...
However, quite often I can't fix the codebase I've to use or work with. So we're back tweaking the preprocessor :(
But I think this issue affects only a minor share of the SE users. So it's prio is clearly low.

HS2
« Last Edit: April 28, 2009, 12:54:22 am by hs2 »

jb

  • Community Member
  • Posts: 37
  • Hero Points: 0
Re: Tagging has trouble with "void ::Foo()"
« Reply #19 on: April 27, 2009, 06:54:34 pm »
The "std" hack is aptly named, it's a hack, just a tad better than the previous hack.

Support! I’m glad to read that you start searching real solutions instead of wasting further time and energy in such hacks with minimal benefits.
(What was the point of namespaces again? To merge them all to std?  ;) )


Maybe I missed something, but I did not observe problems with the test case posted by JB - context tagging seemed to get everything right.

As for the Repro2.zip test case, it's next on my list.  Smart pointers do have the innate ability to make me want to rip my eyeballs out, so I'm not making any promises on this one yet.

To reproduce the two problems I reported you need to do the following:
1. Unpack chrisant’s Repro2.zip.
2. Open Repro.vpw.
3. Replace the entire contents of repro.cpp by my posted code.

However the problems do NOT occur if you open only repro.cpp without the workspace. Until now I did not realize this difference.

Now guess what happens when you do the following:
1. Remove repro.h from the project (Repro.vpj) and delete it permanently from disk.
    So now Repro.vpj contains only repro.cpp.
2. Exit SlickEdit 14.0.0.7.
3. Delete Repro.vtg.
4. Reopen Repro.vpw.

RESULT: Both problems are still there, exactly as I reported them.
First I presumed that the tag file was not updated correctly. But obviously this is not the case!?
« Last Edit: April 27, 2009, 07:25:45 pm by jb »