mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-05 23:52:45 +00:00
c1f76363e0
Close https://github.com/llvm/llvm-project/issues/62112 In the previous change, we'll stop parsing directly after we found reserved module names. But this may be too aggressive. This patch changes this. Note that the parsing will still be stopped if the module name is `module` or `import`.
155 lines
7.6 KiB
C++
155 lines
7.6 KiB
C++
// RUN: rm -rf %t
|
|
// RUN: mkdir -p %t
|
|
// RUN: split-file %s %t
|
|
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/module.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -Wno-reserved-module-identifier %t/module.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/import.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -Wno-reserved-module-identifier %t/import.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/_Test.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -DNODIAGNOSTICS -Wno-reserved-module-identifier %t/_Test.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/__test.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -DNODIAGNOSTICS -Wno-reserved-module-identifier %t/__test.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/te__st.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -DNODIAGNOSTICS -Wno-reserved-module-identifier %t/te__st.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/std.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -Wno-reserved-module-identifier %t/std.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/std.foo.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -Wno-reserved-module-identifier %t/std.foo.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/std0.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -Wno-reserved-module-identifier %t/std0.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/std1000000.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -Wno-reserved-module-identifier %t/std1000000.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/module.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -Wno-reserved-module-identifier %t/module.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/import.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -Wno-reserved-module-identifier %t/import.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/_Test.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -DNODIAGNOSTICS -Wno-reserved-module-identifier %t/_Test.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/__test.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -DNODIAGNOSTICS -Wno-reserved-module-identifier %t/__test.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/te__st.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -DNODIAGNOSTICS -Wno-reserved-module-identifier %t/te__st.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/std.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -DNODIAGNOSTICS -Wno-reserved-module-identifier %t/std.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/std.foo.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -DNODIAGNOSTICS -Wno-reserved-module-identifier %t/std.foo.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/std0.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -DNODIAGNOSTICS -Wno-reserved-module-identifier %t/std0.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/std1000000.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -DNODIAGNOSTICS -Wno-reserved-module-identifier %t/std1000000.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/should_diag._Test.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -DNODIAGNOSTICS -Wno-reserved-module-identifier %t/should_diag._Test.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/system-module.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -Wno-reserved-module-identifier %t/system-module.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/system._Test.import.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -Wno-reserved-module-identifier %t/system._Test.import.cppm
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected,loud %t/user.cpp
|
|
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify=expected -Wno-reserved-module-identifier %t/user.cpp
|
|
|
|
//--- module.cpp
|
|
module module; // expected-error {{'module' is an invalid name for a module}}
|
|
|
|
//--- import.cpp
|
|
module import; // expected-error {{'import' is an invalid name for a module}}
|
|
|
|
//--- _Test.cpp
|
|
module _Test; // loud-warning {{'_Test' is a reserved name for a module}} \
|
|
// expected-error {{module '_Test' not found}}
|
|
|
|
//--- __test.cpp
|
|
module __test; // loud-warning {{'__test' is a reserved name for a module}} \
|
|
// expected-error {{module '__test' not found}}
|
|
|
|
//--- te__st.cpp
|
|
module te__st; // loud-warning {{'te__st' is a reserved name for a module}} \
|
|
// expected-error {{module 'te__st' not found}}
|
|
|
|
//--- std.cpp
|
|
module std; // loud-warning {{'std' is a reserved name for a module}} \
|
|
// expected-error {{module 'std' not found}}
|
|
|
|
//--- std.foo.cpp
|
|
module std.foo; // loud-warning {{'std' is a reserved name for a module}} \
|
|
// expected-error {{module 'std.foo' not found}}
|
|
|
|
//--- std0.cpp
|
|
module std0; // loud-warning {{'std0' is a reserved name for a module}} \
|
|
// expected-error {{module 'std0' not found}}
|
|
|
|
//--- std1000000.cpp
|
|
module std1000000; // loud-warning {{'std1000000' is a reserved name for a module}} \
|
|
// expected-error {{module 'std1000000' not found}}
|
|
|
|
//--- module.cppm
|
|
export module module; // expected-error {{'module' is an invalid name for a module}}
|
|
|
|
//--- import.cppm
|
|
export module import; // expected-error {{'import' is an invalid name for a module}}
|
|
|
|
//--- _Test.cppm
|
|
#ifdef NODIAGNOSTICS
|
|
// expected-no-diagnostics
|
|
#endif
|
|
export module _Test; // loud-warning {{'_Test' is a reserved name for a module}}
|
|
|
|
//--- __test.cppm
|
|
#ifdef NODIAGNOSTICS
|
|
// expected-no-diagnostics
|
|
#endif
|
|
export module __test; // loud-warning {{'__test' is a reserved name for a module}}
|
|
export int a = 43;
|
|
|
|
//--- te__st.cppm
|
|
#ifdef NODIAGNOSTICS
|
|
// expected-no-diagnostics
|
|
#endif
|
|
export module te__st; // loud-warning {{'te__st' is a reserved name for a module}}
|
|
export int a = 43;
|
|
|
|
//--- std.cppm
|
|
#ifdef NODIAGNOSTICS
|
|
// expected-no-diagnostics
|
|
#endif
|
|
export module std; // loud-warning {{'std' is a reserved name for a module}}
|
|
|
|
export int a = 43;
|
|
|
|
//--- std.foo.cppm
|
|
#ifdef NODIAGNOSTICS
|
|
// expected-no-diagnostics
|
|
#endif
|
|
export module std.foo;// loud-warning {{'std' is a reserved name for a module}}
|
|
|
|
//--- std0.cppm
|
|
#ifdef NODIAGNOSTICS
|
|
// expected-no-diagnostics
|
|
#endif
|
|
export module std0; // loud-warning {{'std0' is a reserved name for a module}}
|
|
|
|
//--- std1000000.cppm
|
|
#ifdef NODIAGNOSTICS
|
|
// expected-no-diagnostics
|
|
#endif
|
|
export module std1000000; // loud-warning {{'std1000000' is a reserved name for a module}}
|
|
|
|
//--- should_diag._Test.cppm
|
|
#ifdef NODIAGNOSTICS
|
|
// expected-no-diagnostics
|
|
#endif
|
|
export module should_diag._Test; // loud-warning {{'_Test' is a reserved name for a module}}
|
|
|
|
//--- system-module.cppm
|
|
// Show that being in a system header doesn't save you from diagnostics about
|
|
// use of an invalid module-name identifier.
|
|
# 34 "reserved-names-1.cpp" 1 3
|
|
export module module; // expected-error {{'module' is an invalid name for a module}}
|
|
|
|
//--- system._Test.import.cppm
|
|
# 34 "reserved-names-1.cpp" 1 3
|
|
export module _Test.import; // expected-error {{'import' is an invalid name for a module}}
|
|
|
|
//--- user.cpp
|
|
// We can still use a reserved name on imoport.
|
|
import std; // expected-error {{module 'std' not found}}
|