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

(-)src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java (-24 / +9 lines)
Lines 35789-35835 Link Here
35789
			"}", // =================
35789
			"}", // =================
35790
		},
35790
		},
35791
		"----------\n" + 
35791
		"----------\n" + 
35792
		"1. WARNING in Y.java (at line 2)\n" + 
35792
		"1. ERROR in Y.java (at line 2)\n" + 
35793
		"	Z z1 = z1;\n" + 
35794
		"	  ^^^^^^^\n" + 
35795
		"The assignment to variable z1 has no effect\n" + 
35796
		"----------\n" + 
35797
		"2. ERROR in Y.java (at line 2)\n" + 
35798
		"	Z z1 = z1;\n" + 
35793
		"	Z z1 = z1;\n" + 
35799
		"	       ^^\n" + 
35794
		"	       ^^\n" + 
35800
		"Cannot reference a field before it is defined\n" + 
35795
		"Cannot reference a field before it is defined\n" + 
35801
		"----------\n" + 
35796
		"----------\n" + 
35802
		"3. WARNING in Y.java (at line 3)\n" + 
35797
		"2. ERROR in Y.java (at line 3)\n" + 
35803
		"	Z[] z2 = z2;\n" + 
35804
		"	    ^^^^^^^\n" + 
35805
		"The assignment to variable z2 has no effect\n" + 
35806
		"----------\n" + 
35807
		"4. ERROR in Y.java (at line 3)\n" + 
35808
		"	Z[] z2 = z2;\n" + 
35798
		"	Z[] z2 = z2;\n" + 
35809
		"	         ^^\n" + 
35799
		"	         ^^\n" + 
35810
		"Cannot reference a field before it is defined\n" + 
35800
		"Cannot reference a field before it is defined\n" + 
35811
		"----------\n" + 
35801
		"----------\n" + 
35812
		"5. ERROR in Y.java (at line 6)\n" + 
35802
		"3. ERROR in Y.java (at line 6)\n" + 
35813
		"	E e0 = es[0];\n" + 
35803
		"	E e0 = es[0];\n" + 
35814
		"	       ^^\n" + 
35804
		"	       ^^\n" + 
35815
		"Cannot reference a field before it is defined\n" + 
35805
		"Cannot reference a field before it is defined\n" + 
35816
		"----------\n" + 
35806
		"----------\n" + 
35817
		"6. ERROR in Y.java (at line 7)\n" + 
35807
		"4. ERROR in Y.java (at line 7)\n" + 
35818
		"	E e = e;\n" + 
35808
		"	E e = e;\n" + 
35819
		"	      ^\n" + 
35809
		"	      ^\n" + 
35820
		"Cannot reference a field before it is defined\n" + 
35810
		"Cannot reference a field before it is defined\n" + 
35821
		"----------\n" + 
35811
		"----------\n" + 
35822
		"7. ERROR in Y.java (at line 8)\n" + 
35812
		"5. ERROR in Y.java (at line 8)\n" + 
35823
		"	E[] es = es;\n" + 
35813
		"	E[] es = es;\n" + 
35824
		"	         ^^\n" + 
35814
		"	         ^^\n" + 
35825
		"Cannot reference a field before it is defined\n" + 
35815
		"Cannot reference a field before it is defined\n" + 
35826
		"----------\n" + 
35816
		"----------\n" + 
35827
		"8. ERROR in Y.java (at line 9)\n" + 
35817
		"6. ERROR in Y.java (at line 9)\n" + 
35828
		"	E e2 = e2.e;\n" + 
35818
		"	E e2 = e2.e;\n" + 
35829
		"	       ^^^^\n" + 
35819
		"	       ^^^^\n" + 
35830
		"Cannot reference a field before it is defined\n" + 
35820
		"Cannot reference a field before it is defined\n" + 
35831
		"----------\n" + 
35821
		"----------\n" + 
35832
		"9. ERROR in Y.java (at line 9)\n" + 
35822
		"7. ERROR in Y.java (at line 9)\n" + 
35833
		"	E e2 = e2.e;\n" + 
35823
		"	E e2 = e2.e;\n" + 
35834
		"	       ^^^^\n" + 
35824
		"	       ^^^^\n" + 
35835
		"e2.e cannot be resolved or is not a field\n" + 
35825
		"e2.e cannot be resolved or is not a field\n" + 
Lines 35948-35964 Link Here
35948
		"	  ^\n" + 
35938
		"	  ^\n" + 
35949
		"The field T.t is hiding another local variable defined in an enclosing type scope\n" + 
35939
		"The field T.t is hiding another local variable defined in an enclosing type scope\n" + 
35950
		"----------\n" + 
35940
		"----------\n" + 
35951
		"3. WARNING in X.java (at line 5)\n" + 
35941
		"3. ERROR in X.java (at line 5)\n" + 
35952
		"	T t = t;\n" + 
35953
		"	  ^^^^^\n" + 
35954
		"The assignment to variable t has no effect\n" + 
