Check that "@testable import Foo" is only used to import testable modules.

(i.e. modules compiled with -enable-testing)

Part of testability (rdar://problem/17732115)

Swift SVN r26293
This commit is contained in:
Jordan Rose
2015-03-19 02:20:41 +00:00
parent c6739b6b6c
commit e6c2131bda
14 changed files with 90 additions and 34 deletions

View File

@@ -161,20 +161,20 @@ FileUnit *SerializedModuleLoader::loadAST(
}
serialization::ExtendedValidationInfo extendedInfo;
serialization::validateSerializedAST(moduleInputBuffer.get()->getBuffer(),
&extendedInfo);
bool IsSIB = extendedInfo.isSIB();
std::unique_ptr<ModuleFile> loadedModuleFile;
serialization::Status err = ModuleFile::load(std::move(moduleInputBuffer),
std::move(moduleDocInputBuffer),
isFramework, loadedModuleFile);
isFramework, loadedModuleFile,
&extendedInfo);
if (err == serialization::Status::Valid) {
Ctx.bumpGeneration();
// We've loaded the file. Now try to bring it into the AST.
auto fileUnit = new (Ctx) SerializedASTFile(M, *loadedModuleFile, IsSIB);
auto fileUnit = new (Ctx) SerializedASTFile(M, *loadedModuleFile,
extendedInfo.isSIB());
M.addFile(*fileUnit);
if (extendedInfo.isTestable())
M.setTestingEnabled();
auto diagLocOrInvalid = diagLoc.getValueOr(SourceLoc());
err = loadedModuleFile->associateWithFileContext(fileUnit,