KT-8879 Stackoverflow exception on completion from inference

#KT-8879 Fixed
Added ConstraintContext storing 'derivedFrom' variables.
This information is used to prevent infinite recursion:
if a variable was substituted in a type of a bound, it shouldn't be substituted there for the second time.
This commit is contained in:
Svetlana Isakova
2015-09-02 17:54:13 +03:00
parent 3c5de56e83
commit 4f28a0a9a1
10 changed files with 116 additions and 33 deletions
+1
View File
@@ -6,6 +6,7 @@ interface C : B
interface Consumer<in T>
interface Producer<out T>
interface Inv<T>
interface My<T>
interface Successor<T> : My<T>
@@ -0,0 +1,23 @@
VARIABLES T P
T <: My<T>
Inv<P> <: Inv<T>
type parameter bounds:
T <: My<T>*, := P*, <: My<out My<T>>*, <: My<P>*, <: My<out My<P>>*, <: My<out My<out My<T>>>*
P := T*, <: My<T>*, <: My<out My<T>>*, <: My<P>*, <: My<out My<P>>*, <: My<out My<out My<T>>>*
status:
-hasCannotCaptureTypesError: false
-hasConflictingConstraints: false
-hasContradiction: false
-hasErrorInConstrainingTypes: false
-hasParameterConstraintError: false
-hasTypeInferenceIncorporationError: false
-hasUnknownParameters: true
-hasViolatedUpperBound: false
-isSuccessful: false
result:
T=???
P=???
@@ -0,0 +1,4 @@
VARIABLES T P
T <: My<T>
Inv<P> <: Inv<T>