In libobjc/: 2011-06-02 Nicola Pero <nicola.pero@meta-innovation.com>
authorNicola Pero <nicola.pero@meta-innovation.com>
Thu, 2 Jun 2011 23:15:14 +0000 (23:15 +0000)
committerNicola Pero <nicola@gcc.gnu.org>
Thu, 2 Jun 2011 23:15:14 +0000 (23:15 +0000)
In libobjc/:
2011-06-02  Nicola Pero  <nicola.pero@meta-innovation.com>

* Makefile.in (OBJC_DEPRECATED_H): Removed objc_error.h.
* objc/deprecated/objc_error.h: Removed.
* objc/objc-api.h: Do not include deprecated/objc_error.h.
* libobjc.def (objc_error, objc_verror): Removed.
* error.c (_objc_error_handler, objc_error, objc_verror,
objc_set_error_handler): Removed.
* Object.m ([-error:], [-perform:], [-perform:with:],
[-perform:with:with], [-subclassResponsibility:],
[-notImplemented:], [-shouldNotImplement:], [-doesNotRecognize:]):
Removed.
* objc/deprecated/Object.h: Removed the same methods.
* sendmsg.c (__objc_forward): Do not try to invoke the "error:"
method after trying to invoke the "doesNotRecognize:" method.

In gcc/testsuite/:
2011-06-02  Nicola Pero  <nicola.pero@meta-innovation.com>

* objc.dg/torture/forward-1.m (main): Updated testcase.

From-SVN: r174587

gcc/testsuite/ChangeLog
gcc/testsuite/objc.dg/torture/forward-1.m
libobjc/ChangeLog
libobjc/Makefile.in
libobjc/Object.m
libobjc/error.c
libobjc/libobjc.def
libobjc/objc/deprecated/Object.h
libobjc/objc/deprecated/objc_error.h [deleted file]
libobjc/objc/objc-api.h
libobjc/sendmsg.c

index 7c9adb1ae6b02f492dc58c14483a953b2108d7f8..3b1c8b9486c7b9f13ef61817281470910aaec56c 100644 (file)
@@ -1,3 +1,7 @@
+2011-06-02  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * objc.dg/torture/forward-1.m (main): Updated testcase.
+
 2011-06-02  Kaz Kojima  <kkojima@gcc.gnu.org>
 
        PR target/49163
index bccf4a1123357af7148a80c112d82c235e88cb16..0d6f9ac4017531782f6f265b3179d0842f59b687 100644 (file)
@@ -71,7 +71,9 @@ id forwarder, receiver;
   /* If we have a reciever try to perform on that object */
     if (receiver)
         return [receiver performv: theSel: theArgFrame];
-    return [self doesNotRecognize:theSel];
+
+    /* Normally you'd emit an error here.  */
+    printf ("Unrecognized selector\n");
 }
 @end
 int main()
index 00cf2ac7b8a511c92a99807140bcacd2a33fb775..cb2a847f49c54b48b27e965f2824b1b566573bc3 100644 (file)
@@ -1,3 +1,19 @@
+2011-06-02  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * Makefile.in (OBJC_DEPRECATED_H): Removed objc_error.h.
+       * objc/deprecated/objc_error.h: Removed.
+       * objc/objc-api.h: Do not include deprecated/objc_error.h.
+       * libobjc.def (objc_error, objc_verror): Removed.
+       * error.c (_objc_error_handler, objc_error, objc_verror,
+       objc_set_error_handler): Removed.
+       * Object.m ([-error:], [-perform:], [-perform:with:],
+       [-perform:with:with], [-subclassResponsibility:],
+       [-notImplemented:], [-shouldNotImplement:], [-doesNotRecognize:]):
+       Removed.
+       * objc/deprecated/Object.h: Removed the same methods.
+       * sendmsg.c (__objc_forward): Do not try to invoke the "error:"
+       method after trying to invoke the "doesNotRecognize:" method.
+       
 2011-05-26  Nicola Pero  <nicola.pero@meta-innovation.com>
 
        * sendmsg.c: Reindented part of the file.  No non-trivial changes
index e52f441d47a5ea8c37e97bda28468a66f1e01b6b..12f3e832e6721216e05d049a3a8137d587121428 100644 (file)
@@ -139,7 +139,6 @@ OBJC_DEPRECATED_H = \
   STR.h \
   hash.h \
   objc-list.h \
-  objc_error.h \
   objc_get_uninstalled_dtable.h \
   objc_malloc.h \
   objc_msg_sendv.h \
index 224c0aa66bc463b345ff7480f5aff99fb9b9f9a7..f83d07257a056ee912c87788aec1c8cd38a40247 100644 (file)
@@ -248,30 +248,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
             :class_get_class_method(self->isa, aSel)));
 }
 
