| // Copyright (c) 2013, 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. |
| |
| library test.generic_function_typedef; |
| |
| import 'dart:mirrors'; |
| |
| import 'package:expect/expect.dart'; |
| |
| import 'generics_helper.dart'; |
| |
| class C<T> { |
| makeClosure1() { |
| T closure1(T t) => t; |
| return closure1; |
| } |
| |
| makeClosure2() { |
| enclosing() { |
| T closure2(T t) => t; |
| return closure2; |
| } |
| |
| ; |
| return enclosing(); |
| } |
| } |
| |
| main() { |
| ClosureMirror closure1 = |
| reflect(new C<String>().makeClosure1()) as ClosureMirror; |
| Expect.equals(reflectClass(String), closure1.function.returnType); |
| Expect.equals(reflectClass(String), closure1.function.parameters[0].type); |
| |
| ClosureMirror closure2 = |
| reflect(new C<String>().makeClosure2()) as ClosureMirror; |
| Expect.equals(reflectClass(String), closure2.function.returnType); |
| Expect.equals(reflectClass(String), closure2.function.parameters[0].type); |
| } |