[swift-evolution] Compiler Warning on Unextended Classes

Michael Peternell michael.peternell at gmx.at
Thu Jun 16 15:21:48 CDT 2016


I think unextended classes shouldn't be a compiler warning.
They even shouldn't be an optional linter warning.

There is a class. It doesn't have subclasses because I may have not written them yet. The process of writing software has to be anticipated somehow. I have 2 options:

1) I write the superclass first. Didn't declare it as final. Now I have to live with the warning until I first subclass it. This is really bad, because it encourages the habit of ignoring warnings.
2) I write the superclass first and mark it final. Later I write a subclass and remove the 'final' keyword again. => This makes people mark classes as final just because they aren't yet subclassed. This is really bad, and it sends the wrong signals to fellow developers. Marking a class as final signals that the class shouldn't be subclassed; whereas under this proposal developers are encouraged to mark classes as final just because they are not yet subclassed.

Have you considered code evolution? Furthermore, having a non-final class that is not subclassed, is not a bug. Declaring a variable and then never using it, is in many cases a bug. Most warnings hint at a likely bug, this warning doesn't.

-Michael

> Am 16.06.2016 um 11:55 schrieb Rehat Kathuria via swift-evolution <swift-evolution at swift.org>:
> 
> I’d like the compiler to present a warning when a class not declared as final is never subclassed. Thoughts?
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution



More information about the swift-evolution mailing list