On Tuesday, 19 May 2020 at 10:01:34 UTC, wjoe wrote:
As I was reading a few source files of a library I found dozens
of final struct declarations like this:
final struct Foo {
const pure final nothrow bar() { ... }
}
What's this supposed to express ?
A final class is a class that can't be subclassed - structs
can't be subclassed, so does that express something else or is
the final redundant ?
Additionally since it's not possible to subclass a struct it's
also not possible to override bar() - does 'final bar()' mean
something else ?
The only relevant bits of my web search for 'dlang: final' were
results for final class, virtual functions and final switch. Am
I missing something ?
It has no purpose. In D many attributes are allowed even if they
have no meaning.
D-Scanner checks this kind of stuff, to some extent, but not the
compiler.