diff options
author | joost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2015-10-08 19:24:18 +0000 |
---|---|---|
committer | joost <joost@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2015-10-08 19:24:18 +0000 |
commit | 9f63731f3334e601f5a4b78e359355e8abb8acdc (patch) | |
tree | 8e255c92f5b4c2183266c3bf02b951d5653f333f | |
parent | 70fe11d78324777922146d05cb798753bbb8f589 (diff) | |
download | fpc-9f63731f3334e601f5a4b78e359355e8abb8acdc.tar.gz |
--- Merging r31458 into '.':
C tests/test/jvm/testall.bat
C tests/test/jvm/testall.sh
A tests/test/jvm/tformalclass.pp
U compiler/htypechk.pas
--- Recording mergeinfo for merge of r31458 into '.':
U .
# revisions: 31458
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/fixes_3_0@31984 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | compiler/htypechk.pas | 13 | ||||
-rw-r--r-- | tests/test/jvm/testall.bat | 6 | ||||
-rwxr-xr-x | tests/test/jvm/testall.sh | 3 | ||||
-rw-r--r-- | tests/test/jvm/tformalclass.pp | 18 |
4 files changed, 35 insertions, 5 deletions
diff --git a/compiler/htypechk.pas b/compiler/htypechk.pas index 2d93bc4ec3..2672e44c65 100644 --- a/compiler/htypechk.pas +++ b/compiler/htypechk.pas @@ -2594,7 +2594,8 @@ implementation paraidx : integer; currparanr : byte; rfh,rth : double; - objdef : tobjectdef; + obj_from, + obj_to : tobjectdef; def_from, def_to : tdef; currpt, @@ -2760,13 +2761,15 @@ implementation def_is_related(tobjectdef(def_from),tobjectdef(def_to)) then begin eq:=te_convert_l1; - objdef:=tobjectdef(def_from); - while assigned(objdef) do + { resolve anonymous external class definitions } + obj_from:=find_real_class_definition(tobjectdef(def_from),false); + obj_to:=find_real_class_definition(tobjectdef(def_to),false); + while assigned(obj_from) do begin - if objdef=def_to then + if obj_from=obj_to then break; hp^.ordinal_distance:=hp^.ordinal_distance+1; - objdef:=objdef.childof; + obj_from:=obj_from.childof; end; end { compare_defs_ext compares sets and array constructors very poorly because diff --git a/tests/test/jvm/testall.bat b/tests/test/jvm/testall.bat index cd51c745c1..61863f87d0 100644 --- a/tests/test/jvm/testall.bat +++ b/tests/test/jvm/testall.bat @@ -314,3 +314,9 @@ ppcjvm -O2 -g -B -CTinitlocals tsetstring if %errorlevel% neq 0 exit /b %errorlevel% java -Dfile.encoding=UTF-8 -cp ..\..\..\rtl\units\jvm-java;. tsetstring if %errorlevel% neq 0 exit /b %errorlevel% +ppcjvm -O2 -g -B -Sa tnestcallpass1 +if %errorlevel% neq 0 exit /b %errorlevel% +ppcjvm -O2 -g -B -CTinitlocals tformalclass +if %errorlevel% neq 0 exit /b %errorlevel% +java -Dfile.encoding=UTF-8 -cp ..\..\..\rtl\units\jvm-java;. tformalclass +if %errorlevel% neq 0 exit /b %errorlevel% diff --git a/tests/test/jvm/testall.sh b/tests/test/jvm/testall.sh index bb8a1e227d..e5d191d762 100755 --- a/tests/test/jvm/testall.sh +++ b/tests/test/jvm/testall.sh @@ -184,3 +184,6 @@ $PPC -O2 -g -B -Sa tprop6a -CTautosetterprefix=Set -CTautogetterprefix=Get java -Dfile.encoding=UTF-8 -cp ../../../rtl/units/$RTLDIR:. tprop6a $PPC -O2 -g -B -Sa tsetstring java -Dfile.encoding=UTF-8 -cp ../../../rtl/units/$RTLDIR:. tsetstring +$PPC -O2 -g -B -Sa tnestcallpass1 +$PPC -O2 -g -B -Sa tformalclass +java -Dfile.encoding=UTF-8 -cp ../../../rtl/units/$RTLDIR:. tformalclass diff --git a/tests/test/jvm/tformalclass.pp b/tests/test/jvm/tformalclass.pp new file mode 100644 index 0000000000..d094492b24 --- /dev/null +++ b/tests/test/jvm/tformalclass.pp @@ -0,0 +1,18 @@ +program tformalclass; + +{$macro on} +{$ifdef java} +{$define sdkunit:=jdk15} +{$else} +{$define sdkunit:=androidr14} +{$endif} + +uses + sdkunit; + +var + a: system.jlstring; +begin + a:='abc'; + jlsystem.fout.println(a); +end. |