diff --git a/lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike b/lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike index e477220a25210aaad374d249f74ba033b3b78821..fa47a8e2eb49112f32d88573b0e8d13f430a5010 100644 --- a/lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike +++ b/lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike @@ -660,10 +660,28 @@ array(string) parseModifiers() { string s = peekToken(); array(string) mods = ({ }); while (modifiers[s]) { - mods += ({ s }); + // Canonicalize some aliases. + s = ([ "nomask":"final", + "static":"protected", + "inline":"local", + ])[s] || s; + if (!has_value(mods, s)) { + mods += ({ s }); + } readToken(); s = peekToken(); } + if (sizeof(mods) > 1) { + // Clean up implied modifiers. + if (has_value(mods, "private")) { + // private implies protected. + mods -= ({ "protected", }); + } + if (has_value(mods, "final")) { + // final implies local. + mods -= ({ "local" }); + } + } return mods; }