File: fatal-module-loader-error.m

package info (click to toggle)
llvm-toolchain-21 1%3A21.1.6-2
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 2,245,044 kB
  • sloc: cpp: 7,619,726; ansic: 1,434,018; asm: 1,058,748; python: 252,740; f90: 94,671; objc: 70,685; lisp: 42,813; pascal: 18,401; sh: 8,601; ml: 5,111; perl: 4,720; makefile: 3,666; awk: 3,523; javascript: 2,409; xml: 892; fortran: 770
file content (42 lines) | stat: -rw-r--r-- 1,555 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// This tests that after a fatal module loader error, we do not continue parsing.

// RUN: rm -rf %t
// RUN: split-file %s %t
// RUN: mkdir %t/ModulesCache
// RUN: touch %t/ModulesCache/Unusable.pcm

// RUN: not clang-scan-deps -format experimental-full -mode preprocess-dependency-directives -- \
// RUN:   %clang -fmodules -fimplicit-modules -Xclang -fdisable-module-hash -fmodules-cache-path=%t/ModulesCache \
// RUN:   -F %t/Frameworks -c %t/test.m -o %t/test.o
// RUN: ls %t/ModulesCache | not grep AfterUnusable

//--- Frameworks/Unusable.framework/Headers/Unusable.h
// empty
//--- Frameworks/Unusable.framework/Modules/module.modulemap
framework module Unusable { header "Unusable.h" }

//--- Frameworks/AfterUnusable.framework/Headers/AfterUnusable.h
// empty
//--- Frameworks/AfterUnusable.framework/Modules/module.modulemap
framework module AfterUnusable { header "AfterUnusable.h" }

//--- Frameworks/Importer.framework/Headers/Importer.h
#import <Importer/ImportUnusable.h>
// Parsing should have stopped and we should not handle AfterUnusable.
#import <AfterUnusable/AfterUnusable.h>

//--- Frameworks/Importer.framework/Headers/ImportUnusable.h
// It is important that this header is a submodule.
#import <Unusable/Unusable.h>
// Parsing should have stopped and we should not handle AfterUnusable.
#import <AfterUnusable/AfterUnusable.h>

//--- Frameworks/Importer.framework/Modules/module.modulemap
framework module Importer {
  umbrella header "Importer.h"
  module * { export * }
  export *
}

//--- test.m
#import <Importer/Importer.h>