aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicola Pero <nicola.pero@meta-innovation.com>2011-06-02 23:15:14 +0000
committerNicola Pero <nicola@gcc.gnu.org>2011-06-02 23:15:14 +0000
commite79132c38501857aef03d9f06e08f8e702175c1e (patch)
tree0c7e8e1ef89453308b129a4ec6883dc7dee725a2
parenta700b5f073c45564f513ff035b2c0d5fb0edfaa0 (diff)
downloadgcc-e79132c38501857aef03d9f06e08f8e702175c1e.zip
gcc-e79132c38501857aef03d9f06e08f8e702175c1e.tar.gz
gcc-e79132c38501857aef03d9f06e08f8e702175c1e.tar.bz2
In libobjc/: 2011-06-02 Nicola Pero <nicola.pero@meta-innovation.com>
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
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/objc.dg/torture/forward-1.m4
-rw-r--r--libobjc/ChangeLog16
-rw-r--r--libobjc/Makefile.in1
-rw-r--r--libobjc/Object.m63
-rw-r--r--libobjc/error.c50
-rw-r--r--libobjc/libobjc.def2
-rw-r--r--libobjc/objc/deprecated/Object.h14
-rw-r--r--libobjc/objc/deprecated/objc_error.h56
-rw-r--r--libobjc/objc/objc-api.h2
-rw-r--r--libobjc/sendmsg.c12
11 files changed, 25 insertions, 199 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7c9adb1..3b1c8b9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
diff --git a/gcc/testsuite/objc.dg/torture/forward-1.m b/gcc/testsuite/objc.dg/torture/forward-1.m
index bccf4a1..0d6f9ac 100644
--- a/gcc/testsuite/objc.dg/torture/forward-1.m
+++ b/gcc/testsuite/objc.dg/torture/forward-1.m
@@ -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()
diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog
index 00cf2ac..cb2a847 100644
--- a/libobjc/ChangeLog
+++ b/libobjc/ChangeLog
@@ -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
diff --git a/libobjc/Makefile.in b/libobjc/Makefile.in
index e52f441..12f3e83 100644
--- a/libobjc/Makefile.in
+++ b/libobjc/Makefile.in
@@ -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 \
diff --git a/libobjc/Object.m b/libobjc/Object.m
index 224c0aa..f83d072 100644
--- a/libobjc/Object.m
+++ b/libobjc/Object.m
@@ -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);
diff --git a/libobjc/error.c b/libobjc/error.c
index 1dae365..51d6402 100644
--- a/libobjc/error.c
+++ b/libobjc/error.c
@@ -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;
-}
diff --git a/libobjc/libobjc.def b/libobjc/libobjc.def
index e84d839..a8d6620 100644
--- a/libobjc/libobjc.def
+++ b/libobjc/libobjc.def
@@ -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
diff --git a/libobjc/objc/deprecated/Object.h b/libobjc/objc/deprecated/Object.h
index e15cf7d..7a13449 100644
--- a/libobjc/objc/deprecated/Object.h
+++ b/libobjc/objc/deprecated/Object.h
@@ -48,11 +48,6 @@
+ (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;
@@ -61,15 +56,6 @@
+ 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
index 7a7ebe9..0000000
--- a/libobjc/objc/deprecated/objc_error.h
+++ /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 */
-
diff --git a/libobjc/objc/objc-api.h b/libobjc/objc/objc-api.h
index 521f79e..42bec77 100644
--- a/libobjc/objc/objc-api.h
+++ b/libobjc/objc/objc-api.h
@@ -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"
diff --git a/libobjc/sendmsg.c b/libobjc/sendmsg.c
index c84e90f..137731a 100644
--- a/libobjc/sendmsg.c
+++ b/libobjc/sendmsg.c
@@ -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;