xref: /llvm-project/clang/test/SemaTemplate/overloaded-functions.cpp (revision 15b66535cae9ec01c643b5dde8c45d468ab1ee67)
1*15b66535SRichard Trieu // RUN: %clang_cc1 -fsyntax-only -verify %s
2*15b66535SRichard Trieu 
3*15b66535SRichard Trieu namespace {
4*15b66535SRichard Trieu template <bool, typename>
Foo()5*15b66535SRichard Trieu void Foo() {}
6*15b66535SRichard Trieu 
7*15b66535SRichard Trieu template <int size>
Foo()8*15b66535SRichard Trieu void Foo() {
9*15b66535SRichard Trieu   int arr[size];
10*15b66535SRichard Trieu   // expected-error@-1 {{'arr' declared as an array with a negative size}}
11*15b66535SRichard Trieu }
12*15b66535SRichard Trieu }
13*15b66535SRichard Trieu 
test_foo()14*15b66535SRichard Trieu void test_foo() {
15*15b66535SRichard Trieu   Foo<-1>();
16*15b66535SRichard Trieu   // expected-note@-1 {{in instantiation of function template specialization '(anonymous namespace)::Foo<-1>' requested here}}
17*15b66535SRichard Trieu }
18*15b66535SRichard Trieu 
19*15b66535SRichard Trieu template <bool, typename>
Bar()20*15b66535SRichard Trieu void Bar() {}
21*15b66535SRichard Trieu 
22*15b66535SRichard Trieu template <int size>
Bar()23*15b66535SRichard Trieu void Bar() {
24*15b66535SRichard Trieu   int arr[size];
25*15b66535SRichard Trieu   // expected-error@-1 {{'arr' declared as an array with a negative size}}
26*15b66535SRichard Trieu }
27*15b66535SRichard Trieu 
test_bar()28*15b66535SRichard Trieu void test_bar() {
29*15b66535SRichard Trieu   Bar<-1>();
30*15b66535SRichard Trieu   // expected-note@-1 {{in instantiation of function template specialization 'Bar<-1>' requested here}}
31*15b66535SRichard Trieu }
32*15b66535SRichard Trieu 
33