diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2015-08-06 18:46:36 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2015-08-06 18:46:36 +0000 |
commit | a92d840d5a612188f17e71f3366bc3f9a0f3f39e (patch) | |
tree | 68140afb70988b92f06e3a67795f79027790cc59 /test/Misc | |
parent | 2cdd8a6534f656e6309b9bcfa4a60592f0ace1da (diff) | |
download | clang-a92d840d5a612188f17e71f3366bc3f9a0f3f39e.tar.gz |
[Frontend] Fix crash when serializing diagnostics with really long text.
rdar://21896690
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@244245 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Misc')
-rw-r--r-- | test/Misc/serialized-diags-really-long-text.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/Misc/serialized-diags-really-long-text.cpp b/test/Misc/serialized-diags-really-long-text.cpp new file mode 100644 index 0000000000..2cdd50994a --- /dev/null +++ b/test/Misc/serialized-diags-really-long-text.cpp @@ -0,0 +1,30 @@ +// Make sure that diagnostics serialization does not crash with a really long diagnostic text. + +// RUN: not %clang_cc1 -std=c++11 %s -serialize-diagnostic-file %t.dia +// RUN: c-index-test -read-diagnostics %t.dia 2>&1 | FileCheck %s + +typedef class AReallyLooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongName {} alias; + +template <int N, typename ...T> +struct MyTS { + typedef MyTS<N-1, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, + alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, + alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, + alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, + alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, + alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, + alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, + alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, + alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, alias, T...> type; + static type callme() { + return type::callme(); + } +}; + +template <typename ...T> +struct MyTS<0, T...> {}; + +void foo() { + // CHECK: [[@LINE+1]]:20: note: in instantiation of member function + int e = MyTS<2>::callme(); +} |