[swift-evolution] Proposal: Finalization in protocol extensions and default implementations

Adrian Zubarev adrian.zubarev at devandartist.com
Wed May 18 12:53:42 CDT 2016

I’d like to revive this idea I posted long time ago. There is only one thing I need to update here:
protocol MagicType: class /* missed the class constraint */ {
    final var foo: Int { get }
    final func boo()
What do you guys think? Is there any technical reason why this is not possible?
Adrian Zubarev
Sent with Airmail

Am 5. Dezember 2015 bei 16:26:23, Adrian Zubarev (adrian.zubarev at devandartist.com) schrieb:

Hello there,

I wonder if it is a good idea to be able to finalize in protocols and default implementations.

Here is an example:

protocol MagicType {
    final var foo: Int { get }
    final func boo()

class X: MagicType {
    final var foo: Int {
        return 42
    final func boo() {

class Y: X {
    // can't override func boo or var foo in here


protocol SomeType {}

extension SomeType {
    final func foo() {
        print("Hello World")

class A: SomeType {}

class B: SomeType {
    /* this should raise an error, because the class B shouldn't */
    /* be able to override that function from SomeType */   
    func foo() {
        // do something else   

Regards Adrian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160518/497ab787/attachment.html>

More information about the swift-evolution mailing list