Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
CDT/summitfall2008/Indexing Session
Contents
Indexing break-out session
Participants
Chris Recoskie, Vivian Kong, Mike Kucera, Andrew Ferguson, Markus Schorn, Sergey Prigonin
C++0x
The standard not due until around 2010. For practical purposes, nearer the end of this year. GCC plans to support this 2009. Some awareness of features in the team.
- Name resolution
- Index, AST modelling them
Which parser to extend? Performance/characteristics of the implementations needs to be understood.
Action: No commitment for any work for CDT 2009. Get an understanding of the standard. Start a wiki page and track the impacts of each language feature
Language Variants
Two ways of doing language variants - DOM Parser and extension objects, LPG Grammar hierarchies.
Language configurations vs Language variants - it makes more sense to have a language be configurable rather than a distinct language for each set of options. On the UI side we should consider language (C,C++,UPC) mappings, that indirect to specific languages (C89,C99,C90,C++0x,UPC). For example, the user marks files as C or C++, but can reconfigure which specific dialect is used for these. The language would instantiate a parser.
Some discussion of wanting to sync build and parser settings. Concern over the complexity.
Search-path-less Include resolution
A bunch of heuristics to guess include paths from project content. Two metrics of closeness for ambiguity resolution. Structure for hashing for include lookup for large search paths, lazily constructed.
Name resolution
Template arguments
Markus will look at modelling template arguments. Subtleties around having an index representation of values as needed for enums and const variables.
Language defines 3 types of arguments: type, non-type and template. It may be possible to model template temaplate arguments as type arguments. Values could be modelled partitioned by type-family e.g. IIntegralValue. IBasicType currently also masquerades as a value - this should be cleaned up. Template arguments can be obtained by a notion of template position (nested depth and argument ordinal) - this would replace the untyped ObjectMap in ICppInstance.
Unknown bindings
We may not need to store unknown bindings for references. There are some problems with problem markings when names cannot be statically resolved within a template scope. For example we don't have a way of distinguishing unknown type from unknown value.
Misc
- We should provide a way of determining whether a method is an override of an existing method.
- Consider copying JDT's editor feature where a small upward triangle appears in the left gutter with an associated action of navigating to the overridden method
- We should provide a way of determining whether a method is overridden.
- we could double-buffer indexes - make current index read-only. Start a new index with new settings. Swap when done.
- Resume of indexing between eclipse stop and start, and cancelled.