소스 검색

* when determining the type to use for checkcast, first always dereference
pointers to implicit pointer types so that afterwards we can set the
appropriate corresponding class type

git-svn-id: branches/jvmbackend@18668 -

Jonas Maebe 14 년 전
부모
커밋
7286e3b645
1개의 변경된 파일3개의 추가작업 그리고 2개의 파일을 삭제
  1. 3 2
      compiler/jvm/njvmcnv.pas

+ 3 - 2
compiler/jvm/njvmcnv.pas

@@ -1192,10 +1192,11 @@ implementation
       else
         checkdef:=node.right.resultdef;
       { replace special types with their equivalent class type }
+      if (checkdef.typ=pointerdef) and
+         jvmimplicitpointertype(tpointerdef(checkdef).pointeddef) then
+        checkdef:=tpointerdef(checkdef).pointeddef;
       if checkdef=voidpointertype then
         checkdef:=java_jlobject
-      else if checkdef.typ=pointerdef then
-        checkdef:=tpointerdef(checkdef).pointeddef
       else if checkdef.typ=enumdef then
         checkdef:=tenumdef(checkdef).classdef
       else if checkdef.typ=setdef then