diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-11-02 01:06:00 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-11-02 01:06:00 +0000 |
commit | f501759a85882e076f5e6a6b3e04651038e0348c (patch) | |
tree | 2028ae16d77bb85a62bbfacf450441baca4db939 /clang/test/Modules/cxx17-inline-variables.cpp | |
parent | 8f6d944721a0881b9fcebf5f1d52339c483c7c63 (diff) | |
download | bcm5719-llvm-f501759a85882e076f5e6a6b3e04651038e0348c.tar.gz bcm5719-llvm-f501759a85882e076f5e6a6b3e04651038e0348c.zip |
PR33746: Store the 'inline'ness of a static data member with the update record
for instantiating its definition.
We model the 'inline'ness as being instantiated with the static data member in
order to track whether the declaration has become a definition yet.
llvm-svn: 317147
Diffstat (limited to 'clang/test/Modules/cxx17-inline-variables.cpp')
-rw-r--r-- | clang/test/Modules/cxx17-inline-variables.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/clang/test/Modules/cxx17-inline-variables.cpp b/clang/test/Modules/cxx17-inline-variables.cpp new file mode 100644 index 00000000000..be6a190a256 --- /dev/null +++ b/clang/test/Modules/cxx17-inline-variables.cpp @@ -0,0 +1,30 @@ +// RUN: %clang_cc1 -std=c++17 -fsyntax-only -fmodules %s + +#pragma clang module build a +module a {} +#pragma clang module contents +#pragma clang module begin a + +template <class c, c e> struct ak { static constexpr c value = e; }; +ak<bool, true> instantiate_class_definition; + +#pragma clang module end /* a */ +#pragma clang module endbuild + + +#pragma clang module build o +module o {} +#pragma clang module contents +#pragma clang module begin o +#pragma clang module import a + +inline int instantiate_var_definition() { return ak<bool, true>::value; } + +#pragma clang module end +#pragma clang module endbuild + + +#pragma clang module import o +#pragma clang module import a + +int main() { return ak<bool, true>::value; } |