Bug 596580: Fix mozJSSubScriptLoader's version finding. (r=brendan)
[mozilla-central.git] / xpcom / analysis / final.js
bloba0a880a268a7c7ec17cb8dcf7d76ee39154b5cc8
1 function process_type(c)
3   if ((c.kind == 'class' || c.kind == 'struct') && !c.isIncomplete) {
4     for each (let base in c.bases)
5       if (isFinal(base.type))
6         error("Class '" + c.name + "' derives from final class '" + base.type.name + "'.", c.loc);
7   }
10 function process_function(decl, body)
12   if (!decl.memberOf)
13     return;
15   let c = decl.memberOf;
16   if ((c.kind == 'class' || c.kind == 'struct') && !c.isIncomplete) {
17     for each (let base in ancestorTypes(c))
18       for each (let member in base.members)
19         if (member.isFunction && isFinal(member) && member.shortName == decl.shortName)
20           error("Function '" + decl.name + "' overrides final ancestor in '" +
21                 base.name + "'.", c.loc);
22   }
25 function ancestorTypes(c)
27   for each (let base in c.bases) {
28     yield base.type;
29     for (let bb in ancestorTypes(base.type))
30       yield bb;
31   }
34 function isFinal(c)
36   return hasAttribute(c, 'NS_final');