JDK-5066747 : TEST BUG: com/sun/jdi/GenericsTest.java
  • Type: Bug
  • Component: core-svc
  • Sub-Component: debugger
  • Affected Version: 5.0
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2004-06-22
  • Updated: 2004-07-21
  • Resolved: 2004-07-21
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
5.0 b59Fixed
Related Reports
Relates :  
Description
###@###.### 2004-06-22

Recent changes in javac (probably 5064052: unnecessary bridge
methods interfere with some generics retrofitting) cause this
test to fail (see below).  javac is OK.  The test is looking
for a bridge method that no longer exists.  The test needs to
be fixed.




#Test Results (version 2)
#Tue Jun 22 08:41:37 PDT 2004
#checksum:7817e93f1e6ab92f
#-----testdescription-----
$file=/export/home/tbell/b58PRE/service_int_b58/test/com/sun/jdi/GenericsTest.java
$root=/export/home/tbell/b58PRE/service_int_b58/test
author=jjh
keywords=bug4421040
run=USER_SPECIFIED build TestScaffold VMConnection TargetListener TargetAdapter\nUSER_SPECIFIED compile -source 1.5 -target 1.5 -g GenericsTest.java\nUSER_SPECIFIED main GenericsTest\n
source=GenericsTest.java
title=JPDA: Add support for JSR-014 Generics

#-----environment-----

#-----testresult-----
description=file:///export/home/tbell/b58PRE/service_int_b58/test/com/sun/jdi/GenericsTest.java
end=Tue Jun 22 08:41:37 PDT 2004
environment=regtest
execStatus=Failed. Execution failed: `main' threw exception: java.lang.Exception: GenericsTest: failed
javatestOS=SunOS 5.10 (x86)
javatestVersion=2.1.5
script=com.sun.javatest.regtest.RegressionScript 
sections=script_messages build compile build main
start=Tue Jun 22 08:41:34 PDT 2004
status=Failed. Execution failed: `main' threw exception: java.lang.Exception: GenericsTest: failed
test=com/sun/jdi/GenericsTest.java
work=/export/home/tbell/b58PRE/service_int_b58/test/JTwork/com/sun/jdi

#section:script_messages
----------messages:(4/262)----------
JDK under test: (/export/home/tbell/b58PRE/control/build/solaris-i586/j2sdk-image)
java version "1.5.0-tbell"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-tbell-2004_06_22.08-06-31)
Java HotSpot(TM) Server VM (build 1.5.0-beta3-b57, mixed mode)

#section:build
----------messages:(3/155)----------
command: build TargetAdapter 
reason: User specified action: run build TestScaffold VMConnection TargetListener TargetAdapter 
elapsed time (seconds): 0.0
result: Passed. No need to compile: TargetAdapter.java

#section:compile
----------messages:(3/214)----------
command: compile /export/home/tbell/b58PRE/service_int_b58/test/com/sun/jdi/GenericsTest.java 
reason: User specified action: run compile -source 1.5 -target 1.5 -g GenericsTest.java 
elapsed time (seconds): 1.534
----------System.out:(0/0)----------
----------System.err:(0/0)----------
result: Passed. Compilation successful

#section:build
----------messages:(3/96)----------
command: build GenericsTest 
reason: Named class compiled on demand
elapsed time (seconds): 0.0
result: Passed. No need to compile: GenericsTest.java

