| Index: pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.direct.expect
 | 
| diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.direct.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.direct.expect
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..24bd116a42a213d7c70431105aceabdbab09becf
 | 
| --- /dev/null
 | 
| +++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.direct.expect
 | 
| @@ -0,0 +1,60 @@
 | 
| +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;
 | 
| +    dynamic v = f;
 | 
| +    v = <T extends core::Object>(core::int x) → dynamic => null;
 | 
| +    v = <T extends core::Object>(core::int x) → dynamic => "hello";
 | 
| +    v = <T extends core::Object>(core::String x) → dynamic => "hello";
 | 
| +    v = <T extends core::Object>(core::int x) → dynamic => 3;
 | 
| +    v = <T extends core::Object>(core::int x) → dynamic {
 | 
| +      return 3;
 | 
| +    };
 | 
| +  }
 | 
| +  {
 | 
| +    function f<S extends core::Object>(core::int x) → core::String
 | 
| +      return null;
 | 
| +    dynamic v = f;
 | 
| +    v = <T extends core::Object>(dynamic x) → dynamic => null;
 | 
| +    v = <T extends core::Object>(dynamic x) → dynamic => "hello";
 | 
| +    v = <T extends core::Object>(dynamic x) → dynamic => 3;
 | 
| +    v = <T extends core::Object>(dynamic x) → dynamic {
 | 
| +      return 3;
 | 
| +    };
 | 
| +    v = <T extends core::Object>(dynamic x) → dynamic {
 | 
| +      return x;
 | 
| +    };
 | 
| +  }
 | 
| +  {
 | 
| +    function f<S extends core::Object>(core::int x) → core::List<core::String>
 | 
| +      return null;
 | 
| +    dynamic v = f;
 | 
| +    v = <T extends core::Object>(core::int x) → dynamic => null;
 | 
| +    v = <T extends core::Object>(core::int x) → dynamic => <dynamic>["hello"];
 | 
| +    v = <T extends core::Object>(core::String x) → dynamic => <dynamic>["hello"];
 | 
| +    v = <T extends core::Object>(core::int x) → dynamic => <dynamic>[3];
 | 
| +    v = <T extends core::Object>(core::int x) → dynamic {
 | 
| +      return <dynamic>[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;
 | 
| +    dynamic x = int2int;
 | 
| +    x = <T extends core::Object>(dynamic x) → dynamic => x;
 | 
| +    x = <T extends core::Object>(dynamic x) → dynamic => x.+(1);
 | 
| +    dynamic y = int2String;
 | 
| +    y = <T extends core::Object>(dynamic x) → dynamic => x;
 | 
| +    y = <T extends core::Object>(dynamic x) → dynamic => x.substring(3);
 | 
| +    dynamic z = string2String;
 | 
| +    z = <T extends core::Object>(dynamic x) → dynamic => x.substring(3);
 | 
| +  }
 | 
| +}
 | 
| 
 |