Static Analysis at Mozilla, @must_override

bearophile bearophileHUGS at lycos.com
Mon Jul 12 05:15:31 PDT 2010


A video, Large-Scale Static Analysis of C++ code at Mozilla, video, July 9th, 2010:
http://vimeo.com/12614626


>From the video I have seen that Mozilla developers have felt the need to add this new attribute in C++ (implemented in JavaScript through their hydra plug-ins and used with a define NS_MUST_OVERRIDE):
http://mxr.mozilla.org/mozilla-central/source/xpcom/analysis/must-override.js

I have not felt a need for it (do you see any need for it in your programs?), because I have not written one million lines long C++ programs, but if necessary I think it's not hard to add it to D as the attribute:

@must_override

(Alternative name: @to_override). It's similar to the keyword "abstract", it requires overloading in derived classes, but it allows the implementation of the method in the original class too (that's not abstract).


class Foo {
  @must_override int foo() { return 1; }
}
class Bar1 : Foo {
  int foo() { return 2; } // OK
}
class Bar2 : Foo { // error, missing foo()
}


If the creation of custom attributes in user code is allowed, then a (scoped) @must_override can be defined and tried out. To implement custom attributes a good amount of static introspection is needed.

Bye,
bearophile


More information about the Digitalmars-d mailing list