Add a couple of warning logs

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@17097 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-Macdonald 2003-07-04 10:52:56 +00:00
parent 4720dd6604
commit bde21db4d6
3 changed files with 31 additions and 2 deletions

View file

@ -23,6 +23,7 @@
#include "Foundation/NSException.h"
#include "Foundation/NSCoder.h"
#include "Foundation/NSDistantObject.h"
#include "Foundation/NSDebug.h"
#include "gnustep/base/GSInvocation.h"
#include <config.h>
#include <objc/objc-api.h>
@ -383,7 +384,6 @@ static IMP gs_objc_msg_forward (SEL sel)
if (!sel_type)
{
NSLog(@"Invalid selector %s (no type information)", sel_get_name (sel));
sel_type = "@"; // Default to id return type
}
@ -789,6 +789,20 @@ GSInvocationCallback (void *callback_data, va_alist args)
{
selector = sel_register_typed_name (runtimeName, receiverTypes);
}
if (runtimeTypes != 0)
{
/*
* FIXME ... if we have a typed selector, it probably came
* from the compiler, and the types of the proxied method
* MUST match those that the compiler supplied on the stack
* and the type it expects to retrieve from the stack.
* We should therefore discriminate between signatures where
* type qalifiers and sizes differ, and those where the
* actual types differ.
*/
NSWarnFLog(@"Changed type signature '%s' to '%s' for '%s'",
runtimeTypes, receiverTypes, runtimeName);
}
}
}

View file

@ -24,6 +24,7 @@
#include "Foundation/NSCoder.h"
#include "Foundation/NSDistantObject.h"
#include "Foundation/NSData.h"
#include "Foundation/NSDebug.h"
#include "gnustep/base/GSInvocation.h"
#include <config.h>
#include <objc/objc-api.h>
@ -394,6 +395,20 @@ GSFFIInvocationCallback(ffi_cif *cif, void *retp, void **args, void *user)
{
selector = sel_register_typed_name (runtimeName, receiverTypes);
}
if (runtimeTypes != 0)
{
/*
* FIXME ... if we have a typed selector, it probably came
* from the compiler, and the types of the proxied method
* MUST match those that the compiler supplied on the stack
* and the type it expects to retrieve from the stack.
* We should therefore discriminate between signatures where
* type qalifiers and sizes differ, and those where the
* actual types differ.
*/
NSWarnFLog(@"Changed type signature '%s' to '%s' for '%s'",
runtimeTypes, receiverTypes, runtimeName);
}
}
}

View file

@ -802,7 +802,7 @@ enum
if (sig == nil)
{
sig = [NSMethodSignature signatureWithObjCTypes: "*@:"];
sig = [NSMethodSignature signatureWithObjCTypes: "r*@:"];
RETAIN(sig);
}
return sig;