-- perform:(SEL)aSel
-{
-  IMP msg = objc_msg_lookup(self, aSel);
-  if (!msg)
-    return [self error:"invalid selector passed to %s", sel_get_name(_cmd)];
-  return (*msg)(self, aSel);
-}
-
-- perform:(SEL)aSel with:anObject
-{
-  IMP msg = objc_msg_lookup(self, aSel);
-  if (!msg)
-    return [self error:"invalid selector passed to %s", sel_get_name(_cmd)];
-  return (*msg)(self, aSel, anObject);
-}
-
-- perform:(SEL)aSel with:anObject1 with:anObject2
-{
-  IMP msg = objc_msg_lookup(self, aSel);
-  if (!msg)
-    return [self error:"invalid selector passed to %s", sel_get_name(_cmd)];
-  return (*msg)(self, aSel, anObject1, anObject2);
-}
-
 - (retval_t)forward:(SEL)aSel :(arglist_t)argFrame
 {
   (void) argFrame; /* UNUSED */
@@ -302,45 +278,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
   return nil;
 }
 
-- subclassResponsibility:(SEL)aSel
-{
-  return [self error:"subclass should override %s", sel_get_name(aSel)];
-}
-
-- notImplemented:(SEL)aSel
-{
-  return [self error:"method %s not implemented", sel_get_name(aSel)];
-}
-
-- shouldNotImplement:(SEL)aSel
-{
-  return [self error:"%s should not implement %s", 
-                    object_get_class_name(self), sel_get_name(aSel)];
-}
-
-- doesNotRecognize:(SEL)aSel
-{
-  return [self error:"%s does not recognize %s",
-                     object_get_class_name(self), sel_get_name(aSel)];
-}
-
-- error:(const char *)aString, ...
-{
-#define FMT "error: %s (%s)\n%s\n"
-  char fmt[(strlen((char*)FMT)+strlen((char*)object_get_class_name(self))
-            +((aString!=NULL)?strlen((char*)aString):0)+8)];
-  va_list ap;
-
-  sprintf(fmt, FMT, object_get_class_name(self),
-                    object_is_instance(self)?"instance":"class",
-                    (aString!=NULL)?aString:"");
-  va_start(ap, aString);
-  objc_verror(self, OBJC_ERR_UNKNOWN, fmt, ap);
-  va_end(ap);
-  return nil;
-#undef FMT
-}
-
 + (int)version
 {
   return class_get_version(self);
index 1dae36594f238883f2ca55d403360c85fbf7df64..51d6402b998a6aff0bad43b87228683f779f87aa 100644 (file)
@@ -45,53 +45,3 @@ _objc_abort (const char *fmt, ...)
   abort ();
   va_end (ap);
 }
-
-/* The rest of the file is deprecated.  */
-#include "objc/objc-api.h" /* For objc_error_handler.  */
-
-/*
-** Error handler function
-** NULL so that default is to just print to stderr
-*/
-static objc_error_handler _objc_error_handler = NULL;
-
-/* Trigger an objc error */
-void
-objc_error (id object, int code, const char *fmt, ...)
-{
-  va_list ap;
-
-  va_start (ap, fmt);
-  objc_verror (object, code, fmt, ap);
-  va_end (ap);
-}
-
-/* Trigger an objc error */
-void
-objc_verror (id object, int code, const char *fmt, va_list ap)
-{
-  BOOL result = NO;
-
-  /* Call the error handler if its there
-     Otherwise print to stderr */
-  if (_objc_error_handler)
-    result = (*_objc_error_handler) (object, code, fmt, ap);
-  else
-    vfprintf (stderr, fmt, ap);
-
-  /* Continue if the error handler says its ok
-     Otherwise abort the program */
-  if (result)
-    return;
-  else
-    abort ();
-}
-
-/* Set the error handler */
-objc_error_handler
-objc_set_error_handler (objc_error_handler func)
-{
-  objc_error_handler temp = _objc_error_handler;
-  _objc_error_handler = func;
-  return temp;
-}
index e84d839ad1d1c91aaad6bceaf5fd523b4492f734..a8d66200af2440c15e7ce74c3d428a4654791f5c 100644 (file)
@@ -25,7 +25,6 @@ search_for_method_in_list
 objc_get_uninstalled_dtable
 objc_hash_is_key_in_hash
 hash_is_key_in_hash
-objc_verror
 _objc_load_callback
 objc_malloc
 objc_atomic_malloc
@@ -53,7 +52,6 @@ objc_thread_remove
 __objc_class_name_Object
 __objc_class_name_Protocol
 __objc_class_name_NXConstantString
-objc_error
 __objc_object_alloc
 __objc_object_copy
 __objc_object_dispose
index e15cf7dd9960b341b99f64e0def1397c5eb22761..7a1344919eead04705d5a2f419a9661fcbc9a50f 100644 (file)
 + (struct objc_method_description *)descriptionForInstanceMethod:(SEL)aSel;
 - (struct objc_method_description *)descriptionForMethod:(SEL)aSel;
 
-/* Sending messages determined at run time */
-- perform:(SEL)aSel;
-- perform:(SEL)aSel with:anObject;
-- perform:(SEL)aSel with:anObject1 with:anObject2;
-
 /* Forwarding */
 - (retval_t)forward:(SEL)aSel :(arglist_t)argFrame;
 - (retval_t)performv:(SEL)aSel :(arglist_t)argFrame;
 + poseAs:(Class)aClassObject;
 - (Class)transmuteClassTo:(Class)aClassObject;
 
