This PR reapply https://github.com/llvm/llvm-project/pull/157726. Depends: https://github.com/llvm/llvm-project/pull/107168 This patch handle `@import` as a preprocessing directive, and since this patch, the following import directive will be ill-formed: ``` @import Foo\n; ``` --------- Signed-off-by: yronglin <yronglin777@gmail.com>
58 lines
1.4 KiB
Plaintext
58 lines
1.4 KiB
Plaintext
## Tests the case where we fail to import modules from @import
|
|
## statements that are part of the expression being run.
|
|
#
|
|
# REQUIRES: system-darwin
|
|
#
|
|
# RUN: split-file %s %t/sources
|
|
# RUN: %clang_host -g %t/sources/main.m -fmodules -fcxx-modules \
|
|
# RUN: -fmodule-map-file=%t/sources/module.modulemap \
|
|
# RUN: -fmodules-cache-path=%t/ModuleCache -o %t.out
|
|
#
|
|
# RUN: sed -i '' -e 's/foo\.h/baz\.h/' %t/sources/module.modulemap
|
|
#
|
|
# RUN: %lldb -x -o "settings set interpreter.stop-command-source-on-error false" \
|
|
# RUN: -s %t/sources/commands.input %t.out -o exit 2>&1 | FileCheck %s
|
|
|
|
#--- main.m
|
|
@import foo;
|
|
@import bar;
|
|
|
|
int main() { __builtin_debugtrap(); }
|
|
|
|
#--- foo.h
|
|
struct foo {};
|
|
|
|
#--- bar.h
|
|
struct bar {};
|
|
|
|
#--- module.modulemap
|
|
module foo {
|
|
header "foo.h"
|
|
export *
|
|
}
|
|
|
|
module bar {
|
|
header "bar.h"
|
|
export *
|
|
}
|
|
|
|
#--- commands.input
|
|
run
|
|
## Make sure expression fails so the 'note' diagnostics get printed.
|
|
expr @import Foo
|
|
expr @import Bar
|
|
expr @import foo
|
|
|
|
# CHECK: error: while importing modules:
|
|
# CHECK-NEXT: header search couldn't locate module 'Foo'
|
|
#
|
|
# CHECK: error: while importing modules:
|
|
# CHECK-NEXT: header search couldn't locate module 'Bar'
|
|
#
|
|
# CHECK: expr @import foo
|
|
# CHECK: error: while importing modules:
|
|
# CHECK-NEXT: couldn't load top-level module foo
|
|
## No mention of the previous import errors.
|
|
# CHECK-NOT: Foo
|
|
# CHECK-NOT: Bar
|