Refutable pattern initializations require that the 'isInit' parameter
is set to true, which transfers ownership of the input value.
One way it was getting set to false was when the pattern was bound to
an expression containing OpaqueValueExprs.
The opaque value of an open existential is +0, but that can't show
up here; only the result of a tuple conversion can. In principle this
is always a +1 value, however it could also be trivial, and we were
incorrectly treating it as a +0 value. We need to check isPlusOne()
instead of hasCleanup(); the latter returns false for trivial values.
Doing this lets us avoid going through the initialization altogether.
Fixes <rdar://problem/56809385>.