From 947bec4a16640b3425e246b19bec6494c4f21f30 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Sat, 29 Jan 2011 13:22:57 +0100
Subject: [PATCH] Autodoc: The set of modifiers for a symbol is now on a more
 canonic form.

---
 .../Tools.pmod/AutoDoc.pmod/PikeParser.pike   | 20 ++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike b/lib/modules/Tools.pmod/AutoDoc.pmod/PikeParser.pike
index e477220a25..fa47a8e2eb 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;
 }
 
-- 
GitLab