swift
da86703e - [CS] Fix `coercePatternToType` enum cast handling

Commit
2 years ago
[CS] Fix `coercePatternToType` enum cast handling Previously if the cast was unresolved, we would emit a warning and bail with `nullptr`. This is wrong, because the caller expects a `nullptr` return to mean we emitted an error. Change the diagnostic to an error to fix this. This may appear source breaking, but in reality previously we were failing to add the cast at all in this case, which lead to a crash in SILGen. We really do want to reject these cases as errors, as this will give us a better opportunity to fall back to type-checking as ExprPatterns, and better matches the constraint solver type-checking. Also while we're here, change the diagnostic for the case where we don't have an existential context type from the confusing "enum doesn't have member" diagnostic to the pattern mismatch diagnostic. rdar://107420031
Author
Committer
Parents
  • lib/Sema
    • File
      TypeCheckPattern.cpp
  • test
    • Constraints
      • File
        patterns.swift
      • File
        rdar107420031.swift
    • Parse
      • File
        matching_patterns.swift
      • File
        matching_patterns_reference_bindings.swift
Loading