When a framework can be found at a new location, all references to it in the module cache become outdated. When we try to load such outdated .pcm file, we shouldn't change any already loaded and processed modules. If `Module` has `ASTFile`, it means we've read its AST block already and it is too late to undo that. If `ASTFile` is `None`, there is no value in setting it to `None` again. So we don't reset `ASTFile` in `ModuleManager::removeModules` at all. rdar://97216258 Differential Revision: https://reviews.llvm.org/D134249
45 lines
1.5 KiB
Objective-C
45 lines
1.5 KiB
Objective-C
// RUN: rm -rf %t
|
|
// RUN: split-file %s %t
|
|
//
|
|
// At first build Stable.pcm that references Movable.framework from StableFrameworks.
|
|
// RUN: %clang_cc1 -fsyntax-only -F %t/JustBuilt -F %t/StableFrameworks %t/prepopulate-module-cache.m \
|
|
// RUN: -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/modules.cache
|
|
//
|
|
// Now add Movable.framework to JustBuilt.
|
|
// RUN: mkdir %t/JustBuilt
|
|
// RUN: cp -r %t/StableFrameworks/Movable.framework %t/JustBuilt/Movable.framework
|
|
//
|
|
// Load Movable.pcm at first for JustBuilt location and then in the same TU try to load transitively for StableFrameworks location.
|
|
// RUN: %clang_cc1 -fsyntax-only -F %t/JustBuilt -F %t/StableFrameworks %t/trigger-error.m \
|
|
// RUN: -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/modules.cache
|
|
|
|
// Test the case when a dependent module is found in a different location, so
|
|
// module cache has outdated information. <rdar://97216258>
|
|
|
|
//--- StableFrameworks/Movable.framework/Headers/Movable.h
|
|
// empty
|
|
|
|
//--- StableFrameworks/Movable.framework/Modules/module.modulemap
|
|
framework module Movable {
|
|
header "Movable.h"
|
|
export *
|
|
}
|
|
|
|
|
|
//--- StableFrameworks/Stable.framework/Headers/Stable.h
|
|
#import <Movable/Movable.h>
|
|
|
|
//--- StableFrameworks/Stable.framework/Modules/module.modulemap
|
|
framework module Stable {
|
|
header "Stable.h"
|
|
export *
|
|
}
|
|
|
|
|
|
//--- prepopulate-module-cache.m
|
|
#import <Stable/Stable.h>
|
|
|
|
//--- trigger-error.m
|
|
#import <Movable/Movable.h>
|
|
#import <Stable/Stable.h>
|