Add lookupClassMembers for use in id-style dynamic lookup.

With this, we can now get a list of all class members* available in the
current translation unit, which will be necessary for doing id-style
dynamic lookup (inferring which method you're referring to when the base
type is some magic "dynamic lookup" type).

* Including members of protocols, since a class we don't know about could
have implemented the protocol.

Since there is no code currently using this, I've added a new mode to
swift-ide-test to just dump all class members -- what will eventually
happen when you code complete on a dynamic lookup type. This mode will
go away once the other pieces of id-style lookup are in place.

Swift SVN r7287
This commit is contained in:
Jordan Rose
2013-08-16 20:22:14 +00:00
parent cf6bb91b20
commit 2241086363
10 changed files with 236 additions and 11 deletions

View File

@@ -281,3 +281,11 @@ SerializedModuleLoader::loadDeclsConformingTo(KnownProtocolKind kind,
}
}
void SerializedModuleLoader::lookupClassMembers(const Module *module,
Module::AccessPathTy accessPath,
VisibleDeclConsumer &consumer) {
ModuleFile *moduleFile = cast<SerializedModule>(module)->File;
if (!moduleFile)
return;
moduleFile->lookupClassMembers(accessPath, consumer);
}