xref: /aosp_15_r20/external/clang/test/SemaCXX/attr-visibility.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s
2*67e74705SXin Li 
3*67e74705SXin Li template <class Element>
foo()4*67e74705SXin Li void foo() {
5*67e74705SXin Li }
6*67e74705SXin Li template <>
7*67e74705SXin Li  __attribute__((visibility("hidden")))  // expected-note {{previous attribute is here}}
8*67e74705SXin Li void foo<int>();
9*67e74705SXin Li 
10*67e74705SXin Li template <>
11*67e74705SXin Li void foo<int>();
12*67e74705SXin Li 
13*67e74705SXin Li template <>
14*67e74705SXin Li  __attribute__((visibility("default"))) // expected-error {{visibility does not match previous declaration}}
foo()15*67e74705SXin Li void foo<int>() {
16*67e74705SXin Li }
17*67e74705SXin Li 
18*67e74705SXin Li struct x3 {
19*67e74705SXin Li   static int y;
20*67e74705SXin Li } __attribute((visibility("default"))); // expected-warning {{attribute 'visibility' after definition is ignored}}
21