// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s

int a<::> = { 1, 2, 3 };
int b = a<:::a<:0:>:>;
bool c = a<:0:><::b;

template<int &n> void f() {}
template void f<::b>();

#define x a<:: ## : b :>
int d = x; // expected-error {{pasting formed ':::', an invalid preprocessing token}} expected-error {{expected unqualified-id}}

// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s

int a<::> = { 1, 2, 3 };
int b = a<:::a<:0:>:>;
bool c = a<:0:><::b;

template<int &n> void f() {}
template void f<::b>();

#define x a<:: ## : b :>
int d = x; // expected-error {{pasting formed ':::', an invalid preprocessing token}} expected-error {{expected unqualified-id}}

const char xs[] = R"(\
??=\U0000)";
static_assert(sizeof(xs) == 12, "did not revert all changes");

Test that we correctly handle reversion of line splicing etc in raw string literals. As suggested by Sean Silva.
Test that we correctly handle reversion of line splicing etc in raw string
literals. As suggested by Sean Silva.


git-svn-id: ffe668792ed300d6c2daa1f6eba2e0aa28d7ec6c@172694 91177308-0d34-0410-b5e6-96231b3b80d8
