blob: cdfd4c21e86ffed09fe2b9a57a54bad23e7bb2d5 [file] [log] [blame]
// Copyright (c) 2016, 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.md file.
class C<T, S> {
foo(S s) => (T x) {
T y = x;
Object z = y;
C<T, S> self = this;
return z as T;
};
bar() {
C<T, S> self = this;
}
baz() {
return () => () => new C<T, S>();
}
factory C() {
local() {
C<T, S> self = new C<T, S>.internal();
return self;
}
return local();
}
C.internal();
}
main(arguments) {
print(new C<String, String>().foo(null)(arguments.first));
dynamic c = new C<int, int>().baz()()();
if (c is! C<int, int>) throw "$c fails type test 'is C<int, int>'";
if (c is C<String, String>) {
throw "$c passes type test 'is C<String, String>'";
}
print(c);
}