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

(-)eval/org/eclipse/jdt/internal/eval/CodeSnippetScope.java (-2 / +2 lines)
Lines 121-127 Link Here
121
	// receiverType can be an array binding in one case... see if you can change it
121
	// receiverType can be an array binding in one case... see if you can change it
122
	if (receiverType instanceof ArrayBinding)
122
	if (receiverType instanceof ArrayBinding)
123
		return false;
123
		return false;
124
	ReferenceBinding type = (ReferenceBinding) receiverType;
124
	ReferenceBinding type = (ReferenceBinding) (receiverType.isCapture() ? receiverType.erasure() : receiverType); // https://bugs.eclipse.org/bugs/show_bug.cgi?id=285002
125
	PackageBinding declaringPackage = fieldBinding.declaringClass.fPackage;
125
	PackageBinding declaringPackage = fieldBinding.declaringClass.fPackage;
126
	TypeBinding originalDeclaringClass = fieldBinding.declaringClass .original();
126
	TypeBinding originalDeclaringClass = fieldBinding.declaringClass .original();
127
	do {
127
	do {
Lines 192-198 Link Here
192
	// receiverType can be an array binding in one case... see if you can change it
192
	// receiverType can be an array binding in one case... see if you can change it
193
	if (receiverType instanceof ArrayBinding)
193
	if (receiverType instanceof ArrayBinding)
194
		return false;
194
		return false;
195
	ReferenceBinding type = (ReferenceBinding) receiverType;
195
	ReferenceBinding type = (ReferenceBinding) (receiverType.isCapture() ? receiverType.erasure() : receiverType); // https://bugs.eclipse.org/bugs/show_bug.cgi?id=285002
196
	PackageBinding declaringPackage = methodBinding.declaringClass.fPackage;
196
	PackageBinding declaringPackage = methodBinding.declaringClass.fPackage;
197
	TypeBinding originalDeclaringClass = methodBinding.declaringClass .original();
197
	TypeBinding originalDeclaringClass = methodBinding.declaringClass .original();
198
	do {
198
	do {
(-)compiler/org/eclipse/jdt/internal/compiler/lookup/ReferenceBinding.java (-1 / +1 lines)
Lines 258-264 Link Here
258
	// isDefault()
258
	// isDefault()
259
	if (invocationType.fPackage != this.fPackage) return false;
259
	if (invocationType.fPackage != this.fPackage) return false;
260
260
261
	ReferenceBinding currentType = receiverType;
261
	ReferenceBinding currentType = (ReferenceBinding) (receiverType.isCapture() ? receiverType.erasure() : receiverType);  // https://bugs.eclipse.org/bugs/show_bug.cgi?id=285002
262
	TypeBinding originalDeclaringClass = (enclosingType() == null ? this : enclosingType()).original();
262
	TypeBinding originalDeclaringClass = (enclosingType() == null ? this : enclosingType()).original();
263
	do {
263
	do {
264
		if (originalDeclaringClass == currentType.original()) return true;
264
		if (originalDeclaringClass == currentType.original()) return true;
(-)compiler/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java (-1 / +1 lines)
Lines 321-327 Link Here
321
	if (receiverType instanceof ArrayBinding)
321
	if (receiverType instanceof ArrayBinding)
322
		return false;
322
		return false;
323
	TypeBinding originalDeclaringClass = this.declaringClass.original();
323
	TypeBinding originalDeclaringClass = this.declaringClass.original();
324
	ReferenceBinding currentType = (ReferenceBinding) receiverType;
324
	ReferenceBinding currentType = (ReferenceBinding) (receiverType.isCapture() ? receiverType.erasure() : receiverType); // https://bugs.eclipse.org/bugs/show_bug.cgi?id=285002
325
	do {
325
	do {
326
		if (originalDeclaringClass == currentType.original()) return true;
326
		if (originalDeclaringClass == currentType.original()) return true;
327
		PackageBinding currentPackage = currentType.fPackage;
327
		PackageBinding currentPackage = currentType.fPackage;
(-)compiler/org/eclipse/jdt/internal/compiler/lookup/FieldBinding.java (-1 / +1 lines)
Lines 139-145 Link Here
139
	if (receiverType instanceof ArrayBinding)
139
	if (receiverType instanceof ArrayBinding)
140
		return false;
140
		return false;
141
	TypeBinding originalDeclaringClass = this.declaringClass.original();
141
	TypeBinding originalDeclaringClass = this.declaringClass.original();
142
	ReferenceBinding currentType = (ReferenceBinding) receiverType;
142
	ReferenceBinding currentType = (ReferenceBinding) (receiverType.isCapture() ? receiverType.erasure() : receiverType); // https://bugs.eclipse.org/bugs/show_bug.cgi?id=285002
143
	do {
143
	do {
144
		if (originalDeclaringClass == currentType.original()) return true;
144
		if (originalDeclaringClass == currentType.original()) return true;
145
		PackageBinding currentPackage = currentType.fPackage;
145
		PackageBinding currentPackage = currentType.fPackage;
(-)src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java (+32 lines)
Lines 49884-49887 Link Here
49884
		""
49884
		""
49885
	);
49885
	);
49886
}
49886
}
49887
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=285002 (visibility error for package private method)
49888
public void test1457() {
49889
	this.runConformTest(
49890
			new String[] {
49891
					"CompilerBug.java",
49892
					"public class CompilerBug {\n" +
49893
					"	public <T> T newInstance( Class<T> c ) throws InstantiationException, IllegalAccessException {\n" +
49894
					"	      return c.newInstance();\n" +
49895
					"		   }\n" +
49896
					"		   protected void protectedMethod() {}\n" +
49897
					"		   void packagePrivateMethod() {}\n" +
49898
					"		   private void privateMethod() {}\n" +
49899
					"		   private int privateInt = 0;\n" +
49900
					"		   int packagePrivateInt = 0;\n" +
49901
					"		   protected int protectedInt = 0;\n" +
49902
					"		   private void isThisBuggy() throws InstantiationException, IllegalAccessException {\n" +
49903
					"		      CompilerBug c = getClass().newInstance();\n" +
49904
					"		      c.privateMethod();\n" +
49905
					"		      c.packagePrivateMethod();\n" +
49906
					"		      c.protectedMethod();\n" +
49907
					"		      getClass().newInstance().packagePrivateMethod();\n" +
49908
					"		      getClass().newInstance().privateMethod();\n" +
49909
					"		      getClass().newInstance().protectedMethod();\n" +
49910
					"		      getClass().newInstance().privateInt = 10;\n" +
49911
					"		      getClass().newInstance().packagePrivateInt = 10;\n" +
49912
					"		      getClass().newInstance().protectedInt = 10;\n" +
49913
					"		   }\n" +
49914
					"	}\n"
49915
			},
49916
			null,
49917
			null); // no specific success output string
49918
}
49887
}
49919
}

Return to bug 285002