blob: 85e6f16f495a732826b2134ce67505fb8595ffef [file] [log] [blame]
// Copyright (c) 2011, 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.
//
// Use qualified symbols with generics at various places.
// @dart = 2.9
library Prefix15Test.dart;
import "package:expect/expect.dart";
import "../library12.dart" as lib12;
typedef T myFunc<T>(T param);
class myInterface<T extends lib12.Library12>
implements lib12.Library12Interface {
myInterface(T this.myfld);
T addObjects(covariant T value1, covariant T value2) {
myfld.fld = (value1.fld + value2.fld + myfld.fld);
return myfld;
}
T myfld;
}
class myClass2<T> {
myClass2(T this.fld2);
T func(T val) => val;
T fld2;
}
main() {
var o;
o = new myClass2<lib12.Library12>(new lib12.Library12(100));
myFunc<lib12.Library12> func = o.func;
Expect.equals(2, func(new lib12.Library12(10)).func());
Expect.equals(10, func(new lib12.Library12(10)).fld);
o = new myClass2<lib12.Library12>(new lib12.Library12(200));
Expect.equals(2, o.fld2.func());
Expect.equals(200, o.fld2.fld);
o = new myInterface<lib12.Library12>(new lib12.Library12(100));
Expect.equals(2, o.myfld.func());
Expect.equals(100, o.myfld.fld);
o = o.addObjects(new lib12.Library12(200), new lib12.Library12(300));
Expect.equals(2, o.func());
Expect.equals(600, o.fld);
}