зеркало из https://github.com/microsoft/clang-1.git
Fix <rdar://problem/6586239> bitfield constraints not enforced (for ObjC)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65128 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
4a323d94e5
Коммит
63359c80b0
|
@ -3572,12 +3572,9 @@ Sema::DeclTy *Sema::ActOnIvar(Scope *S,
|
|||
bool InvalidDecl = false;
|
||||
|
||||
if (BitWidth) {
|
||||
// TODO: Validate.
|
||||
//printf("WARNING: BITFIELDS IGNORED!\n");
|
||||
|
||||
// 6.7.2.1p3
|
||||
// 6.7.2.1p4
|
||||
|
||||
// 6.7.2.1p3, 6.7.2.1p4
|
||||
if (VerifyBitField(Loc, II, T, BitWidth))
|
||||
InvalidDecl = true;
|
||||
} else {
|
||||
// Not a bitfield.
|
||||
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
// RUN: clang %s -fsyntax-only -verify
|
||||
|
||||
@interface X
|
||||
{
|
||||
int a : -1; // expected-error{{bit-field 'a' has negative width}}
|
||||
|
||||
// rdar://6081627
|
||||
int b : 33; // expected-error{{size of bit-field 'b' exceeds size of its type (32 bits)}}
|
||||
|
||||
int c : (1 + 0.25); // expected-error{{expression is not an integer constant expression}}
|
||||
int d : (int)(1 + 0.25);
|
||||
|
||||
// rdar://6138816
|
||||
int e : 0; // expected-error {{bit-field 'e' has zero width}}
|
||||
}
|
||||
@end
|
||||
|
Загрузка…
Ссылка в новой задаче