mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-08 09:03:18 +00:00
adf66b6174
This also clarifies some terminology used by the diagnostic (methods -> Objective-C methods, fields -> non-static data members, etc). Many of the tests needed to be updated in multiple places for the diagnostic wording tweaks. The first instance of the diagnostic for that attribute is fully specified and subsequent instances cut off the complete list (to make it easier if additional subjects are added in the future for the attribute). llvm-svn: 319002
48 lines
2.0 KiB
C++
48 lines
2.0 KiB
C++
// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
|
|
|
|
int f() __attribute__((internal_linkage));
|
|
|
|
class A;
|
|
class __attribute__((internal_linkage)) A {
|
|
public:
|
|
int x __attribute__((internal_linkage)); // expected-warning{{'internal_linkage' attribute only applies to variables, functions, and classes}}
|
|
static int y __attribute__((internal_linkage));
|
|
void f1() __attribute__((internal_linkage));
|
|
void f2() __attribute__((internal_linkage)) {}
|
|
static void f3() __attribute__((internal_linkage)) {}
|
|
void f4(); // expected-note{{previous definition is here}}
|
|
static int zz; // expected-note{{previous definition is here}}
|
|
A() __attribute__((internal_linkage)) {}
|
|
~A() __attribute__((internal_linkage)) {}
|
|
A& operator=(const A&) __attribute__((internal_linkage)) { return *this; }
|
|
struct {
|
|
int z __attribute__((internal_linkage)); // expected-warning{{'internal_linkage' attribute only applies to}}
|
|
};
|
|
};
|
|
|
|
__attribute__((internal_linkage)) void A::f4() {} // expected-error{{'internal_linkage' attribute does not appear on the first declaration of 'f4'}}
|
|
|
|
__attribute__((internal_linkage)) int A::zz; // expected-error{{'internal_linkage' attribute does not appear on the first declaration of 'zz'}}
|
|
|
|
namespace Z __attribute__((internal_linkage)) { // expected-warning{{'internal_linkage' attribute only applies to}}
|
|
}
|
|
|
|
__attribute__((internal_linkage("foo"))) int g() {} // expected-error{{'internal_linkage' attribute takes no arguments}}
|
|
|
|
[[clang::internal_linkage]] int h() {}
|
|
|
|
enum struct __attribute__((internal_linkage)) E { // expected-warning{{'internal_linkage' attribute only applies to}}
|
|
a = 1,
|
|
b = 2
|
|
};
|
|
|
|
int A::y;
|
|
|
|
void A::f1() {
|
|
}
|
|
|
|
void g(int a [[clang::internal_linkage]]) { // expected-warning{{'internal_linkage' attribute only applies to variables, functions and classes}}
|
|
int x [[clang::internal_linkage]]; // expected-warning{{'internal_linkage' attribute on a non-static local variable is ignored}}
|
|
static int y [[clang::internal_linkage]];
|
|
}
|