#section:main
----------messages:(3/111)----------
command: main GenericsTest
reason: User specified action: run main GenericsTest 
elapsed time (seconds): 0.805
----------System.out:(46/1559)----------
JVM version:1.5.0-tbell
JDI version: 1.5
JVM description: Java Debug Interface (Reference Implementation) version 1.5 
Java Debug Wire Protocol (Reference Implementation) version 1.5
JVM Debug Interface version 1.0
JVM version 1.5.0-tbell (Java HotSpot(TM) Server VM, mixed mode)
Gen1<tt> ctor called
Gen1<tt> ctor called
strArray name = GenericsTarg.strArray
         type = array class java.lang.String[] (no class loader)
          sig = [Ljava/lang/String;
       genSig = null
intField name = GenericsTarg.intField
         type = int
          sig = I
genField name = GenericsTarg.genField
         type = class Gen1 (loaded by instance of sun.misc.Launcher$AppClassLoader(id=59))
          sig = LGen1;
       genSig = <tt:Ljava/lang/Object;>Ljava/lang/Object;
field1 name = Gen1.field1
       type = LGen1;
        sig = Ljava/lang/Object;
    gen sig = Ttt;
method1 name = Gen1.method1(java.lang.Object)
        type = LGen1;
         sig = (Ljava/lang/Object;)Ljava/lang/Object;
     gen sig = (Ttt;)Ttt;
     bridge  = false
   local var 0 = p1
      sig      = Ljava/lang/Object;
      gen sig  = Ttt;
   local var 1 = xxx
      sig      = LGen1;
      gen sig  = LGen1<Ljava/lang/String;>;
method2 name = Gen1.method2()
        type = LGen1;
         sig = ()Ljava/lang/String;
     gen sig = null
     bridge  = false
   local var 0 = str
      sig      = Ljava/lang/String;
      gen sig  = null
method1 name = Gen1.method1(java.lang.Object)
         sig = (Ljava/lang/Object;)Ljava/lang/Object;
      bridge = false
Goodbye from GenericsTarg!
----------System.err:(17/885)----------
run args: [GenericsTarg]
FAILED: Expected Sub1.method1 to be a bridge method but it isn't
java.lang.Exception: GenericsTest: failed
        at GenericsTest.runTests(GenericsTest.java:307)
        at TestScaffold.startTests(TestScaffold.java:397)
        at GenericsTest.main(GenericsTest.java:91)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:582)
        at com.sun.javatest.regtest.MainWrapper$MainThread.run(MainWrapper.java:94)
        at java.lang.Thread.run(Thread.java:595)

JavaTest Message: Test threw exception: java.lang.Exception: GenericsTest: failed
JavaTest Message: shutting down test

STATUS:Failed.`main' threw exception: java.lang.Exception: GenericsTest: failed
result: Failed. Execution failed: `main' threw exception: java.lang.Exception: GenericsTest: failed


test result: Failed. Execution failed: `main' threw exception: java.lang.Exception: GenericsTest: failed

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: tiger-rc FIXED IN: tiger-rc INTEGRATED IN: tiger-b59 tiger-rc
03-08-2004

EVALUATION ###@###.### 2004-06-22 The test expected a bridge method to be generated whereas the generation of the bridge method was optional, and javac got smart and no longer generates the bridge method. The test has to be changed to force javac to generate a bridge method. See Suggested Fix.
03-08-2004

SUGGESTED FIX ###@###.### 2004-06-22 ------- GenericsTest.java ------- 39c39 < System.out.println("param is " + p1); --- > System.out.println("method1: param is " + p1); 49c49,52 < // method1 & method2 are not directly overriden --- > String method1(String p1) { > System.out.println("method1 has been overridden: param is " + p1); > return "hi"; > } 248,251c251,261 < List sub1Methods = sub1Class.methodsByName("method1"); < // There is only one and it should be a bridge. < Method method1 = (Method)sub1Methods.get(0); < System.out.println("method1 name = " + method1); --- > List<Method> sub1Methods = sub1Class.methodsByName("method1"); > for (Method mm: sub1Methods) { > System.out.println("method is: " + mm); > } > /* > * There should be two methods - the first is the > * the method1 defined in Sub1, and the 2nd is a javac generated > * bridge method. > */ > Method method1 = (Method)sub1Methods.get(1); > System.out.println("\nmethod1 name = " + method1);
03-08-2004

PUBLIC COMMENTS .
03-08-2004

WORK AROUND ###@###.### 2004-06-22 Compile the .java files using javac from b57.
22-06-2004