This class finding common supertype of two types.
It looks for nearest common super type using algorithm described here: See https://stackoverflow.com/a/9797689 It means that for combination:
It looks for nearest common super type using algorithm described here: See https://stackoverflow.com/a/9797689 It means that for combination:
C <: B <: A D <: B <: A
it will return only B (without A). For combination:
C <: (B <: A) with (B' <: A') D <: (B <: A) with (B' <: A')
it will return union (B or B')
This class finding common supertype of two types. It basically based on fact that TypingResults are sets of possible supertypes with some additional restrictions (like TypedObjectTypingResult).
This class, like CanBeSubclassDeterminer is in spirit of "Be type safety as much as possible, but also provide some helpful conversion for types not in the same jvm class hierarchy like boxed Integer to boxed Long and so on". WARNING: Evaluation of SpEL expressions fit into this spirit, for other language evaluation engines you need to provide such a compatibility.
TODO: strictTaggedTypesChecking was added as quickFix for compare Type with TaggedType. We should remove it after we will support creating model with TaggedType field