// RUN: %clang_cc1 -fsyntax-only -verify %s
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
// RUN: cp %s %t
// RUN: not %clang_cc1 -x c++ -fixit %t -DFIXING
// RUN: %clang_cc1 -x c++ %t -DFIXING
void
// expected-note@-2 {{explicit instantiation refers here}}
void
// expected-note@-2 {{explicit instantiation refers here}}
;
// expected-note@-2 {{explicit instantiation refers here}}
; // expected-note {{declared here}}
void
void
; // expected-note {{explicitly specialized declaration is here}}
;
// Should recover as if definition
// Explicit specializations expected in global scope
void
; // expected-note {{explicitly specialized declaration is here}}
// Should recover as if specializations,
// thus also complain about not being in global scope.
void
;
// Should recover as if specializations
// expected-error {{explicit template instantiation cannot have a definition; if this definition is meant to be an explicit specialization, add '<>' after the 'template' keyword}}
; // expected-error {{explicit template instantiation cannot have a definition; if this definition is meant to be an explicit specialization, add '<>' after the 'template' keyword}}