New objc tests for bitfield enumeration ivars
authorNicola Pero <n.pero@mi.flashnet.it>
Thu, 13 Dec 2001 12:41:07 +0000 (13:41 +0100)
committerNicola Pero <nicola@gcc.gnu.org>
Thu, 13 Dec 2001 12:41:07 +0000 (12:41 +0000)
From-SVN: r47971

gcc/testsuite/ChangeLog
gcc/testsuite/objc/execute/bf-21.m [new file with mode: 0644]
gcc/testsuite/objc/execute/enumeration-1.m [new file with mode: 0644]
gcc/testsuite/objc/execute/enumeration-2.m [new file with mode: 0644]

index 489171423d41d9afaba484a97ce94d049a2603db..4f559ed6739bf6b6ff92e4e3eecc1bb2fcd3c8b3 100644 (file)
@@ -1,3 +1,9 @@
+Thu Dec 13 10:35:33 2001  Nicola Pero  <n.pero@mi.flashnet.it>
+
+       * objc/execute/bf-21.m: New test.
+       * objc/execute/enumeration-1.m: New test.
+       * objc/execute/enumeration-2.m: New test.
+       
 2001-12-12  Jakub Jelinek  <jakub@redhat.com>
 
        * gcc.dg/gnu89-init-1.c: New test.
diff --git a/gcc/testsuite/objc/execute/bf-21.m b/gcc/testsuite/objc/execute/bf-21.m
new file mode 100644 (file)
index 0000000..2587a0a
--- /dev/null
@@ -0,0 +1,20 @@
+#include <objc/objc.h>
+#include <objc/objc-api.h>
+#include <objc/Object.h>
+
+typedef enum 
+{
+  A, B
+} enumeration;
+
+@interface MyObject
+{
+  enumeration g:4;
+}
+@end
+
+@implementation MyObject
+@end
+
+#include "bf-common.h"
+
diff --git a/gcc/testsuite/objc/execute/enumeration-1.m b/gcc/testsuite/objc/execute/enumeration-1.m
new file mode 100644 (file)
index 0000000..e0b784f
--- /dev/null
@@ -0,0 +1,49 @@
+/* Contributed by Nicola Pero -  Wed Dec  5 17:12:40 GMT 2001 */
+#include <objc/objc.h>
+#include <objc/Object.h>
+
+/* Test using a bitfield enumeration ivar.  */
+
+typedef enum
+{
+  black,
+  white
+} color;
+
+@interface TestClass: Object
+{
+  color c:2;
+}
+- (color)color;
+- (void)setColor: (color)a;
+@end
+
+@implementation TestClass
+- (color)color
+{
+  return c;
+}
+- (void)setColor: (color)a
+{
+  c = a;
+}
+@end
+
+
+int main (void)
+{
+  TestClass *c;
+  
+  c = [TestClass new];
+  
+  [c setColor: black];
+  [c setColor: white];
+  [c setColor: black];
+  if ([c color] != black)
+    {
+      abort ();
+    }
+  
+
+  return 0;
+}
diff --git a/gcc/testsuite/objc/execute/enumeration-2.m b/gcc/testsuite/objc/execute/enumeration-2.m
new file mode 100644 (file)
index 0000000..a128da6
--- /dev/null
@@ -0,0 +1,51 @@
+/* Contributed by Nicola Pero -  Wed Dec  5 17:12:40 GMT 2001 */
+#include <objc/objc.h>
+#include <objc/Object.h>
+
+typedef enum { black, white } color;
+
+typedef struct 
+{
+  color a:2;
+  color b:2;
+} color_couple;
+
+@interface TestClass: Object
+{
+  color_couple *c;
+}
+- (color_couple *)colorCouple;
+- (void)setColorCouple: (color_couple *)a;
+@end
+
+@implementation TestClass
+- (color_couple *)colorCouple
+{
+  return c;
+}
+- (void)setColorCouple: (color_couple *)a
+{
+  c = a;
+}
+@end
+
+
+int main (void)
+{
+  color_couple cc;
+  TestClass *c;
+  
+  c = [TestClass new];
+  
+  cc.a = black;
+  cc.b = white;
+
+  [c setColorCouple: &cc];
+  if ([c colorCouple] != &cc)
+    {
+      abort ();
+    }
+  
+
+  return 0;
+}