17518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis// Without PCH 27518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis// RUN: %clang_cc1 -fsyntax-only -verify -include %s -include %s %s 37518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis 47518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis// With PCH 57518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis// RUN: %clang_cc1 -fsyntax-only -verify %s -chain-include %s -chain-include %s 67518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis 77518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis#ifndef HEADER1 87518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis#define HEADER1 97518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis//===----------------------------------------------------------------------===// 107518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis 117518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidisnamespace NS { 127518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis 137518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidistemplate <class _Tp, _Tp __v> 147518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidisstruct TS 157518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis{ 167518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis static const _Tp value = __v; 177518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis}; 187518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis 197518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidistemplate <class _Tp, _Tp __v> 207518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidisconst _Tp TS<_Tp, __v>::value; 217518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis 227518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios KyrtzidisTS<int, 2> g1; 237518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis 247518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis} 257518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis 267518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis//===----------------------------------------------------------------------===// 277518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis#elif not defined(HEADER2) 287518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis#define HEADER2 297518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis#if !defined(HEADER1) 307518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis#error Header inclusion order messed up 317518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis#endif 327518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis 337518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidisint g2 = NS::TS<int, 2>::value; 347518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis 357518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis//===----------------------------------------------------------------------===// 367518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis#else 377518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis//===----------------------------------------------------------------------===// 387518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis 3978541c433049322b27b4f437973076ba29cff709Jordan Rose// expected-warning@+1 {{reached main file}} 4078541c433049322b27b4f437973076ba29cff709Jordan Rose#warning reached main file 417518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis 427518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidisint g3 = NS::TS<int, 2>::value; 437518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis 447518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis//===----------------------------------------------------------------------===// 457518b3784ed2176aad8dcabe0685c6e02c5f1043Argyrios Kyrtzidis#endif 46