Don't return typed nil interface values #46
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix crash in Juju caused by typed nil Link.
https://bugs.launchpad.net/juju-core/+bug/1573659
The line immediately before the panic checked for nil, but because the type pointer is set on the Link it wasn't equal to nil.
From reading about this it seems like methods that return interfaces shouldn't implicitly return nil values, they should return nil explicitly, otherwise the result will be a typed nil. Checking for a typed nil on the client side is awkward - if the underlying type is known and accessible you could try a type assertion, otherwise it requires reflection.
https://golang.org/doc/faq#nil_error
(About errors, but applies to any interface.)