Should the Record unapply method always return Some? #55
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.
Similar to #46.
I had a courier record
Foo { bar: Bar? }
and I used it to write a bug:The bug is that the match is not exhaustive. The scala exhaustivity checker would have caught this if
Foo
's generatedunapply
method had return typeSome[Foo]
instead ofOption[Foo]
.Unfortunately, the
unapply
method in theRecordClass.scala.txt
template has some ways of returningNone
, which I had to remove in order to make this work.I don't really understand why the catching that used to be there is necessary. Surely when you have an instance of a record, returning all of its fields should always succeed? If that's true, then the catching is not necessary.
(sorry I accidentally closed #54 and I don't know how to reopen it, so this is just a duplicate of #54)