Updated the fix as suggested.
Aug 21 2016
Aug 10 2016
Jul 26 2016
Wrong indentation update.
Some more cosmetics.
Jul 25 2016
PP CodeCompletionII initialisation.
Addressing some sugesstions.
Jul 21 2016
Last comments addressed.
Jul 20 2016
Some cosmetics changes.
This patch addresses the comments from the previous one:
Jul 8 2016
This is a new suggestion as a result from the irc discussion.
Jul 7 2016
Yes, sorry, I usually give the context in the Bugzilla entries, but since there is no bug attached I overlooked it.
Jul 5 2016
Jul 2 2016
Ok, I was trying to find the correct place to emit un update record, but I am not sure I have found it. I was looking at the Declare/Define ImplicitDestructor but there is an update record emitted there if the Function Decl comes from an ASTFile, but the Declare/Define does not seem to come from the AST file when it is created in our example.
On the other hand, if I replace the ~SmallVectorImpl() with the default constructor SmallVectorImpl() then the assertion is not reproducible. Thus, I tried to see what is different when Declare/DefineImplicitDefaultConstructor, but I could not see any difference in the code path in comparison to the Destructor.
So I believe SmallVectorImpl() is not implicitly defined and the update record should be emitted somewhere else. Any hint to where should I look?
Jun 28 2016
Jun 27 2016
Jun 15 2016
May 13 2016
May 4 2016
Addresses the previous comments and adds testing for filtering.
All the tests already in CodeCompletion are testing both the backward compatibility and the new functionality itself.
Apr 21 2016
Apr 20 2016
Mar 23 2016
For the filtering itself the motivation for not doing it on the client side is the following in our use case:
- we do not re-filter on every key stroke, we only filter when the <TAB> key is pressed i.e there is one completion point;
- we have a PCH which will help with the generation time;
- performance is acceptable with the patch included: less than 1s even when the file contains several "heavier" includes such as <string> or <vector>;
- without the patch if the <TAB> key is pressed in the middle of the identifier name (i.e setDouble) an error is thrown:
fiter-member-access.cpp:19:17: error: no member named 'set' in 'MyClass' objectMyClass->set ~~~~~~~~~~~~~ ^
- and most importantly, we plan to propose another set of patches which would do lookup's only on subsets of the DeclContext of the identifier i.e incomplete lookup-s in order to reduce the amount of PCH deserializations.
This is a new way of filtering which is could be less intrusive and has less changes.