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.
Enumerable#flat_map
haven't type checked as expected in Steep.This is because the subtyping relationship
Array[String] <: (A | Array[A])
resolves to a substitution ofA == Array[String]
. If it resolves to a substitution ofA == String
, the type checking will work.So, we'd like to introduce a function
#hole_path
. It takes two arguments, type and type variables, and returns the shortest path to unknown variable. Giving higher precedence to types with longer path will result more specific (smaller) type variable assignment.This depends on two intuitions (without any proof):
A == String
is better thanA == Array[String]
)#hole_path
implies more specific typeFingers crossed that this gives a better result.