mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-27 21:13:47 +02:00

starting with a previous 2.3.1 or compiler built from the objc branch + added basic objcprotocol support (only for external protocols currently) o use in type declaration: "type xp = objcprotocol ... end;" o when defining a root class that implements it: "type yc = objcclass(xp) ... end" (note: no support yet for something like "objcclass(id,xp)" or so) o when defining a non-root class that implements a protocol: "type zc = objcclass(nsobject,xp) ... end" o includes support for "required" and "optional" sections o no support yet for the objcprotocol(<protocol>) expression that enables getting a class instance representing the protocol (e.g., for use with "conformsToProtocol:") o message names have to specified in protocol declarations, but if an objcclass implements a protocol, the message names do not have to be repeated (but if they are, they have to match; the same goes when overriding inherited methods) + allow specifying the external name of Objective-C classes and protocols, since classes and protocols can have the same name (and you cannot use the same Pascal identifier in such caseq) + added NSObject protocol, and make the NSObject class use it + added missing NSObject class methods that have the same name as instance methods (added "class" name prefix to avoid clashes) * fixed several cases where the compiler did not treat Objective-C classes/protocols the same as Object Pascal classes/interfaces (a.o., forward declarations, alignment, regvars, several type conversions, ...) * allow "override" directive in objcclass declarations, and print a hint if it's forgotten in an external declaration (because it doesn't really matter there, and may make automated header conversion harder than necessary) and an error if will be used in a non-external declaration (because it is not possible to start a new vmt entry-tree in Objective-C, you can only override parent methods) * reject objcclasses/protocols as parameters to typeof() * don't try to test VMT validity of objcclasses/protocols git-svn-id: branches/objc@13375 -
15 lines
192 B
ObjectPascal
15 lines
192 B
ObjectPascal
{ %fail }
|
|
{ %target=darwin }
|
|
{ %cpu=powerpc,i386 }
|
|
|
|
{$modeswitch objectivec1}
|
|
|
|
type
|
|
ta = objcclass
|
|
{ needs message name specification }
|
|
procedure test;
|
|
end; external;
|
|
|
|
begin
|
|
end.
|