зеркало из https://github.com/microsoft/clang-1.git
<rdar://problem/13459871> Allow forward declaration of enums with a fixed underlying type in Objective-C (as well as C++11).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177930 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
e91544210a
Коммит
abde2c7f2c
|
@ -9858,7 +9858,8 @@ CreateNewDecl:
|
|||
// If this is an undefined enum, warn.
|
||||
if (TUK != TUK_Definition && !Invalid) {
|
||||
TagDecl *Def;
|
||||
if (getLangOpts().CPlusPlus11 && cast<EnumDecl>(New)->isFixed()) {
|
||||
if ((getLangOpts().CPlusPlus11 || getLangOpts().ObjC2) &&
|
||||
cast<EnumDecl>(New)->isFixed()) {
|
||||
// C++0x: 7.2p2: opaque-enum-declaration.
|
||||
// Conflicts are diagnosed above. Do nothing.
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
||||
// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
|
||||
|
||||
#if !__has_feature(objc_fixed_enum)
|
||||
# error Enumerations with a fixed underlying type are not supported
|
||||
|
@ -28,9 +28,9 @@ void test() {
|
|||
|
||||
// <rdar://10381507>
|
||||
typedef enum : long { Foo } IntegerEnum;
|
||||
int arr[(sizeof(typeof(Foo)) == sizeof(typeof(IntegerEnum))) - 1];
|
||||
int arr1[(sizeof(typeof(Foo)) == sizeof(typeof(long))) - 1];
|
||||
int arr2[(sizeof(typeof(IntegerEnum)) == sizeof(typeof(long))) - 1];
|
||||
int arr[(sizeof(__typeof__(Foo)) == sizeof(__typeof__(IntegerEnum)))? 1 : -1];
|
||||
int arr1[(sizeof(__typeof__(Foo)) == sizeof(__typeof__(long)))? 1 : -1];
|
||||
int arr2[(sizeof(__typeof__(IntegerEnum)) == sizeof(__typeof__(long)))? 1 : -1];
|
||||
|
||||
// <rdar://problem/10760113>
|
||||
typedef enum : long long { Bar = -1 } LongLongEnum;
|
||||
|
|
Загрузка…
Ссылка в новой задаче