| // RUN: %clang_cc1 -std=c++2a -verify %s |
| // RUN: %clang_cc1 -std=c++2a -verify %s -DIMPORT_ERROR=1 |
| // RUN: %clang_cc1 -std=c++2a -verify %s -DIMPORT_ERROR=2 |
| struct import { struct inner {}; }; |
| struct module { struct inner {}; }; |
| // Import errors are fatal, so we test them in isolation. |
| import x = {}; // expected-error {{module 'x' not found}} |
| template<int> struct import; |
| template<> struct import<n> { |
| // This is not valid because the 'import <n>' is a pp-import, even though it |
| // grammatically can't possibly be an import declaration. |
| struct X {} import<n>::y; // expected-error {{'n' file not found}} |
| module y = {}; // expected-error {{multiple module declarations}} expected-error 2{{}} |
| // expected-note@#1 {{previous module declaration}} |
| extern "C++" module cxxm; |
| extern "C++" import cxxi; |
| template<typename T> module module_var_template; |
| // This is a variable named 'import' that shadows the type 'import' above. |