fpc/tests/test/tobjc29.pp
Jonas Maebe b495fbb991 * let search_class_helper() only return class helper methods; it could
also return regular objcclass methods before, because these are also
    registered under class helper procsyms for future id.anymethod support
  * give an error when calling an inherited method from an objccategory
    method, if that is not declared in the parent of the extended class
    (since calling inherited in an objccategory method is the same as
     calling inherited in a method of the extended class; if a method is
     replaced, calling inherited will *not* call the original method
     from the original class)

git-svn-id: trunk@14213 -
2009-11-18 21:49:57 +00:00

46 lines
827 B
ObjectPascal

{ %target=darwin }
{ %cpu=powerpc,powerpc64,i386,x86_64,arm }
{$mode objfpc}
{$modeswitch objectivec1}
type
ta = objcclass(NSObject)
function tabaseproc(cp: longint): double; message 'tabaseproc:';
end;
ca = objccategory(ta)
function tabaseproc(cp: longint): double; reintroduce;
end;
nsobjectta = objccategory(NSObject)
function tabaseproc(cp: longint): double; message 'tabaseproc:';
end;
function ta.tabaseproc(cp: longint): double;
begin
result:=cp;
halt(1);
end;
function ca.tabaseproc(cp: longint): double;
begin
result:=inherited tabaseproc(cp+1);
end;
function nsobjectta.tabaseproc(cp: longint): double;
begin
if (cp<>4321) then
halt(1);
result:=123.625;
end;
var
a: ta;
begin
a:=ta(ta.alloc).init;
if a.tabaseproc(4320)<>123.625 then
halt(2);
a.release;
end.