Do not add a colon chunk to the code completion of class inheritance access modifiers
authorErik Verbruggen <erikjv@me.com>
Tue, 24 Oct 2017 13:46:58 +0000 (13:46 +0000)
committerErik Verbruggen <erikjv@me.com>
Tue, 24 Oct 2017 13:46:58 +0000 (13:46 +0000)
commit6524c05d2cf5f893960cc082d8f40c979dc18531
treec317f9fddf9c1010967aab7c9ec7f63cbe0c8738
parentf4fbe4a51be5f30c77245f4b546bc62eef2e6ffd
Do not add a colon chunk to the code completion of class inheritance access modifiers

With enabled CINDEXTEST_CODE_COMPLETE_PATTERNS env option (which enables
IncludeCodePatterns in completion options) code completion after colon
currently suggests access modifiers with 2 completion chunks which is
incorrect.

Example:
class A : <Cursor>B
{
}

Currently we get 'NotImplemented:{TypedText public}{Colon :} (40)'
but the correct line is just 'NotImplemented:{TypedText public} (40)'

The fix introduces more specific scope that occurs between ':' and '{'
It allows us to determine when we don't need to add ':' as a second
chunk to the public/protected/private access modifiers.

Patch by Ivan Donchevskii!

Differential Revision: https://reviews.llvm.org/D38618

llvm-svn: 316436
clang/include/clang/Sema/Scope.h
clang/lib/Parse/ParseDeclCXX.cpp
clang/lib/Sema/SemaCodeComplete.cpp
clang/test/Index/complete-super.cpp