Name: tb29552 Date: 12/15/2000
/*
java version "1.3.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0)
Java HotSpot(TM) Client VM (build 1.3.0, mixed mode)
The 1.3 javac does not output:
TestCompiler.java:27: Variable a may not have been initialized.
String a = String.valueOf(a);
^
1 error
for the following code. If you remove the try {...} finally {...},
then it will find and print the error.
The 1.2.2_05a javac does output the error message.
jikes (1.12) also has the same problem as the 1.3 javac.
*/
public class TestCompiler {
public static void main(String argv[]) {
try {
String y = "yyy";
} finally {
}
String a = String.valueOf(a);
System.out.println("a=" + a);
}
}
(Review ID: 113700)
======================================================================
Name: ssT124754 Date: 02/26/2001
NT:
java version "1.3.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0-C)
Java HotSpot(TM) Client VM (build 1.3.0-C, mixed mode)
Solaris:
java version "1.3.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0)
Java HotSpot(TM) Client VM (build 1.3.0, mixed mode)
The following code will not compile under 1.2.2_05 but will under 1.3.0. With
1.2.2_05, "Variable tb may not have been initialized." is reported in line 6.
In 1.3.0 however, it compiles successfully but dies with a VerifyError when you
try to run it. If the for loop is removed, or even replaced with a while loop,
1.3.0 will also not compile it.
import java.util.ArrayList;
public class TestBug {
public static void main (String[] args) {
for (int i = 0; i < 2; i++) {}
TestBug tb = new TestBug(tb);
}
public TestBug (TestBug tb) {}
}
(Review ID: 117695)
======================================================================
from 4435094:
public class Blaa {
public static void main(String argv[]) {
{ int i = 5; }
int i = i;
System.out.println("i: " + i);
}
}
neal.gafter@Eng 2001-04-06
======================================================================
from 4473457:
/*
java version "1.3.1"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1-b24)
Java HotSpot(TM) Client VM (build 1.3.1-b24, mixed mode)
The following code compiles without error:
*/
public class BadDay {
public static void anyMeth() {
for(int i=0; i<10; i++); // comment me
for(int i=i; i<10; i++);
}
public static void main(String [] as) { }
}
/*
The first indication of a problem is when you run the program; the ClassLoader
gives you this obscure message:
Exception in thread "main" java.lang.VerifyError: (class: BadDay, method:
anyMeth signature: ()V) Accessing value from uninitialized register 1
If you comment out the "comment me" line, the compiler correctly reports:
BadDay.java:7: variable i might not have been initialized
for(int i=i; i<10; i++);
^
1 error
*/
- duplicates
-
JDK-4419129 1.3.0 javac generates invalid code with for loop + constructor call
- Closed
-
JDK-4435094 Variable within a restricted namespace has unexpected external effect
- Closed
-
JDK-4473457 compiler accepts uninitialized values in static code
- Closed