35955
		"----------\n" + 
35956
		"4. ERROR in X.java (at line 5)\n" + 
35957
		"	T t = t;\n" + 
35942
		"	T t = t;\n" + 
35958
		"	      ^\n" + 
35943
		"	      ^\n" + 
35959
		"Cannot reference a field before it is defined\n" + 
35944
		"Cannot reference a field before it is defined\n" + 
35960
		"----------\n" + 
35945
		"----------\n" + 
35961
		"5. WARNING in X.java (at line 7)\n" + 
35946
		"4. WARNING in X.java (at line 7)\n" + 
35962
		"	class U {\n" + 
35947
		"	class U {\n" + 
35963
		"	      ^\n" + 
35948
		"	      ^\n" + 
35964
		"The type U is hiding the type X.U\n" + 
35949
		"The type U is hiding the type X.U\n" + 
(-)compiler/org/eclipse/jdt/internal/compiler/ast/ASTNode.java (-1 / +2 lines)
Lines 52-58 Link Here
52
	public final static int Bit27 = 0x4000000; 			// parenthesis count (expression)
52
	public final static int Bit27 = 0x4000000; 			// parenthesis count (expression)
53
	public final static int Bit28 = 0x8000000; 			// parenthesis count (expression)
53
	public final static int Bit28 = 0x8000000; 			// parenthesis count (expression)
54
	public final static int Bit29 = 0x10000000; 		// parenthesis count (expression)
54
	public final static int Bit29 = 0x10000000; 		// parenthesis count (expression)
55
	public final static int Bit30 = 0x20000000; 		// elseif (if statement) | try block exit (try statement) | fall-through (case statement)
55
	public final static int Bit30 = 0x20000000; 		// elseif (if statement) | try block exit (try statement) | fall-through (case statement) | ignore no effect assign (expression ref)
56
	public final static int Bit31 = 0x40000000; 		// local declaration reachable (local decl) | ignore raw type check (type ref) | discard entire assignment (assignment)
56
	public final static int Bit31 = 0x40000000; 		// local declaration reachable (local decl) | ignore raw type check (type ref) | discard entire assignment (assignment)
57
	public final static int Bit32 = 0x80000000; 		// reachable (statement)
57
	public final static int Bit32 = 0x80000000; 		// reachable (statement)
58
58
Lines 145-150 Link Here
145
	// for expression 
145
	// for expression 
146
	public static final int ParenthesizedSHIFT = 21; // Bit22 -> Bit29
146
	public static final int ParenthesizedSHIFT = 21; // Bit22 -> Bit29
147
	public static final int ParenthesizedMASK = Bit22|Bit23|Bit24|Bit25|Bit26|Bit27|Bit28|Bit29; // 8 bits for parenthesis count value (max. 255)
147
	public static final int ParenthesizedMASK = Bit22|Bit23|Bit24|Bit25|Bit26|Bit27|Bit28|Bit29; // 8 bits for parenthesis count value (max. 255)
148
	public static final int IgnoreNoEffectAssignCheck = Bit30;
148
149
149
	// for references on lhs of assignment
150
	// for references on lhs of assignment
150
	public static final int IsStrictlyAssigned = Bit14; // set only for true assignments, as opposed to compound ones
151
	public static final int IsStrictlyAssigned = Bit14; // set only for true assignments, as opposed to compound ones
(-)compiler/org/eclipse/jdt/internal/compiler/ast/SingleNameReference.java (+1 lines)
Lines 202-207 Link Here
202
				&& fieldBinding.id >= methodScope.lastVisibleFieldID
202
				&& fieldBinding.id >= methodScope.lastVisibleFieldID
203
				&& (!fieldBinding.isStatic() || methodScope.isStatic)) {
203
				&& (!fieldBinding.isStatic() || methodScope.isStatic)) {
204
			scope.problemReporter().forwardReference(this, 0, methodScope.enclosingSourceType());
204
			scope.problemReporter().forwardReference(this, 0, methodScope.enclosingSourceType());
205
			this.bits |= ASTNode.IgnoreNoEffectAssignCheck;
205
		}
206
		}
206
		return fieldBinding.type;
207
		return fieldBinding.type;
207
	
208
	
(-)compiler/org/eclipse/jdt/internal/compiler/ast/Assignment.java (+3 lines)
Lines 99-104 Link Here
99
}
99
}
100
100
101
public static Binding getDirectBinding(Expression someExpression) {
101
public static Binding getDirectBinding(Expression someExpression) {
102
	if ((someExpression.bits & ASTNode.IgnoreNoEffectAssignCheck) != 0) {
103
		return null;
104
	}
102
	if (someExpression instanceof SingleNameReference) {
105
	if (someExpression instanceof SingleNameReference) {
103
		return ((SingleNameReference)someExpression).binding;
106
		return ((SingleNameReference)someExpression).binding;
104
	} else if (someExpression instanceof FieldReference) {
107
	} else if (someExpression instanceof FieldReference) {

Return to bug 167488