llvm-project/clang/test/Modules/exclude-header-fw-umbrella.m
Jan Svoboda 5865476879 [clang][modules] Fix handling of ModuleHeaderRole::ExcludedHeader
This is a follow-up to D134224. The original patch added new `ExcludedHeader` enumerator to `ModuleMap::ModuleHeaderRole` and started associating headers with the modules they were excluded from. This was necessary to consider their module maps as "affecting" in certain situations and in turn serialize them into the PCM.

The association of the header and module needs to be handled when deserializing the PCM as well, though. This patch fixes a potential assertion failure and a regression. This essentially reverts parts of feb54b6ded123f8118fdc20620d3f657dfeab485.

Reviewed By: Bigcheese

Differential Revision: https://reviews.llvm.org/D135381
2022-10-06 16:20:24 -07:00

26 lines
611 B
Objective-C

// RUN: rm -rf %t
// RUN: split-file %s %t
//--- frameworks/A.framework/Modules/module.modulemap
framework module A {
umbrella header "A.h"
exclude header "Excluded.h"
module Excluded {
header "Excluded.h"
}
}
//--- frameworks/A.framework/Headers/A.h
#import <A/Sub.h>
//--- frameworks/A.framework/Headers/Sub.h
//--- frameworks/A.framework/Headers/Excluded.h
#import <A/Sub.h>
@interface I
@end
//--- tu.m
#import <A/Excluded.h>
// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/cache -iframework %t/frameworks -fsyntax-only %t/tu.m -verify
// expected-no-diagnostics