View | Details | Raw Unified | Return to bug 184298
Collapse All | Expand All

(-)compiler/org/eclipse/jdt/internal/compiler/flow/LoopingFlowContext.java (+1 lines)
Lines 249-254 Link Here
249
		}
249
		}
250
	}
250
	}
251
	// propagate breaks
251
	// propagate breaks
252
	this.initsOnBreak.addPotentialNullInfoFrom(flowInfo);
252
	for (int i = 0; i < this.breakTargetsCount; i++) {
253
	for (int i = 0; i < this.breakTargetsCount; i++) {
253
		this.breakTargetContexts[i].initsOnBreak.addPotentialNullInfoFrom(flowInfo);
254
		this.breakTargetContexts[i].initsOnBreak.addPotentialNullInfoFrom(flowInfo);
254
	}
255
	}
(-)src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceTest.java (-19 / +41 lines)
Lines 3960-3977 Link Here
3960
// null analysis - while
3960
// null analysis - while
3961
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=184298
3961
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=184298
3962
// variant
3962
// variant
3963
public void _test0463_while_infinite() {
3963
public void test0463_while_infinite() {
3964
	this.runConformTest(
3964
	this.runConformTest(
3965
		new String[] {
3965
		new String[] {
3966
			"X.java",
3966
			"X.java",
3967
			"public class X {\n" + 
3967
			"public class X {\n" + 
3968
			"  public void test(String[] a) {\n" + 
3968
			"  public void test(String[] a) {\n" + 
3969
			"    String key = null;\n" + 
3969
			"    String key = null;\n" + 
3970
			"    for( int i = 0; ; i++ )\n" + 
3970
			"    while(true)\n" + 
3971
			"    {\n" + 
3971
			"    {\n" + 
3972
			"      if (a[i] == null)\n" + 
3972
			"      if (a[0] == null)\n" + 
3973
			"        break;\n" + 
3973
			"        break;\n" + 
3974
			"      key = a[i];\n" + 
3974
			"      key = a[0];\n" + 
3975
			"    }\n" + 
3975
			"    }\n" + 
3976
			"    if (key != null) {\n" + 
3976
			"    if (key != null) {\n" + 
3977
			"      // empty\n" + 
3977
			"      // empty\n" + 
Lines 3991-4001 Link Here
3991
			"public class X {\n" + 
3991
			"public class X {\n" + 
3992
			"  public void test(String[] a) {\n" + 
3992
			"  public void test(String[] a) {\n" + 
3993
			"    String key = null;\n" + 
3993
			"    String key = null;\n" + 
3994
			"    loop: for( int i = 0; ; i++ )\n" + 
3994
			"    loop: while(true)\n" + 
3995
			"    {\n" + 
3995
			"    {\n" + 
3996
			"      if (a[i] == null)\n" + 
3996
			"      if (a[0] == null)\n" + 
3997
			"        break loop;\n" + 
3997
			"        break loop;\n" + 
3998
			"      key = a[i];\n" + 
3998
			"      key = a[0];\n" + 
3999
			"    }\n" + 
4000
			"    if (key != null) {\n" + 
4001
			"      // empty\n" + 
4002
			"    }\n" + 
4003
			"  }\n" + 
4004
			"}"},
4005
		"");
4006
}
4007
4008
// null analysis - while
4009
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=184298
4010
// variant
4011
public void test0465_while_infinite() {
4012
	this.runConformTest(
4013
		new String[] {
4014
			"X.java",
4015
			"public class X {\n" + 
4016
			"  public void test(String[] a) {\n" + 
4017
			"    String key = null;\n" + 
4018
			"    while(true)\n" + 
4019
			"    {\n" + 
4020
			"      if (a[0] == null)\n" + 
4021
			"        break;\n" + 
4022
			"      key = \"non null\";\n" + 
3999
			"    }\n" + 
4023
			"    }\n" + 
4000
			"    if (key != null) {\n" + 
4024
			"    if (key != null) {\n" + 
4001
			"      // empty\n" + 
4025
			"      // empty\n" + 
Lines 5863-5881 Link Here
5863
// null analysis - do while
5887
// null analysis - do while
5864
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=184298
5888
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=184298
5865
// variant
5889
// variant
5866
public void _test0618_do_while_infinite() {
5890
public void test0618_do_while_infinite() {
5867
	this.runConformTest(
5891
	this.runConformTest(
5868
		new String[] {
5892
		new String[] {
5869
			"X.java",
5893
			"X.java",
5870
			"public class X {\n" + 
5894
			"public class X {\n" + 
5871
			"  public void test(String[] a) {\n" + 
5895
			"  public void test(String[] a) {\n" + 
5872
			"    String key = null;\n" + 
5896
			"    String key = null;\n" + 
5873
			"    for( int i = 0; ; i++ )\n" + 
5897
			"    do {\n" + 
5874
			"    {\n" + 
5898
			"      if (a[0] == null)\n" + 
5875
			"      if (a[i] == null)\n" + 
5876
			"        break;\n" + 
5899
			"        break;\n" + 
5877
			"      key = a[i];\n" + 
5900
			"      key = a[0];\n" + 
5878
			"    }\n" + 
5901
			"    } while (true);\n" + 
5879
			"    if (key != null) {\n" + 
5902
			"    if (key != null) {\n" + 
5880
			"      // empty\n" + 
5903
			"      // empty\n" + 
5881
			"    }\n" + 
5904
			"    }\n" + 
Lines 5894-5905 Link Here
5894
			"public class X {\n" + 
5917
			"public class X {\n" + 
5895
			"  public void test(String[] a) {\n" + 
5918
			"  public void test(String[] a) {\n" + 
5896
			"    String key = null;\n" + 
5919
			"    String key = null;\n" + 
5897
			"    loop: for( int i = 0; ; i++ )\n" + 
5920
			"    loop: do {\n" + 
5898
			"    {\n" + 
5921
			"      if (a[0] == null)\n" + 
5899
			"      if (a[i] == null)\n" + 
5900
			"        break loop;\n" + 
5922
			"        break loop;\n" + 
5901
			"      key = a[i];\n" + 
5923
			"      key = a[0];\n" + 
5902
			"    }\n" + 
5924
			"    } while (true);\n" + 
5903
			"    if (key != null) {\n" + 
5925
			"    if (key != null) {\n" + 
5904
			"      // empty\n" + 
5926
			"      // empty\n" + 
5905
			"    }\n" + 
5927
			"    }\n" + 
Lines 6833-6839 Link Here
6833
6855
6834
// null analysis - for
6856
// null analysis - for
6835
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=184298
6857
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=184298
6836
public void _test0743_for_infinite() {
6858
public void test0743_for_infinite() {
6837
	this.runConformTest(
6859
	this.runConformTest(
6838
		new String[] {
6860
		new String[] {
6839
			"X.java",
6861
			"X.java",

Return to bug 184298