|  | // Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | class I<X, Y> {} | 
|  |  | 
|  | mixin M0<T> implements I<T, List<T>> {} | 
|  |  | 
|  | mixin M1<T> implements I<List<T>, T> {} | 
|  |  | 
|  | ////////////////////////////////////////////////////// | 
|  | // Inference does not produce infinite types | 
|  | /////////////////////////////////////////////////////// | 
|  |  | 
|  | // No solution, even with unification, since solution | 
|  | // requires that I<List<U0>, U0> == I<U1, List<U1>> | 
|  | // for some U0, U1, and hence that: | 
|  | // U0 = List<U1> | 
|  | // U1 = List<U0> | 
|  | // which has no finite solution | 
|  | class A with M0, M1 {} /*@compile-error=unspecified*/ | 
|  |  | 
|  | void main() {} |