RFR: 8281057: Fix doc references to overriding in JLS
Pavel Rappo
prappo at openjdk.java.net
Wed Feb 2 12:46:05 UTC 2022
On Wed, 2 Feb 2022 12:06:39 GMT, David Holmes <dholmes at openjdk.org> wrote:
>> While looking into guts of javadoc comment inheritance, I noticed that a number of places in JDK seem to confuse JLS 8.4.6.** with JLS 8.4.8.**.
>>
>> Granted, "8.4.6 Method Throws" tangentially addresses overriding. However, I believe that the real target should be "8.4.8. Inheritance, Overriding, and Hiding" and its subsections.
>
> src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java line 1793:
>
>> 1791: }
>> 1792:
>> 1793: // Error if static method overrides instance method (JLS 8.4.8.2).
>
> "overrides" should be "hides"
Although you seem to be correct, the error messages and the code around operate using the term "override":
// Error if static method overrides instance method (JLS 8.4.8.2).
if ((m.flags() & STATIC) != 0 &&
(other.flags() & STATIC) == 0) {
log.error(TreeInfo.diagnosticPositionFor(m, tree),
Errors.OverrideStatic(cannotOverride(m, other)));
m.flags_field |= BAD_OVERRIDE;
return;
}
// Error if instance method overrides static or final
// method (JLS 8.4.8.1).
if ((other.flags() & FINAL) != 0 ||
(m.flags() & STATIC) == 0 &&
(other.flags() & STATIC) != 0) {
log.error(TreeInfo.diagnosticPositionFor(m, tree),
Errors.OverrideMeth(cannotOverride(m, other),
asFlagSet(other.flags() & (FINAL | STATIC))));
m.flags_field |= BAD_OVERRIDE;
return;
}
/**
* compiler.err.override.static=\
* {0}\n\
* overriding method is static
*/
public static Error OverrideStatic(Fragment arg0) {
return new Error("compiler", "override.static", arg0);
}
Compiler folk, what do you think?
-------------
PR: https://git.openjdk.java.net/jdk/pull/7311
More information about the compiler-dev
mailing list