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

(-)compiler/org/eclipse/jdt/internal/compiler/ast/MethodDeclaration.java (-1 / +1 lines)
Lines 47-53 Link Here
47
			if (this.binding == null)
47
			if (this.binding == null)
48
				return;
48
				return;
49
49
50
			if (!this.binding.isUsed()) {
50
			if (!this.binding.isUsed() && !this.binding.isAbstract()) {
51
				if (this.binding.isPrivate()
51
				if (this.binding.isPrivate()
52
					|| (((this.binding.modifiers & (ExtraCompilerModifiers.AccOverriding|ExtraCompilerModifiers.AccImplementing)) == 0)
52
					|| (((this.binding.modifiers & (ExtraCompilerModifiers.AccOverriding|ExtraCompilerModifiers.AccImplementing)) == 0)
53
						&& this.binding.isOrEnclosedByPrivateType())) {
53
						&& this.binding.isOrEnclosedByPrivateType())) {
(-)compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier.java (-4 lines)
Lines 210-219 Link Here
210
	// obligations should qualify as a use.
210
	// obligations should qualify as a use.
211
	if (concreteMethod.isOrEnclosedByPrivateType())
211
	if (concreteMethod.isOrEnclosedByPrivateType())
212
		concreteMethod.original().modifiers |= ExtraCompilerModifiers.AccLocallyUsed;
212
		concreteMethod.original().modifiers |= ExtraCompilerModifiers.AccLocallyUsed;
213
	for (int i = abstractMethods.length; --i >= 0;) {
214
		if (abstractMethods[i].isOrEnclosedByPrivateType())
215
			abstractMethods[i].original().modifiers |= ExtraCompilerModifiers.AccLocallyUsed;
216
	}
217
}
213
}
218
214
219
/*
215
/*
(-)Eclipse Java Tests Compiler/org/eclipse/jdt/tests/compiler/regression/NegativeTest.java (+31 lines)
Lines 16596-16599 Link Here
16596
	);
16596
	);
16597
16597
16598
}
16598
}
16599
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=265571
16600
public void test445() {
16601
	this.runNegativeTest(
16602
		new String[] {
16603
				"X.java",
16604
				"public class X {\n" +
16605
			    "    public void v() {\n" +
16606
			    "        ConcreteClass tab = new ConcreteClass();\n" +
16607
			    "        tab.x();\n" +
16608
			    "    }\n" +
16609
			    "    private abstract class AbstractClass {\n" +
16610
			    "        public abstract void x();\n" +
16611
			    "    }\n" + 
16612
			    "    private class ConcreteClass extends AbstractClass {\n" +
16613
			    "        public void x() {\n" +
16614
			    "        }\n" +
16615
			    "    }\n" +       
16616
			    "}\n"
16617
			},
16618
		"----------\n" + 
16619
		"1. WARNING in X.java (at line 3)\n" + 
16620
		"	ConcreteClass tab = new ConcreteClass();\n" + 
16621
		"	                    ^^^^^^^^^^^^^^^^^^^\n" + 
16622
		"Access to enclosing constructor X.ConcreteClass() is emulated by a synthetic accessor method\n" + 
16623
		"----------\n" + 
16624
		"2. WARNING in X.java (at line 9)\n" + 
16625
		"	private class ConcreteClass extends AbstractClass {\n" + 
16626
		"	              ^^^^^^^^^^^^^\n" + 
16627
		"Access to enclosing constructor X.AbstractClass() is emulated by a synthetic accessor method\n" + 
16628
		"----------\n");
16629
}
16599
}
16630
}

Return to bug 265571