Browse Source

pastojs: typeinfo(classof)

git-svn-id: trunk@35862 -
Mattias Gaertner 8 years ago
parent
commit
13bc0cfdd6
2 changed files with 5 additions and 3 deletions
  1. 4 2
      packages/pastojs/src/fppas2js.pp
  2. 1 1
      packages/pastojs/tests/tcmodules.pas

+ 4 - 2
packages/pastojs/src/fppas2js.pp

@@ -6761,12 +6761,14 @@ begin
     Result:=CreateTypeInfoRef(TPasType(ParamResolved.IdentEl),AContext,Param)
     Result:=CreateTypeInfoRef(TPasType(ParamResolved.IdentEl),AContext,Param)
   else if ParamResolved.TypeEl<>nil then
   else if ParamResolved.TypeEl<>nil then
     begin
     begin
-    if (ParamResolved.TypeEl.ClassType=TPasClassType)
-        and (rrfReadable in ParamResolved.Flags)
+    if (rrfReadable in ParamResolved.Flags)
+        and ((ParamResolved.TypeEl.ClassType=TPasClassType)
+          or (ParamResolved.TypeEl.ClassType=TPasClassOfType))
         and ((ParamResolved.IdentEl is TPasVariable)
         and ((ParamResolved.IdentEl is TPasVariable)
           or (ParamResolved.IdentEl.ClassType=TPasArgument)) then
           or (ParamResolved.IdentEl.ClassType=TPasArgument)) then
       begin
       begin
       // typeinfo(classinstance) -> classinstance.$rtti
       // typeinfo(classinstance) -> classinstance.$rtti
+      // typeinfo(classof) -> classof.$rtti
       Result:=ConvertElement(Param,AContext);
       Result:=ConvertElement(Param,AContext);
       Result:=CreateDotExpression(El,Result,CreateBuiltInIdentifierExpr(FBuiltInNames[pbivnRTTI]));
       Result:=CreateDotExpression(El,Result,CreateBuiltInIdentifierExpr(FBuiltInNames[pbivnRTTI]));
       end
       end

+ 1 - 1
packages/pastojs/tests/tcmodules.pas

@@ -12556,7 +12556,7 @@ begin
     '$mod.tiRecord = $mod.$rtti["TRec"];',
     '$mod.tiRecord = $mod.$rtti["TRec"];',
     '$mod.tiClass = $mod.Obj.$rtti;',
     '$mod.tiClass = $mod.Obj.$rtti;',
     '$mod.tiClass = $mod.$rtti["TObject"];',
     '$mod.tiClass = $mod.$rtti["TObject"];',
-    '$mod.tiClassRef = $mod.$rtti["TClass"];',
+    '$mod.tiClassRef = $mod.aClass.$rtti;',
     '$mod.tiClassRef = $mod.$rtti["TClass"];',
     '$mod.tiClassRef = $mod.$rtti["TClass"];',
     '']));
     '']));
 end;
 end;