mirror of
https://github.com/autc04/Retro68.git
synced 2024-09-29 10:55:00 +00:00
68 lines
1.4 KiB
Plaintext
68 lines
1.4 KiB
Plaintext
/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */
|
|
/* { dg-do compile } */
|
|
/* { dg-options "-Wall" } */
|
|
|
|
/* Test warnings with the dot-syntax. */
|
|
|
|
#include <stdlib.h>
|
|
#include <objc/objc.h>
|
|
#include <objc/runtime.h>
|
|
|
|
@interface MyRootClass
|
|
{
|
|
Class isa;
|
|
id a;
|
|
id b;
|
|
int p1;
|
|
int p2;
|
|
}
|
|
+ (id) initialize;
|
|
+ (id) alloc;
|
|
- (id) init;
|
|
|
|
@property int p1;
|
|
@property int p2;
|
|
@end
|
|
|
|
@implementation MyRootClass
|
|
+ (id) initialize { return self; }
|
|
+ (id) alloc { return class_createInstance (self, 0); }
|
|
- (id) init { return self; }
|
|
@synthesize p1;
|
|
@synthesize p2;
|
|
@end
|
|
|
|
int main (void)
|
|
{
|
|
MyRootClass *object = [[MyRootClass alloc] init];
|
|
|
|
/* First, test that the artificial code generated by dot-syntax does
|
|
not generate unexpected warnings. */
|
|
|
|
/* All of the following should generate no warnings. */
|
|
object.p1 = 0;
|
|
object.p2 = 0;
|
|
object.p1 = object.p2 = 0;
|
|
if (object.p1 > 0)
|
|
object.p2 = 0;
|
|
|
|
object.p1++;
|
|
++object.p1;
|
|
object.p1--;
|
|
--object.p1;
|
|
|
|
while (object.p1)
|
|
object.p1--;
|
|
|
|
/* Now test some warnings. */
|
|
object.p1; /* This warning does not seem to be produced in C++. dg-warning "value computed is not used" */
|
|
|
|
/* TODO: It would be good to get the following to warn. */
|
|
if (object.p1 = 0) /* dg-warning "suggest parentheses around assignment used as truth value" */
|
|
abort ();
|
|
|
|
return 0;
|
|
}
|
|
|
|
|