blob: dddaa1dc4e516038d21b4584a00ba9c9047e92b9 [file] [log] [blame]
import java.io.*;
import java.net.*;
import java.util.*;
public class a {
static final a ai;
int ii;
static {
<error descr="Variable 'ai' might not have been initialized">ai</error>.ii = 4;
ai = null;
}
void f1(int i) {
int j;
i = <error descr="Variable 'j' might not have been initialized">j</error>;
}
void f2(int i) {
int j;
if (i ==2) j = 4;
i = <error descr="Variable 'j' might not have been initialized">j</error>;
}
void f3(int i) {
int j;
if (i==3 && (j=i) != 9) {
i = j+2;
}
else {
i -= -1 - <error descr="Variable 'j' might not have been initialized">j</error>;
}
}
void f4(int i) {
final int dd;
Runnable r = new Runnable() {
public void run() {
int j = <error descr="Variable 'dd' might not have been initialized">dd</error>;
}
};
if (i == 3) dd = 5;
else dd = 6;
}
void f5(int i) {
final int k;
class inner {
void f() {
int j = <error descr="Variable 'k' might not have been initialized">k</error>;
}
}
}
void f6(int a){
Object[] var;
if (a > 0){
}
else{
var = new Object[1];
}
System.out.println(<error descr="Variable 'var' might not have been initialized">var</error>);
}
void f7() {
int k;
try {
k=0;
} finally {
if (<error descr="Variable 'k' might not have been initialized">k</error>==0) {
}
}
}
void f8(int n)
{
int k;
while (n < 4) {
k = n;
break;
}
// k is not "definitely assigned" before this
System.out.println(<error descr="Variable 'k' might not have been initialized">k</error>);
}
void f9() {
final int k;
<error descr="Variable 'k' might not have been initialized">k</error>+=1;
}
void f10() {
final int k;
<error descr="Variable 'k' might not have been initialized">k</error>++;
int i = <error descr="Variable 'i' might not have been initialized">i</error> + 1;
int j = (j=2) == 1 || j==0 ? 1 : j;
}
void f11() {
int x = 0;
switch (x) {
case 0:
int y = 1;
System.out.println(y);
break;
case 1:
int z = <error descr="Variable 'y' might not have been initialized">y</error>;
System.out.println(z);
break;
}
}
void f12() {
switch (0) {
case 0:
int k=0;
case 1:
System.out.println(<error descr="Variable 'k' might not have been initialized">k</error>);
}
}
public class AInner {
class AI2 {}
private AI2 myTitleRenderer = new AI2() {
private String myLabel = "";
public String getTreeCellRendererComponent(String value) {
if (value instanceof String) {
int i = myLabel.length();
}
return null;
}
};
}
void f13() {
int i ;
try {
i = 0;
if (i==0) throw new IOException();
}
catch (IOException e) {
if (<error descr="Variable 'i' might not have been initialized">i</error>==0) return;
}
}
abstract class X {
class XException extends Exception{}
class YException extends Exception{}
class ZException extends Exception{}
public void test() throws XException {
final Object obj;
try {
obj = test1();
}
catch (YException fnf) {
}
finally {
try {
test2();
}
catch (ZException eof) {
}
}
<error descr="Variable 'obj' might not have been initialized">obj</error>.hashCode(); //can stay uninitialized
}
public abstract Object test1() throws YException, XException;
public abstract void test2() throws XException, ZException;
}
public static int test(List aList) {
List list2;
int counter = 0;
for (int i=0; i<aList.size(); i++) {
while (counter != 0) {
counter++;
list2 = new ArrayList();
}
<error descr="Variable 'list2' might not have been initialized">list2</error>.add(aList.get(i));
}
return counter;
}
void forEachParam(java.io.File x) {
for (java.io.File f: <error descr="Variable 'f' might not have been initialized">f</error>.listFiles()) {
forEachParam(f);
}
}
// all code below is correct
int cf1(int i) {
return i;
}
void cf2(int i) {
int j;
if (i == 0 && (j=i) != 2) {
i = j;
}
if (i == 0 || (j=i) != 2 || j>3) {
i = 2;
}
}
boolean cf3(int i) {
final int j;
if (i<3 || i>33) j = i;
else j = 4;
i = j;
return i==3 && i==5;
}
void cf33(int i) {
final int j2;
while (true) {
j2 = 5;
break;
}
i = j2;
}
void cf4() {
final int i1;
int i2;
final Object o1;
}
void cf5() {
final int dialog = 3;
final int dd;
if (dialog == 3) dd = 5;
else dd = 6;
Runnable r = new Runnable() {
public void run() {
int i = dialog;
int j = dd;
}
};
}
void cf6() {
class inner extends a {
void fi() {
int i = ii;
}
}
a ainst = new a() {
void fi() {
int i = ii;
}
};
}
a() {
int i = ai.ii;
}
void cf7() {
for(int i = 0; i < 3; i++){
Object element;
if (i==0){
element = null;
}
else if (i==3){
element = null;
}
else{
continue;
}
Object newe = element;
}
}
void cf8(int n)
{
int i;
while (true) {
if (false) {
i = 0;
break;
}
}
i++;
}
final boolean FB = true;
void cf9() {
int k;
if (FB) {
k = 4;
}
int j = k;
}
void cf10() {
for (String line; (line = "") != null; ) {
line.indexOf(" ");
}
}
void cf11(boolean d) {
boolean b;
boolean c = true;
if (c && (false && true)) {
c = b;
}
}
void cf12() {
boolean booleanVar = true;
boolean stringVar;
if (!(booleanVar && (stringVar = true))) {
stringVar = false;
}
if (stringVar) {
}
}
void cfxx(boolean a, boolean b) {
int n;
if ((a || b) && (n = 0) >= 2) {
n++; //
}
}
void cfxx1(boolean a, int b) {
final int i;
if ((true || false) && (i = b) != 0) {
System.out.println(i); // i gets highlighted }
}
}
void cfx3() {
boolean b;
boolean c;// = true;
if (<error descr="Variable 'c' might not have been initialized">c</error> && false) {
c = b;
}
}
void cfx4()
{
final int k;
if (false) {
k = 0;
k = 1;
System.out.println(k);
}
}
}
class Main {
void f() {
final int x;
x = 0;
class C {
void m () {
int y = x;
}
}
}
}
// continue in finally
class QuartzSchedulerThread {
public void run() throws IOException {
while (true) {
try {
} finally {
try {
run();
} catch (IOException e) {
e.printStackTrace();
}
continue;
}
}
}
}
class ExceptionProblems {
private boolean bad() {
final boolean succeeded;
try {
new FileInputStream("test");
succeeded = true;
} catch (IOException e) {
<error descr="Variable 'succeeded' might already have been assigned to">succeeded</error> = false; // should warn here
}
return succeeded;
}
}
class ImGood {
int foo() { //IDEADEV-7446
int foo;
if (true) {
foo = 42;
}
return foo;
}
}
class SwitchTest
{
public static String method()
{
int a = 0;
switch (a)
{
case 0:
return null;
case 4:
String description;
return <error descr="Variable 'description' might not have been initialized">description</error>;
default:
return "";
}
}
}