-/* Enforcing intentions */
-- subclassResponsibility:(SEL)aSel;
-- notImplemented:(SEL)aSel;
-- shouldNotImplement:(SEL)aSel;
-
-/* Error handling */
-- doesNotRecognize:(SEL)aSel;
-- error:(const char *)aString, ...;
-
 /* Archiving */
 + (int)version;
 + setVersion:(int)aVersion;
diff --git a/libobjc/objc/deprecated/objc_error.h b/libobjc/objc/deprecated/objc_error.h
deleted file mode 100644 (file)
index 7a7ebe9..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/* This API is incredibly limited and unsophisticated.  objc_error()
-   generally causes the program to abort, so it should only be used
-   when something so dramatic happens that it could be pointless to
-   continue.  Only two cases I can think of: failure to allocate new
-   memory or failure to load an Objective-C module.
-*/
-/* Error handling
-  
-   Call objc_error() or objc_verror() to record an error; this error
-   routine will generally exit the program but not necessarily if the
-   user has installed his own error handler.
-  
-   Call objc_set_error_handler to assign your own function for
-   handling errors.  The function should return YES if it is ok
-   to continue execution, or return NO or just abort if the
-   program should be stopped.  The default error handler is just to
-   print a message on stderr.
-  
-   The error handler function should be of type objc_error_handler
-   The first parameter is an object instance of relevance.
-   The second parameter is an error code.
-   The third parameter is a format string in the printf style.
-   The fourth parameter is a variable list of arguments.  */
-void objc_error(id object, int code, const char* fmt, ...);
-void objc_verror(id object, int code, const char* fmt, va_list ap);
-typedef BOOL (*objc_error_handler)(id, int code, const char *fmt, va_list ap);
-objc_error_handler objc_set_error_handler(objc_error_handler func);
-
-/* Error codes
-   These are used by the runtime library, and your
-   error handling may use them to determine if the error is
-   hard or soft thus whether execution can continue or abort.  */
-#define OBJC_ERR_UNKNOWN 0             /* Generic error */
-
-#define OBJC_ERR_OBJC_VERSION 1        /* Incorrect runtime version */
-#define OBJC_ERR_GCC_VERSION 2         /* Incorrect compiler version */
-#define OBJC_ERR_MODULE_SIZE 3         /* Bad module size */
-#define OBJC_ERR_PROTOCOL_VERSION 4    /* Incorrect protocol version */
-
-#define OBJC_ERR_MEMORY 10             /* Out of memory */
-
-#define OBJC_ERR_RECURSE_ROOT 20       /* Attempt to archive the root
-                                         object more than once. */
-#define OBJC_ERR_BAD_DATA 21           /* Didn't read expected data */
-#define OBJC_ERR_BAD_KEY 22            /* Bad key for object */
-#define OBJC_ERR_BAD_CLASS 23          /* Unknown class */
-#define OBJC_ERR_BAD_TYPE 24           /* Bad type specification */
-#define OBJC_ERR_NO_READ 25            /* Cannot read stream */
-#define OBJC_ERR_NO_WRITE 26           /* Cannot write stream */
-#define OBJC_ERR_STREAM_VERSION 27     /* Incorrect stream version */
-#define OBJC_ERR_BAD_OPCODE 28         /* Bad opcode */
-
-#define OBJC_ERR_UNIMPLEMENTED 30      /* Method is not implemented */
-
-#define OBJC_ERR_BAD_STATE 40          /* Bad thread state */
-
index 521f79efb3746d51b103284af9d0f63ab41b23e0..42bec77770fd394803643778994ffe8123ccf94e 100644 (file)
@@ -109,8 +109,6 @@ struct objc_method_description
    equivalent to "*".  */
 #define _C_ATOM     '%'
 
-#include "deprecated/objc_error.h"
-
 #include "deprecated/struct_objc_static_instances.h"
 #include "deprecated/struct_objc_symtab.h"
 #include "deprecated/struct_objc_module.h"
index c84e90f5b6e35111ff82ad59ea0e18daa3101a9c..137731ae9d174a69aa16f4188786a0c3990f1f86 100644 (file)
@@ -977,16 +977,8 @@ __objc_forward (id object, SEL sel, arglist_t args)
              : "instance" ),
              object->class_pointer->name, sel_getName (sel));
 
-    /* TODO: support for error: is surely deprecated ? */
-    err_sel = sel_get_any_uid ("error:");
-    if (__objc_responds_to (object, err_sel))
-      {
-       imp = get_implementation (object, object->class_pointer, err_sel);
-       return (*imp) (object, sel_get_any_uid ("error:"), msg);
-      }
-
-    /* The object doesn't respond to doesNotRecognize: or error:;
-       Therefore, a default action is taken.  */
+    /* The object doesn't respond to doesNotRecognize:.  Therefore, a
+       default action is taken.  */
     _objc_abort ("%s\n", msg);
 
     return 0;