Просмотр исходного кода

* fixed conformsToProtocol() declaration (the protocol is not a changeable
parameter, and it's already declared as a pointer type)

git-svn-id: trunk@34246 -

Jonas Maebe 9 лет назад
Родитель
Сommit
de97285393
3 измененных файлов с 32 добавлено и 1 удалено
  1. 1 0
      .gitattributes
  2. 1 1
      rtl/inc/objc1.inc
  3. 30 0
      tests/webtbs/tw30443.pp

+ 1 - 0
.gitattributes

@@ -15193,6 +15193,7 @@ tests/webtbs/tw30329.pp -text svneol=native#text/plain
 tests/webtbs/tw30357.pp svneol=native#text/pascal
 tests/webtbs/tw3038.pp svneol=native#text/plain
 tests/webtbs/tw3041.pp svneol=native#text/plain
+tests/webtbs/tw30443.pp svneol=native#text/plain
 tests/webtbs/tw3045.pp svneol=native#text/plain
 tests/webtbs/tw3048.pp svneol=native#text/plain
 tests/webtbs/tw3063.pp svneol=native#text/plain

+ 1 - 1
rtl/inc/objc1.inc

@@ -166,7 +166,7 @@ type
   function class_respondsToSelector(cls:pobjc_class; sel:SEL):BOOL; cdecl; external libname;
   function class_copyMethodList(cls:pobjc_class; outCount:pdword):PMethod; cdecl; external libname;
 
-  function class_conformsToProtocol(cls:pobjc_class; var protocol: pobjc_protocol):BOOL; cdecl; external libname;
+  function class_conformsToProtocol(cls:pobjc_class; protocol: pobjc_protocol):BOOL; cdecl; external libname;
   function class_copyProtocolList(cls:pobjc_class; var outCount: dword):ppobjc_protocol; cdecl; external libname;
 
   function class_createInstance(cls:pobjc_class; extraBytes:size_t):id; cdecl; external libname;

+ 30 - 0
tests/webtbs/tw30443.pp

@@ -0,0 +1,30 @@
+{ %target=darwin }
+{ %cpu=powerpc,powerpc64,i386,x86_64,arm,aarch64 }
+
+{$mode objfpc}{$H+}
+{$modeswitch objectivec1}
+
+uses
+  CocoaAll;
+
+procedure CheckProtocol;
+const
+  NSObjectProtocolName: UTF8String = 'NSObject';
+var
+  nso: id;
+  proto: pobjc_protocol;
+  cls: pobjc_class;
+begin
+  nso := NSObject.alloc.init;
+  cls := object_getClass(nso);
+  proto := objc_getProtocol(PAnsiChar(NSObjectProtocolName));
+  if class_conformsToProtocol(cls, proto) then
+    WriteLn('NSObject implements the NSObject protocol, as expected.')
+  else
+    halt(1);
+  nso.release;
+end;
+
+begin
+  CheckProtocol;
+end.