mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Name lookup: add some assertions in an attempt to catch a bug.
The bug in question is an opaque crash with no project, rdar://problem/21204593. Swift SVN r31949
This commit is contained in:
@@ -149,6 +149,12 @@ static void lookupInModule(Module *module, Module::AccessPathTy accessPath,
|
|||||||
bool respectAccessControl,
|
bool respectAccessControl,
|
||||||
ArrayRef<Module::ImportedModule> extraImports,
|
ArrayRef<Module::ImportedModule> extraImports,
|
||||||
CallbackTy callback) {
|
CallbackTy callback) {
|
||||||
|
assert(module);
|
||||||
|
assert(std::none_of(extraImports.begin(), extraImports.end(),
|
||||||
|
[](Module::ImportedModule import) -> bool {
|
||||||
|
return !import.second;
|
||||||
|
}));
|
||||||
|
|
||||||
ModuleLookupCache::iterator iter;
|
ModuleLookupCache::iterator iter;
|
||||||
bool isNew;
|
bool isNew;
|
||||||
std::tie(iter, isNew) = cache.insert({{accessPath, module}, {}});
|
std::tie(iter, isNew) = cache.insert({{accessPath, module}, {}});
|
||||||
@@ -192,6 +198,10 @@ static void lookupInModule(Module *module, Module::AccessPathTy accessPath,
|
|||||||
resolutionKind == ResolutionKind::Overloadable) {
|
resolutionKind == ResolutionKind::Overloadable) {
|
||||||
SmallVector<Module::ImportedModule, 8> reexports;
|
SmallVector<Module::ImportedModule, 8> reexports;
|
||||||
module->getImportedModulesForLookup(reexports);
|
module->getImportedModulesForLookup(reexports);
|
||||||
|
assert(std::none_of(reexports.begin(), reexports.end(),
|
||||||
|
[](Module::ImportedModule import) -> bool {
|
||||||
|
return !import.second;
|
||||||
|
}));
|
||||||
reexports.append(extraImports.begin(), extraImports.end());
|
reexports.append(extraImports.begin(), extraImports.end());
|
||||||
|
|
||||||
// Prefer scoped imports (import func Swift.max) to whole-module imports.
|
// Prefer scoped imports (import func Swift.max) to whole-module imports.
|
||||||
|
|||||||
Reference in New Issue
Block a user