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.

Reply via email to