brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.7 KiB · a434587 Raw
193 lines · cpp
1// The driver never checks to implicitly enable the explicit module build 2// support unless at least two input files are provided.3// To trigger the C++20 module usage check, we always pass a second dummy file4// as input.5// TODO: Remove -fmodules everywhere once implicitly enabled explicit module 6// builds are supported.7 8// RUN: split-file %s %t9//--- empty.cpp10// Nothing here11 12//--- only-global.cpp13// RUN: %clang -std=c++20 -ccc-print-phases -fmodules-driver -Rmodules-driver \14// RUN:   %t/only-global.cpp %t/empty.cpp 2>&1 \15// RUN:   | FileCheck %s --check-prefix=CHECK116// CHECK1: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]17module;18 19//--- only-import.cpp20// RUN: %clang -std=c++20 -ccc-print-phases -fmodules-driver -Rmodules-driver \21// RUN:   %t/only-import.cpp %t/empty.cpp 2>&1 \22// RUN:   | FileCheck %s --check-prefix=CHECK223// CHECK2: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]24import A;25 26//--- only-export.cpp27// RUN: %clang -std=c++20 -ccc-print-phases -fmodules-driver -Rmodules-driver \28// RUN:   %t/only-export.cpp %t/empty.cpp 2>&1 \29// RUN:   | FileCheck %s --check-prefix=CHECK330// CHECK3: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]31export module A;32 33//--- leading-line-comment.cpp34// RUN: %clang -std=c++20 -ccc-print-phases -fmodules-driver -Rmodules-driver \35// RUN:   %t/leading-line-comment.cpp %t/empty.cpp 2>&1 \36// RUN:   | FileCheck %s --check-prefix=CHECK437// CHECK4: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]38// My line comment39import A;40 41//--- leading-block-comment1.cpp42// RUN: %clang -std=c++20 -ccc-print-phases -fmodules-driver -Rmodules-driver \43// RUN:   %t/leading-block-comment1.cpp %t/empty.cpp 2>&1 \44// RUN:   | FileCheck %s --check-prefix=CHECK545// CHECK5: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]46/*My block comment */47import A;48 49//--- leading-block-comment2.cpp50// RUN: %clang -std=c++20 -ccc-print-phases -fmodules-driver -Rmodules-driver \51// RUN:   %t/leading-block-comment2.cpp %t/empty.cpp 2>&1 \52// RUN:   | FileCheck %s --check-prefix=CHECK653// CHECK6: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]54/*My line comment */ import A;55 56//--- inline-block-comment1.cpp57// RUN: %clang -std=c++20 -ccc-print-phases -fmodules-driver -Rmodules-driver \58// RUN:   %t/leading-block-comment1.cpp %t/empty.cpp 2>&1 \59// RUN:   | FileCheck %s --check-prefix=CHECK760// CHECK7: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]61export/*a comment*/module/*another comment*/A;62 63//--- inline-block-comment2.cpp64// RUN: %clang -std=c++20 -ccc-print-phases -fmodules-driver -Rmodules-driver \65// RUN:   %t/leading-block-comment2.cpp %t/empty.cpp 2>&1 \66// RUN:   | FileCheck %s --check-prefix=CHECK867// CHECK8: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]68module/*a comment*/;69 70//--- leading-directives.cpp71// RUN: %clang -std=c++23 -ccc-print-phases -fmodules-driver -Rmodules-driver \72// RUN:   %t/leading-directives.cpp %t/empty.cpp 2>&1 \73// RUN:   | FileCheck %s --check-prefix=CHECK974// CHECK9: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]75#define A76#undef A77#if A78#ifdef A79#elifdef A80#elifndef A81#endif82#ifndef A83#elif A84#else85#endif86#endif87#pragma once;88#include <iostream>89import m;90 91//--- multiline-directive.cpp92// RUN: %clang -std=c++23 -ccc-print-phases -fmodules-driver -Rmodules-driver \93// RUN:   %t/multiline-directive.cpp %t/empty.cpp 2>&1 \94// RUN:   | FileCheck %s --check-prefix=CHECK1095// CHECK10: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]96#define MACRO(a,  \97              b)  \98        call((a), \99             (b)100import a;101 102//--- leading-line-splice.cpp103// RUN: %clang -std=c++23 -ccc-print-phases -fmodules-driver -Rmodules-driver \104// RUN:   %t/leading-line-splice.cpp %t/empty.cpp 2>&1 \105// RUN:   | FileCheck %s --check-prefix=CHECK11106// CHECK11: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]107\108module;109 110//--- leading-line-splice-trailing-whitespace.cpp111// RUN: %clang -std=c++23 -ccc-print-phases -fmodules-driver -Rmodules-driver \112// RUN:   %t/leading-line-splice-trailing-whitespace.cpp %t/empty.cpp 2>&1 \113// RUN:   | FileCheck %s --check-prefix=CHECK12114// CHECK12: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]115// v This backslash has trailing whitespace.116   \      117export module A;118 119//--- comment-line-splice.cpp120// RUN: %clang -std=c++23 -ccc-print-phases -fmodules-driver -Rmodules-driver \121// RUN:   %t/comment-line-splice.cpp %t/empty.cpp 2>&1 \122// RUN:   | FileCheck %s  --allow-empty --check-prefix=CHECK13123// CHECK13-NOT: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]124// My comment continues next-line!\125import A;126 127//--- comment-line-splice-trailing-whitespace.cpp128// RUN: %clang -std=c++23 -ccc-print-phases -fmodules-driver -Rmodules-driver \129// RUN:   %t/comment-line-splice-trailing-whitespace.cpp %t/empty.cpp 2>&1 \130// RUN:   | FileCheck %s --allow-empty --check-prefix=CHECK14131// CHECK14-NOT: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]132// My comment continues next-line! This backslash has trailing whitespace. -> \   133module;134 135//--- line-splice-in-directive1.cpp136// RUN: %clang -std=c++23 -ccc-print-phases -fmodules-driver -Rmodules-driver \137// RUN:   %t/line-splice-in-directive1.cpp %t/empty.cpp 2>&1 \138// RUN:   | FileCheck %s --check-prefix=CHECK15139// CHECK15: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]140 141module\142;143 144//--- line-splice-in-directive2.cpp145// RUN: %clang -std=c++23 -ccc-print-phases -fmodules-driver -Rmodules-driver \146// RUN:   %t/line-splice-in-directive2.cpp %t/empty.cpp 2>&1 \147// RUN:   | FileCheck %s --check-prefix=CHECK16148// CHECK16: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]149 150export\151  module\152  A;153 154//--- no-module-usage1.cpp155// RUN: %clang -std=c++23 -ccc-print-phases -fmodules-driver -Rmodules-driver \156// RUN:   %t/no-module-usage1.cpp %t/empty.cpp 2>&1 \157// RUN:   | FileCheck %s  --allow-empty --check-prefix=CHECK17158// CHECK17-NOT: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]159auto main() -> int {}160 161//--- no-module-usage2.cpp162// RUN: %clang -std=c++23 -ccc-print-phases -fmodules-driver -Rmodules-driver \163// RUN:   %t/no-module-usage2.cpp %t/empty.cpp 2>&1 \164// RUN:   | FileCheck %s  --allow-empty --check-prefix=CHECK18165// CHECK18-NOT: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]166moduleStruct{};167 168//--- no-module-usage3.cpp169// RUN: %clang -std=c++23 -ccc-print-phases -fmodules-driver -Rmodules-driver \170// RUN:   %t/no-module-usage3.cpp %t/empty.cpp 2>&1 \171// RUN:   | FileCheck %s  --allow-empty --check-prefix=CHECK19172// CHECK19-NOT: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]173export_struct{};174 175//--- no-module-usage-namespace-import.cpp176// RUN: %clang -std=c++23 -ccc-print-phases -fmodules-driver -Rmodules-driver \177// RUN:   %t/no-module-usage-namespace-import.cpp %t/empty.cpp 2>&1 \178// RUN:   | FileCheck %s  --allow-empty --check-prefix=CHECK20179// CHECK20-NOT: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]180import::inner xi = {};181 182//--- no-module-usage-namespace-module.cpp183// RUN: %clang -std=c++23 -ccc-print-phases -fmodules-driver -Rmodules-driver \184// RUN:   %t/no-module-usage-namespace-module.cpp %t/empty.cpp 2>&1 \185// RUN:   | FileCheck %s  --allow-empty --check-prefix=CHECK21186// CHECK21-NOT: remark: found C++20 module usage in file '{{.*}}' [-Rmodules-driver]187module::inner yi = {};188 189// RUN: not %clang -std=c++20 -ccc-print-phases -fmodules-driver -Rmodules-driver \190// RUN:   imaginary-file.cpp %t/empty.cpp 2>&1 \191// RUN:   | FileCheck %s --check-prefix=CHECK-NON-EXISTING-FILE-ERR192// CHECK-NON-EXISTING-FILE-ERR: clang: error: no such file or directory: 'imaginary-file.cpp'193