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 | e26aea5b290165f3bccffab662a706d4a56f7540 (patch) | |
| tree | 944d0fdb2845ca762862e3edcbb473891eeea9ee /clang/test/Misc | |
| parent | 6443cce233c5f08e41cb23616072c1764926a8c3 (diff) | |
| download | bcm5719-llvm-e26aea5b290165f3bccffab662a706d4a56f7540.tar.gz bcm5719-llvm-e26aea5b290165f3bccffab662a706d4a56f7540.zip | |
[Frontend] Fix crash when serializing diagnostics with really long text.
rdar://21896690
llvm-svn: 244245
Diffstat (limited to 'clang/test/Misc')
| -rw-r--r-- | clang/test/Misc/serialized-diags-really-long-text.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/clang/test/Misc/serialized-diags-really-long-text.cpp b/clang/test/Misc/serialized-diags-really-long-text.cpp new file mode 100644 index 00000000000..2cdd50994a3 --- /dev/null +++ b/clang/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(); +} |

