[swift-dev] "does not conform to protocol" --> Tell me what to add

Douglas Gregor dgregor at apple.com
Wed Apr 20 23:03:19 CDT 2016


> On Apr 20, 2016, at 4:37 PM, Joseph Bell via swift-dev <swift-dev at swift.org> wrote:
> 
> I've noticed in Xcode there are a lot of fixits that tell you exactly what to do to "fix it", and it will do it for you.  However, this does not apply to "does not conform to protocol" errors; I'm wondering if it is possible for the fixit engine to add methods/properties such that, at a minimum, a user knows what to actually add/implement to get protocol conformance.

It is absolutely possible and would be a wonderful improvement. The trickiest part comes down to synthesizing the right declaration (basically, creating what the user should have written) so it can be presented to the user in the Fix-It text. We actually have some code that does something similar. Try this in Xcode:

class A {
  required init(x: Int, y: String) { }
}

class B : A {
  init() {
    super.init(x: 5, y: "hello")
  }
}

and you get a Fix-It that adds the missing required initializer:

  required init(x: Int, y: String) {
    fatalError("init(x:y:) has not been implemented")
  }

(That’s lib/Sema/TypeCheckDecl.cpp’s diagnoseMissingRequiredInitializer(), FWIW).

	- Doug


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20160420/da7147c6/attachment.html>


More information about the swift-dev mailing list