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