Thread: [CEDET-devel] struct parsing problem
Brought to you by:
zappo
From: Darren H. <dar...@gm...> - 2013-12-23 20:55:27
|
on anaylyzing this simple code snippet, struct p {}; int p; semantic-analyze-current-context on the second p shows: Context Type: #<semantic-analyze-context context> Bounds: (18 . 19) Prefix: struct p {} Prefix Classes: 'type -------- I think the Prefix listed here is incorrect. |
From: Darren H. <dar...@gm...> - 2013-12-25 11:56:22
|
Another case with struct tag name and variable name clashes struct point {}; int point; int f(int point) { return point; } here the struct point goes into typecache and semantic-analyze-find-tag-sequence-default matches this one and stops searching in the scope. can we skip querying the typecache when scope is given (not nil)? === modified file 'lisp/cedet/semantic/analyze.el' --- lisp/cedet/semantic/analyze.el 2013-08-02 19:46:42 +0000 +++ lisp/cedet/semantic/analyze.el 2013-12-25 05:21:40 +0000 @@ -255,7 +255,7 @@ (miniscope (when scope (clone scope))) ) ;; First order check. Is this wholly contained in the typecache? - (setq tmp (semanticdb-typecache-find sequence)) + (or scope (setq tmp (semanticdb-typecache-find sequence))) (if tmp (progn |
From: Darren H. <dar...@gm...> - 2013-12-26 07:31:44
|
Darren Hoo <dar...@gm...> writes: > can we skip querying the typecache when scope is given (not nil)? This seems a bad idea. Actually this kind of name clashes also occur in metatypes of other languages like java, there's a confusion between class name and its constructor. As to the struct tag, Can we use "struct <name>" as its TAG name, and semantic-ctxt-current-symbol should also return "struct <name>"? Any ideas? |
From: Eric M. L. <er...@si...> - 2013-12-30 21:37:27
|
On 12/26/2013 02:31 AM, Darren Hoo wrote: > Darren Hoo<dar...@gm...> writes: > > >> can we skip querying the typecache when scope is given (not nil)? > > This seems a bad idea. > > Actually this kind of name clashes also occur in metatypes of other > languages like java, there's a confusion between class name and its > constructor. > > As to the struct tag, Can we use "struct<name>" as its TAG name, and > semantic-ctxt-current-symbol should also return "struct<name>"? > > Any ideas? Hi Darren, I found a pair of problems. The first is that an assignee, such as: a = -!- could be a type, so I added a feature to force this to be a variable. I also found a bug where the tag class filter in semantic-analyze-find-tag was ignored for results from the typecache, so I fixed that. Together, this fixes the example: int p; struct p {}; int func() { p = } for completing p. I put in a test for this. The fix is pretty specific though, so there may be some other cases that still fail, but they should be easier to fix up. I checked in those changes. Thanks Eric |