clang のコード補完部分がどのように実装されているかについての隠しドキュメントはありますか? これまでにわかったことは、特別なトークン (tok::code_completion) がレクサーに挿入され、パーサーで処理されるということです。このようなトークンを観察した後、パーサーは可能な補完文字列を埋めることができます。
理解できないこと:
呼び出された機能が、現在のコンテキストで使用可能な変数を挿入できると判断した場合。このような場合はどのように扱われますか?
struct FooBar {
void foo() {
ba<<code completion here>>
}
void bar() {
}
};
パーサーは bar を認識していませんが、呼び出すことは有効です。