Commits

Jordan Rose committed 2ebd4756b62
[ClangImporter] Force load adapter modules whenever a Clang module is named. Loading Cocoa (Clang) triggers the loading of several other modules, including Foundation (Clang). We want to make sure we bring in the adapter module Foundation (Swift), so loading Cocoa currently triggers a walk of all imported modules to check for an adapter. The problem is that Foundation (Swift) contains some eagerly-deserialized decls, which refer to decls in Foundation (Clang). These decls were not importing correctly because we hadn't finished loading all the adapters -- specifically, we hadn't yet loaded ObjectiveC (Swift). This meant SEL was loaded as swift.COpaquePointer instead of ObjectiveC.ObjCSel. Now, when Foundation (Swift) asks to load Foundation (Clang), we'll walk all imported modules under Foundation (Clang) to check for an adapter before returning, even if Foundation (Clang) is already in our system. This probably still isn't the best way to deal with this (particularly since the modules in the subtree will get visited twice), but it ensures that we've loaded all necessary adapter modules before trying to import any decls. TLDR: Importing Cocoa now correctly imports the Swift overlay for the ObjectiveC module, meaning SELs are correctly imported. <rdar://problem/14759044> Swift SVN r7293