116 lines · plain
1// Note: the run lines follow their respective tests, since line/column2// matter in this test.3 4// pcherror-error-re@* {{module file '{{.*}}use_error_a.pcm' contains compiler errors}}5@import use_error_a; // notallowerror-error {{could not build module 'use_error_a'}}6@import use_error_b;7// expected-no-diagnostics8 9void test(Error *x) {10 funca(x);11 funcb(x);12 [x method];13}14 15// RUN: rm -rf %t16// RUN: mkdir %t17// RUN: mkdir %t/prebuilt18 19// RUN: %clang_cc1 -fmodules -fallow-pcm-with-compiler-errors \20// RUN: -fmodule-name=error -o %t/prebuilt/error.pcm \21// RUN: -x objective-c -emit-module %S/Inputs/error/module.modulemap22// RUN: %clang_cc1 -fmodules -fallow-pcm-with-compiler-errors \23// RUN: -fmodule-file=error=%t/prebuilt/error.pcm \24// RUN: -fmodule-name=use_error_a -o %t/prebuilt/use_error_a.pcm \25// RUN: -x objective-c -emit-module %S/Inputs/error/module.modulemap26// RUN: %clang_cc1 -fmodules -fallow-pcm-with-compiler-errors \27// RUN: -fmodule-file=error=%t/prebuilt/error.pcm \28// RUN: -fmodule-name=use_error_b -o %t/prebuilt/use_error_b.pcm \29// RUN: -x objective-c -emit-module %S/Inputs/error/module.modulemap30 31// Prebuilt modules32// RUN: %clang_cc1 -fmodules -fallow-pcm-with-compiler-errors \33// RUN: -fprebuilt-module-path=%t/prebuilt -fmodules-cache-path=%t \34// RUN: -ast-print %s | FileCheck %s35// RUN: %clang_cc1 -fsyntax-only -fmodules \36// RUN: -fprebuilt-module-path=%t/prebuilt -fmodules-cache-path=%t \37// RUN: -verify=pcherror %s38 39// Explicit prebuilt modules (loaded when needed)40// RUN: %clang_cc1 -fmodules -fallow-pcm-with-compiler-errors \41// RUN: -fmodule-file=error=%t/prebuilt/error.pcm \42// RUN: -fmodule-file=use_error_a=%t/prebuilt/use_error_a.pcm \43// RUN: -fmodule-file=use_error_b=%t/prebuilt/use_error_b.pcm \44// RUN: -fmodules-cache-path=%t -ast-print %s | FileCheck %s45// RUN: %clang_cc1 -fsyntax-only -fmodules \46// RUN: -fmodule-file=error=%t/prebuilt/error.pcm \47// RUN: -fmodule-file=use_error_a=%t/prebuilt/use_error_a.pcm \48// RUN: -fmodule-file=use_error_b=%t/prebuilt/use_error_b.pcm \49// RUN: -fmodules-cache-path=%t -verify=pcherror %s50 51// Explicit prebuilt modules without name (always loaded)52// RUN: %clang_cc1 -fmodules -fallow-pcm-with-compiler-errors \53// RUN: -fmodule-file=%t/prebuilt/error.pcm \54// RUN: -fmodule-file=%t/prebuilt/use_error_a.pcm \55// RUN: -fmodule-file=%t/prebuilt/use_error_b.pcm \56// RUN: -fmodules-cache-path=%t -ast-print %s | FileCheck %s57// As the modules are always loaded, compiling will fail before even parsing58// this file - this means that -verify can't be used, so do a grep instead.59// RUN: not %clang_cc1 -fsyntax-only -fmodules \60// RUN: -fmodule-file=%t/prebuilt/error.pcm \61// RUN: -fmodule-file=%t/prebuilt/use_error_a.pcm \62// RUN: -fmodule-file=%t/prebuilt/use_error_b.pcm \63// RUN: -fmodules-cache-path=%t 2>&1 | \64// RUN: grep "module file .* contains compiler errors"65 66// Shouldn't build the cached modules (that have errors) when not allowing67// errors68// RUN: not %clang_cc1 -fsyntax-only -fmodules \69// RUN: -fmodules-cache-path=%t -fimplicit-module-maps -I %S/Inputs/error \70// RUN: -x objective-c %s71// RUN: find %t -name "error-*.pcm" | not grep error72 73// Should build the cached modules when allowing errors74// RUN: %clang_cc1 -fsyntax-only -fmodules -fallow-pcm-with-compiler-errors \75// RUN: -fmodules-cache-path=%t -fimplicit-module-maps -I %S/Inputs/error \76// RUN: -x objective-c -verify %s77// RUN: find %t -name "error-*.pcm" | grep error78// RUN: find %t -name "use_error_a-*.pcm" | grep use_error_a79// RUN: find %t -name "use_error_b-*.pcm" | grep use_error_b80 81// Check build when the modules are already cached82// RUN: %clang_cc1 -fsyntax-only -fmodules -fallow-pcm-with-compiler-errors \83// RUN: -fmodules-cache-path=%t -fimplicit-module-maps -I %S/Inputs/error \84// RUN: -x objective-c -verify %s85 86// Should rebuild the cached module if it had an error (if it wasn't rebuilt87// the verify would fail as it would be the PCH error instead)88// RUN: %clang_cc1 -fsyntax-only -fmodules \89// RUN: -fmodules-cache-path=%t -fimplicit-module-maps -I %S/Inputs/error \90// RUN: -x objective-c %s -verify=notallowerror91 92// allow-pcm-with-compiler-errors should also allow errors in PCH93// RUN: %clang_cc1 -fallow-pcm-with-compiler-errors -x objective-c \94// RUN: -o %t/check.pch -emit-pch %S/Inputs/error/error.h95 96// CHECK: @interface Error97// CHECK-NEXT: - (int)method;98// CHECK-NEXT: - (id)method2;99// CHECK-NEXT: @end100// CHECK: void test(Error *x)101 102// RUN: c-index-test -code-completion-at=%s:12:6 %s -fmodules -fmodules-cache-path=%t \103// RUN: -Xclang -fallow-pcm-with-compiler-errors -I %S/Inputs/error | FileCheck -check-prefix=COMPLETE %s104// COMPLETE: ObjCInstanceMethodDecl:{ResultType int}{TypedText method}105// COMPLETE: ObjCInstanceMethodDecl:{ResultType id}{TypedText method2}106 107// RUN: c-index-test -test-load-source local %s -fmodules -fmodules-cache-path=%t \108// RUN: -Xclang -fallow-pcm-with-compiler-errors -I %S/Inputs/error | FileCheck -check-prefix=SOURCE %s109// SOURCE: load-module-with-errors.m:9:6: FunctionDecl=test:9:6 (Definition) Extent=[9:1 - 13:2]110// SOURCE: load-module-with-errors.m:9:18: ParmDecl=x:9:18 (Definition) Extent=[9:11 - 9:19]111// SOURCE: load-module-with-errors.m:9:11: ObjCClassRef=Error:5:12 Extent=[9:11 - 9:16]112// SOURCE: load-module-with-errors.m:9:21: CompoundStmt= Extent=[9:21 - 13:2]113// SOURCE: load-module-with-errors.m:10:3: CallExpr=funca:3:6 Extent=[10:3 - 10:11]114// SOURCE: load-module-with-errors.m:11:3: CallExpr=funcb:3:6 Extent=[11:3 - 11:11]115// SOURCE: load-module-with-errors.m:12:3: ObjCMessageExpr=method:6:8 Extent=[12:3 - 12:13]116