|  | // Copyright (c) 2019, 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. | 
|  |  | 
|  | import 'package:expect/expect.dart'; | 
|  |  | 
|  | void expectType(Type type, Pattern text) { | 
|  | var typeString = "$type"; | 
|  | if (typeString.contains("minified:")) { | 
|  | return; // No checks for minimized types. | 
|  | } | 
|  | var match = text.matchAsPrefix(typeString); | 
|  | if (match != null && match.end == typeString.length) return; | 
|  | Expect.fail( | 
|  | "$typeString was not matched by $text${match == null ? "" : ", match: ${match[0]}"}"); | 
|  | } | 
|  |  | 
|  | class A<X, Y> { | 
|  | R f<R>(R Function<S, T>(A<S, T>) t) => t<X, Y>(this); | 
|  | } | 
|  |  | 
|  | main() { | 
|  | A<num, num> a = A<int, int>(); | 
|  | expectType(a.f.runtimeType, | 
|  | RegExp(r"<(\w+)>\(<(\w+), (\w+)>\(A<\2, \3>\) => \1\) => \1$")); | 
|  | } |