https://issues.dlang.org/show_bug.cgi?id=3396
Stewart Gordon <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|diagnostic |spec Status|RESOLVED |REOPENED Resolution|INVALID |--- Assignee|[email protected] |[email protected] Summary|Call of abstract method not |Compiler accepts call of |detected by semantic check |superclass abstract method | |with no implementation - is | |this intended? --- Comment #16 from Stewart Gordon <[email protected]> --- (In reply to yebblies from comment #6) > could mean one of two things: > 1. M is a pure virtual function > 2. M provides 'base class functionality', but this is a di file so the body > isn't present. Whether it's a di file or not, it could potentially be either. I'd be surprised if this ambiguity is a deliberate design decision. It also means that it's impossible to tell whether super.M() is a valid call just by reading the code. If I were designing it, I would define a way to distinguish them, such as requiring the extern attribute for meaning 2. Anyhow, we need clarification of this. At the moment there's nothing in the spec indicating that defining "base class functionality" of an abstract method elsewhere is meant to work. If it is meant to work, there needs to be. If it isn't, it is a bug that the compiler accepts the code. As such, I'm reopening this as a spec issue. --
