|
@@ -37,11 +37,19 @@ type
|
|
|
tobjcselectornode = class(tunarynode)
|
|
|
public
|
|
|
constructor create(formethod: tnode);
|
|
|
- function pass_typecheck:tnode;override;
|
|
|
- function pass_1 : tnode;override;
|
|
|
+ function pass_typecheck: tnode;override;
|
|
|
+ function pass_1: tnode;override;
|
|
|
end;
|
|
|
tobjcselectornodeclass = class of tobjcselectornode;
|
|
|
|
|
|
+ tobjcprotocolnode = class(tunarynode)
|
|
|
+ public
|
|
|
+ constructor create(forprotocol: tnode);
|
|
|
+ function pass_typecheck: tnode;override;
|
|
|
+ function pass_1: tnode;override;
|
|
|
+ end;
|
|
|
+ tobjcprotocolnodeclass = class of tobjcprotocolnode;
|
|
|
+
|
|
|
tobjcmessagesendnode = class(tunarynode)
|
|
|
public
|
|
|
constructor create(forcall: tnode);
|
|
@@ -53,6 +61,7 @@ type
|
|
|
var
|
|
|
cobjcselectornode : tobjcselectornodeclass;
|
|
|
cobjcmessagesendnode : tobjcmessagesendnodeclass;
|
|
|
+ cobjcprotocolnode : tobjcprotocolnodeclass;
|
|
|
|
|
|
implementation
|
|
|
|
|
@@ -163,6 +172,36 @@ function tobjcselectornode.pass_1: tnode;
|
|
|
expectloc:=LOC_CREFERENCE;
|
|
|
end;
|
|
|
|
|
|
+
|
|
|
+{*****************************************************************************
|
|
|
+ TOBJPROTOCOLNODE
|
|
|
+*****************************************************************************}
|
|
|
+
|
|
|
+constructor tobjcprotocolnode.create(forprotocol: tnode);
|
|
|
+ begin
|
|
|
+ inherited create(objcprotocoln,forprotocol);
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+function tobjcprotocolnode.pass_typecheck: tnode;
|
|
|
+ begin
|
|
|
+ result:=nil;
|
|
|
+ typecheckpass(left);
|
|
|
+ if (left.nodetype<>typen) then
|
|
|
+ MessagePos(left.fileinfo,type_e_type_id_expected)
|
|
|
+ else if not is_objcprotocol(left.resultdef) then
|
|
|
+ MessagePos2(left.fileinfo,type_e_incompatible_types,left.resultdef.typename,'ObjCProtocol');
|
|
|
+ resultdef:=objc_protocoltype;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
+function tobjcprotocolnode.pass_1: tnode;
|
|
|
+ begin
|
|
|
+ result:=nil;
|
|
|
+ expectloc:=LOC_CREFERENCE;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
{*****************************************************************************
|
|
|
TOBJCMESSAGESENDNODE
|
|
|
*****************************************************************************}
|
|
@@ -326,7 +365,6 @@ function tobjcmessagesendnode.pass_1: tnode;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-
|
|
|
begin
|
|
|
cobjcmessagesendnode:=tobjcmessagesendnode;
|
|
|
end.
|