[CodeCompletion] Don't suggest initializers on 'AnyObject'

'AnyObject' cannot be instantiated, we shouldn't be providing any
initializers on 'AnyObject' type. 'AnyObject(<HERE>' and global
completions with initializers (i.e. `addinitstotoplevel`) showed all
initializers from objc classes.

Note that, 'lookupVisibleMemberDecls()' on 'AnyObject' (i.e.
'AnyObject.<HERE>') doesn't return initializers even before this change.
But 'QualifiedLookup' did.

rdar://93059166
This commit is contained in:
Rintaro Ishizaki
2022-05-12 16:26:33 -07:00
parent 0a133e8df7
commit d32b9c885c
3 changed files with 25 additions and 0 deletions

View File

@@ -365,6 +365,10 @@ static void collectPossibleCalleesByQualifiedLookup(
if (!baseInstanceTy->mayHaveMembers())
return;
// 'AnyObject' is not initializable.
if (baseInstanceTy->isAnyObject() && name == DeclNameRef::createConstructor())
return;
// Make sure we've resolved implicit members.
namelookup::installSemanticMembersIfNeeded(baseInstanceTy, name);