Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: tests/language/generic_creation_test.dart

Issue 12210138: Add substitution for classes that use type variables. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments. Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 class A<X, Y, Z> { 5 class A<X, Y, Z> {
6 shift() => new A<Z, X, Y>(); 6 shift() => new A<Z, X, Y>();
7 swap() => new A<Z, Y, X>(); 7 swap() => new A<Z, Y, X>();
8 first() => new A<X, X, X>(); 8 first() => new A<X, X, X>();
9 last() => new A<Z, Z, Z>(); 9 last() => new A<Z, Z, Z>();
10 wrap() => new A<A<X, X, X>, A<Y, Y, Y>, A<Z, Z, Z>>(); 10 wrap() => new A<A<X, X, X>, A<Y, Y, Y>, A<Z, Z, Z>>();
11 } 11 }
12 12
13 class B extends A<U, V, W> {}
14
15 class C<T> extends A<U, T, W> {}
16
17 class D<X, Y, Z> extends A<Y, Z, X> {}
18
13 class U {} 19 class U {}
14 class V {} 20 class V {}
15 class W {} 21 class W {}
16 22
17 sameType(a, b) => Expect.equals(a.runtimeType, b.runtimeType); 23 sameType(a, b) => Expect.equals(a.runtimeType, b.runtimeType);
18 24
19 main() { 25 main() {
20 A a = new A<U, V, W>(); 26 A a = new A<U, V, W>();
21 sameType(new A<W, U, V>(), a.shift()); 27 sameType(new A<W, U, V>(), a.shift());
22 sameType(new A<W, V, U>(), a.swap()); 28 sameType(new A<W, V, U>(), a.swap());
23 sameType(new A<U, U, U>(), a.first()); 29 sameType(new A<U, U, U>(), a.first());
24 sameType(new A<W, W, W>(), a.last()); 30 sameType(new A<W, W, W>(), a.last());
25 sameType(new A<A<U, U, U>, A<V, V, V>, A<W, W, W>>(), a.wrap()); 31 sameType(new A<A<U, U, U>, A<V, V, V>, A<W, W, W>>(), a.wrap());
32 B b = new B();
33 sameType(new A<A<U, U, U>, A<V, V, V>, A<W, W, W>>(), b.wrap());
34 C c = new C<V>();
35 sameType(new A<A<U, U, U>, A<V, V, V>, A<W, W, W>>(), c.wrap());
36 D d = new D<U, V, W>();
37 sameType(new A<A<V, V, V>, A<W, W, W>, A<U, U, U>>(), d.wrap());
26 } 38 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698