Parcourir la source

* allow objcclasstype.classmethod()

git-svn-id: branches/objc@13591 -
Jonas Maebe il y a 16 ans
Parent
commit
666f345df4
3 fichiers modifiés avec 26 ajouts et 1 suppressions
  1. 1 0
      .gitattributes
  2. 2 1
      compiler/pexpr.pas
  3. 23 0
      tests/test/tobjc12.pp

+ 1 - 0
.gitattributes

@@ -8227,6 +8227,7 @@ tests/test/tmt1.pp svneol=native#text/plain
 tests/test/tobjc1.pp svneol=native#text/plain
 tests/test/tobjc10.pp svneol=native#text/plain
 tests/test/tobjc11.pp svneol=native#text/plain
+tests/test/tobjc12.pp svneol=native#text/plain
 tests/test/tobjc2.pp svneol=native#text/plain
 tests/test/tobjc3.pp svneol=native#text/plain
 tests/test/tobjc4.pp svneol=native#text/plain

+ 2 - 1
compiler/pexpr.pas

@@ -1492,7 +1492,8 @@ implementation
                        else
                         begin
                           { class reference ? }
-                          if is_class(hdef) then
+                          if is_class(hdef) or
+                             is_objcclass(hdef) then
                            begin
                              if getaddr and (token=_POINT) then
                               begin

+ 23 - 0
tests/test/tobjc12.pp

@@ -0,0 +1,23 @@
+{ %target=darwin }
+{ %cpu=powerpc,i386 }
+
+{$mode objfpc}
+{$modeswitch objectivec1}
+
+var
+  a: NSObject;
+  b: pobjc_class;
+  c: pobjc_class;
+  d: pobjc_class;
+begin
+  a:=NSObject(NSObject(NSObject.alloc).init);
+  b:=a._class;
+  c:=NSObject.classClass;
+  d:=a.classClass;
+  if (b<>c) or
+     (b<>d) then
+    begin
+      writeln('error: NSObject.Class <> NSObjectInstance.Class');
+      halt(1);
+    end;
+end.