mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 12:06:06 +00:00

Microsoft allows the 'inline' specifier on a typedef of a function type in C modes. This is used by a system header (ufxclient.h), so instead of giving a hard error, we diagnose with a warning. C++ mode and non- Microsoft compatibility modes are not impacted. Fixes https://github.com/llvm/llvm-project/issues/124869
18 lines
879 B
C++
18 lines
879 B
C++
// RUN: %clang_cc1 %s -fsyntax-only -Wno-unused-value -Wmicrosoft -verify -fms-compatibility
|
|
|
|
// PR15845
|
|
int foo(xxx); // expected-error{{unknown type name}}
|
|
|
|
struct cls {
|
|
char *m;
|
|
};
|
|
|
|
char * cls::* __uptr wrong2 = &cls::m; // expected-error {{'__uptr' attribute cannot be used with pointers to members}}
|
|
|
|
// Microsoft allows inline, __inline, and __forceinline to appear on a typedef
|
|
// of a function type, but only in C. See GitHub #124869 for more details.
|
|
typedef int inline Foo1(int); // expected-error {{'inline' can only appear on functions}}
|
|
typedef int __inline Foo2(int); // expected-error {{'inline' can only appear on functions}}
|
|
typedef int __forceinline Foo(int); // expected-error {{'inline' can only appear on functions}} \
|
|
expected-warning {{'__forceinline' attribute only applies to functions and statements}}
|