blob: 5adf7ee2e2927a879562ae988bf47dc448e5cc1f [file] [log] [blame]
library test;
import self as self;
import "dart:core" as core;
static method main() void {
{
function f<S extends core::Object>(core::int x) core::String
return null;
<S extends core::Object>(core::int) core::String v = f;
v = <T extends core::Object>(core::int x) core::String => null;
v = <T extends core::Object>(core::int x) core::String => "hello";
v = <T extends core::Object>(core::String x) core::String => "hello";
v = <T extends core::Object>(core::int x) core::int => 3;
v = <T extends core::Object>(core::int x) core::String {
return 3;
};
}
{
function f<S extends core::Object>(core::int x) core::String
return null;
<S extends core::Object>(core::int) core::String v = f;
v = <T extends core::Object>(core::int x) core::String => null;
v = <T extends core::Object>(core::int x) core::String => "hello";
v = <T extends core::Object>(core::int x) core::int => 3;
v = <T extends core::Object>(core::int x) core::String {
return 3;
};
v = <T extends core::Object>(core::int x) core::String {
return x;
};
}
{
function f<S extends core::Object>(core::int x) core::List<core::String>
return null;
<S extends core::Object>(core::int) core::List<core::String> v = f;
v = <T extends core::Object>(core::int x) core::List<core::String> => null;
v = <T extends core::Object>(core::int x) core::List<core::String> => <core::String>["hello"];
v = <T extends core::Object>(core::String x) core::List<core::String> => <core::String>["hello"];
v = <T extends core::Object>(core::int x) core::List<core::String> => <core::String>[3];
v = <T extends core::Object>(core::int x) core::List<core::String> {
return <core::String>[3];
};
}
{
function int2int<S extends core::Object>(core::int x) core::int
return null;
function int2String<T extends core::Object>(core::int x) core::String
return null;
function string2String<T extends core::Object>(core::String x) core::String
return null;
<S extends core::Object>(core::int) core::int x = int2int;
x = <T extends core::Object>(core::int x) core::int => x;
x = <T extends core::Object>(core::int x) core::int => x.{core::num::+}(1);
<T extends core::Object>(core::int) core::String y = int2String;
y = <T extends core::Object>(core::int x) core::int => x;
y = <T extends core::Object>(core::int x) core::String => x.substring(3);
<T extends core::Object>(core::String) core::String z = string2String;
z = <T extends core::Object>(core::String x) core::String => x.{core::String::substring}(3);
}
}