| Index: tests/language/function_type/function_type3_test.dart
 | 
| diff --git a/tests/language/function_type/function_type3_test.dart b/tests/language/function_type/function_type3_test.dart
 | 
| index 2aec1cfe6fb74afdb5490aa24d72b1f75edc1f5b..2c4cb522f7201209eaff2c2823142f4cff4f7469 100644
 | 
| --- a/tests/language/function_type/function_type3_test.dart
 | 
| +++ b/tests/language/function_type/function_type3_test.dart
 | 
| @@ -19,69 +19,47 @@ import 'package:expect/expect.dart';
 | 
|  @AssumeDynamic()
 | 
|  confuse(f) => f;
 | 
|  
 | 
| -final bool inCheckedMode = (() {
 | 
| -  bool result = false;
 | 
| -  assert(result = true);
 | 
| -  return result;
 | 
| -})();
 | 
| -
 | 
| -typedef F0<T>
 | 
| -    = int Function(int y, [int x]);
 | 
| -typedef F1<T>
 | 
| -    = Function Function(int y, [List<T> x]);
 | 
| -typedef F2<T>
 | 
| -    = core.List<core.int> Function(int x0, [core.List<core.int> x]);
 | 
| -typedef F3<T>
 | 
| -    = Function([List<Function> x]);
 | 
| -typedef F4<T>
 | 
| -    = Function Function<A>(core.List<core.int> x);
 | 
| -typedef F5<T>
 | 
| -    = int Function(int x1, {int x}) Function<B extends core.int>(int x);
 | 
| -typedef F6<T>
 | 
| -    = int Function([core.List<core.int> x]) Function<B extends core.int>(int x);
 | 
| -typedef F7<T>
 | 
| -    = Function Function(int y, [int x]) Function<B extends core.int>(int x);
 | 
| -typedef F8<T>
 | 
| -    = Function Function(int x2,
 | 
| -        [List<Function> x3]) Function<B extends core.int>(int x);
 | 
| -typedef F9<T>
 | 
| -    = Function Function(int x1, {List<T> x}) Function<B extends core.int>(
 | 
| -        int x);
 | 
| -typedef F10<T>
 | 
| -    = List<Function> Function(List<Function> x) Function<B extends core.int>(
 | 
| -        int x);
 | 
| -typedef F11<T>
 | 
| -    = List<Function> Function(int y, [List<T> x]) Function<B extends core.int>(
 | 
| -        int x);
 | 
| -typedef F12<T>
 | 
| -    = core.List<core.int> Function([Function x1]) Function<B extends core.int>(
 | 
| -        int x);
 | 
| -typedef F13<T>
 | 
| -    = core.List<core.int> Function(
 | 
| -        {core.List<core.int> x}) Function<B extends core.int>(int x);
 | 
| -typedef F14<T>
 | 
| -    = List<T> Function(int y, {int x}) Function<B extends core.int>(int x);
 | 
| -typedef F15<T>
 | 
| -    = List<T> Function(int x1,
 | 
| -        [core.List<core.int> x]) Function<B extends core.int>(int x);
 | 
| -typedef F16<T>
 | 
| -    = Function(int x1) Function<B extends core.int>(int x);
 | 
| -typedef F17<T>
 | 
| -    = Function(int x, [List<Function> x1]) Function<B extends core.int>(int x);
 | 
| -typedef F18<T>
 | 
| -    = Function(int y, {List<T> x}) Function<B extends core.int>(int x);
 | 
| -typedef F19<T>
 | 
| -    = void Function([List<Function> x]) Function<B extends core.int>(int x);
 | 
| -typedef F20<T>
 | 
| -    = void Function(List<T> x1) Function<B extends core.int>(int x);
 | 
| -typedef F21<T>
 | 
| -    = List<Function> Function<A>(Function x) Function<B extends core.int>(
 | 
| -        int x);
 | 
| -typedef F22<T>
 | 
| -    = Function<A>(List<Function> x) Function<B extends core.int>(int x);
 | 
| -typedef F23<T>
 | 
| -    = void Function<A>(core.List<core.int> x) Function<B extends core.int>(
 | 
| -        int x);
 | 
| +typedef F0<T> = int Function(int y, [int x]);
 | 
| +typedef F1<T> = Function Function(int y, [List<T> x]);
 | 
| +typedef F2<T> = core.List<core.int> Function(int x0, [core.List<core.int> x]);
 | 
| +typedef F3<T> = Function([List<Function> x]);
 | 
| +typedef F4<T> = Function Function<A>(core.List<core.int> x);
 | 
| +typedef F5<T> = int Function(int x1, {int x}) Function<B extends core.int>(
 | 
| +    int x);
 | 
| +typedef F6<T> = int Function([core.List<core.int> x])
 | 
| +    Function<B extends core.int>(int x);
 | 
| +typedef F7<T> = Function Function(int y, [int x]) Function<B extends core.int>(
 | 
| +    int x);
 | 
| +typedef F8<T> = Function Function(int x2, [List<Function> x3])
 | 
| +    Function<B extends core.int>(int x);
 | 
| +typedef F9<T> = Function Function(int x1, {List<T> x})
 | 
| +    Function<B extends core.int>(int x);
 | 
| +typedef F10<T> = List<Function> Function(List<Function> x)
 | 
| +    Function<B extends core.int>(int x);
 | 
| +typedef F11<T> = List<Function> Function(int y, [List<T> x])
 | 
| +    Function<B extends core.int>(int x);
 | 
| +typedef F12<T> = core.List<core.int> Function([Function x1])
 | 
| +    Function<B extends core.int>(int x);
 | 
| +typedef F13<T> = core.List<core.int> Function({core.List<core.int> x})
 | 
| +    Function<B extends core.int>(int x);
 | 
| +typedef F14<T> = List<T> Function(int y, {int x}) Function<B extends core.int>(
 | 
| +    int x);
 | 
| +typedef F15<T> = List<T> Function(int x1, [core.List<core.int> x])
 | 
| +    Function<B extends core.int>(int x);
 | 
| +typedef F16<T> = Function(int x1) Function<B extends core.int>(int x);
 | 
| +typedef F17<T> = Function(int x, [List<Function> x1])
 | 
| +    Function<B extends core.int>(int x);
 | 
| +typedef F18<T> = Function(int y, {List<T> x}) Function<B extends core.int>(
 | 
| +    int x);
 | 
| +typedef F19<T> = void Function([List<Function> x]) Function<B extends core.int>(
 | 
| +    int x);
 | 
| +typedef F20<T> = void Function(List<T> x1) Function<B extends core.int>(int x);
 | 
| +typedef F21<T> = List<Function> Function<A>(Function x)
 | 
| +    Function<B extends core.int>(int x);
 | 
| +typedef F22<T> = Function<A>(List<Function> x) Function<B extends core.int>(
 | 
| +    int x);
 | 
| +typedef F23<T> = void Function<A>(core.List<core.int> x)
 | 
| +    Function<B extends core.int>(int x);
 | 
|  
 | 
|  int f0(int y, [int x]) => null;
 | 
|  Function f1(int y, [List<int> x]) => null;
 | 
| @@ -138,11 +116,11 @@ class U3<T> {
 | 
|        int x) x11;
 | 
|    core.List<core.int> Function([Function x1]) Function<B extends core.int>(
 | 
|        int x) x12;
 | 
| -  core.List<core.int> Function(
 | 
| -      {core.List<core.int> x}) Function<B extends core.int>(int x) x13;
 | 
| +  core.List<core.int> Function({core.List<core.int> x})
 | 
| +      Function<B extends core.int>(int x) x13;
 | 
|    List<T> Function(int y, {int x}) Function<B extends core.int>(int x) x14;
 | 
| -  List<T> Function(int x1,
 | 
| -      [core.List<core.int> x]) Function<B extends core.int>(int x) x15;
 | 
| +  List<T> Function(int x1, [core.List<core.int> x])
 | 
| +      Function<B extends core.int>(int x) x15;
 | 
|    Function(int x1) Function<B extends core.int>(int x) x16;
 | 
|    Function(int x, [List<Function> x1]) Function<B extends core.int>(int x) x17;
 | 
|    Function(int y, {List<T> x}) Function<B extends core.int>(int x) x18;
 | 
| @@ -273,7 +251,7 @@ class U3<T> {
 | 
|        Expect.equals(tIsDynamic, m1 is F1<bool>);
 | 
|        Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
 | 
|      } else {
 | 
| -      if (inCheckedMode) {
 | 
| +      if (typeAssertionsEnabled) {
 | 
|          Expect.throws(() {
 | 
|            x1 = (f1 as dynamic);
 | 
|          });
 | 
| @@ -383,8 +361,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m5 is F5);
 | 
| -    Expect.isTrue(m5 is int Function(int x1,
 | 
| -        {int x}) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m5 is int Function(int x1, {int x})
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m5) is F5);
 | 
|      // In checked mode, verifies the type.
 | 
|      x5 = m5;
 | 
| @@ -409,8 +387,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m6 is F6);
 | 
| -    Expect.isTrue(m6 is int Function(
 | 
| -        [core.List<core.int> x]) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m6 is int Function([core.List<core.int> x])
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m6) is F6);
 | 
|      // In checked mode, verifies the type.
 | 
|      x6 = m6;
 | 
| @@ -434,8 +412,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m7 is F7);
 | 
| -    Expect.isTrue(m7 is Function Function(int y,
 | 
| -        [int x]) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m7 is Function Function(int y, [int x])
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m7) is F7);
 | 
|      // In checked mode, verifies the type.
 | 
|      x7 = m7;
 | 
| @@ -460,8 +438,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m8 is F8);
 | 
| -    Expect.isTrue(m8 is Function Function(int x2,
 | 
| -        [List<Function> x3]) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m8 is Function Function(int x2, [List<Function> x3])
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m8) is F8);
 | 
|      // In checked mode, verifies the type.
 | 
|      x8 = m8;
 | 
| @@ -486,8 +464,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m9 is F9);
 | 
| -    Expect.isTrue(m9 is Function Function(int x1,
 | 
| -        {List<T> x}) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m9 is Function Function(int x1, {List<T> x})
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m9) is F9);
 | 
|      // In checked mode, verifies the type.
 | 
|      x9 = m9;
 | 
| @@ -502,7 +480,7 @@ class U3<T> {
 | 
|        Expect.equals(tIsDynamic, m9 is F9<bool>);
 | 
|        Expect.equals(tIsDynamic, confuse(m9) is F9<bool>);
 | 
|      } else {
 | 
| -      if (inCheckedMode) {
 | 
| +      if (typeAssertionsEnabled) {
 | 
|          Expect.throws(() {
 | 
|            x9 = (f9 as dynamic);
 | 
|          });
 | 
| @@ -542,8 +520,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m10 is F10);
 | 
| -    Expect.isTrue(m10 is List<Function> Function(
 | 
| -        List<Function> x) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m10 is List<Function> Function(List<Function> x)
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m10) is F10);
 | 
|      // In checked mode, verifies the type.
 | 
|      x10 = m10;
 | 
| @@ -568,8 +546,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m11 is F11);
 | 
| -    Expect.isTrue(m11 is List<Function> Function(int y,
 | 
| -        [List<T> x]) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m11 is List<Function> Function(int y, [List<T> x])
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m11) is F11);
 | 
|      // In checked mode, verifies the type.
 | 
|      x11 = m11;
 | 
| @@ -584,15 +562,15 @@ class U3<T> {
 | 
|        Expect.equals(tIsDynamic, m11 is F11<bool>);
 | 
|        Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
 | 
|      } else {
 | 
| -      if (inCheckedMode) {
 | 
| +      if (typeAssertionsEnabled) {
 | 
|          Expect.throws(() {
 | 
|            x11 = (f11 as dynamic);
 | 
|          });
 | 
|          Expect.throws(() {
 | 
|            x11 = confuse(f11);
 | 
|          });
 | 
| -        List<Function> Function(int y,
 | 
| -            [List<T> x]) Function<B extends core.int>(int x) l11;
 | 
| +        List<Function> Function(int y, [List<T> x])
 | 
| +            Function<B extends core.int>(int x) l11;
 | 
|          Expect.throws(() {
 | 
|            l11 = (f11 as dynamic);
 | 
|          });
 | 
| @@ -624,8 +602,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m12 is F12);
 | 
| -    Expect.isTrue(m12 is core.List<core.int> Function(
 | 
| -        [Function x1]) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m12 is core.List<core.int> Function([Function x1])
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m12) is F12);
 | 
|      // In checked mode, verifies the type.
 | 
|      x12 = m12;
 | 
| @@ -639,8 +617,8 @@ class U3<T> {
 | 
|      Expect.isTrue(f13 is F13);
 | 
|      Expect.isTrue(confuse(f13) is F13);
 | 
|      // In checked mode, verifies the type.
 | 
| -    core.List<core.int> Function(
 | 
| -        {core.List<core.int> x}) Function<B extends core.int>(int x) l13;
 | 
| +    core.List<core.int> Function({core.List<core.int> x})
 | 
| +        Function<B extends core.int>(int x) l13;
 | 
|      // The static function f13 sets `T` to `int`.
 | 
|      if (!tIsBool) {
 | 
|        x13 = f13 as dynamic;
 | 
| @@ -650,8 +628,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m13 is F13);
 | 
| -    Expect.isTrue(m13 is core.List<core.int> Function(
 | 
| -        {core.List<core.int> x}) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m13 is core.List<core.int> Function({core.List<core.int> x})
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m13) is F13);
 | 
|      // In checked mode, verifies the type.
 | 
|      x13 = m13;
 | 
| @@ -675,8 +653,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m14 is F14);
 | 
| -    Expect.isTrue(m14 is List<T> Function(int y,
 | 
| -        {int x}) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m14 is List<T> Function(int y, {int x})
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m14) is F14);
 | 
|      // In checked mode, verifies the type.
 | 
|      x14 = m14;
 | 
| @@ -691,7 +669,7 @@ class U3<T> {
 | 
|        Expect.equals(tIsDynamic, m14 is F14<bool>);
 | 
|        Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
 | 
|      } else {
 | 
| -      if (inCheckedMode) {
 | 
| +      if (typeAssertionsEnabled) {
 | 
|          Expect.throws(() {
 | 
|            x14 = (f14 as dynamic);
 | 
|          });
 | 
| @@ -720,8 +698,8 @@ class U3<T> {
 | 
|      Expect.isTrue(f15 is F15);
 | 
|      Expect.isTrue(confuse(f15) is F15);
 | 
|      // In checked mode, verifies the type.
 | 
| -    List<T> Function(int x1,
 | 
| -        [core.List<core.int> x]) Function<B extends core.int>(int x) l15;
 | 
| +    List<T> Function(int x1, [core.List<core.int> x])
 | 
| +        Function<B extends core.int>(int x) l15;
 | 
|      // The static function f15 sets `T` to `int`.
 | 
|      if (!tIsBool) {
 | 
|        x15 = f15 as dynamic;
 | 
| @@ -731,8 +709,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m15 is F15);
 | 
| -    Expect.isTrue(m15 is List<T> Function(int x1,
 | 
| -        [core.List<core.int> x]) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m15 is List<T> Function(int x1, [core.List<core.int> x])
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m15) is F15);
 | 
|      // In checked mode, verifies the type.
 | 
|      x15 = m15;
 | 
| @@ -747,15 +725,15 @@ class U3<T> {
 | 
|        Expect.equals(tIsDynamic, m15 is F15<bool>);
 | 
|        Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
 | 
|      } else {
 | 
| -      if (inCheckedMode) {
 | 
| +      if (typeAssertionsEnabled) {
 | 
|          Expect.throws(() {
 | 
|            x15 = (f15 as dynamic);
 | 
|          });
 | 
|          Expect.throws(() {
 | 
|            x15 = confuse(f15);
 | 
|          });
 | 
| -        List<T> Function(int x1,
 | 
| -            [core.List<core.int> x]) Function<B extends core.int>(int x) l15;
 | 
| +        List<T> Function(int x1, [core.List<core.int> x])
 | 
| +            Function<B extends core.int>(int x) l15;
 | 
|          Expect.throws(() {
 | 
|            l15 = (f15 as dynamic);
 | 
|          });
 | 
| @@ -763,9 +741,8 @@ class U3<T> {
 | 
|            l15 = confuse(f15);
 | 
|          });
 | 
|        }
 | 
| -      List<T> Function(int x1,
 | 
| -              [core.List<core.int> x]) Function<B extends core.int>(int x) l15 =
 | 
| -          m15;
 | 
| +      List<T> Function(int x1, [core.List<core.int> x])
 | 
| +          Function<B extends core.int>(int x) l15 = m15;
 | 
|        // In checked mode, verifies the type.
 | 
|        x15 = m15;
 | 
|        x15 = confuse(m15);
 | 
| @@ -812,8 +789,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m17 is F17);
 | 
| -    Expect.isTrue(m17 is Function(int x,
 | 
| -        [List<Function> x1]) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m17 is Function(int x, [List<Function> x1])
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m17) is F17);
 | 
|      // In checked mode, verifies the type.
 | 
|      x17 = m17;
 | 
| @@ -837,8 +814,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m18 is F18);
 | 
| -    Expect.isTrue(m18 is Function(int y,
 | 
| -        {List<T> x}) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m18 is Function(int y, {List<T> x})
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m18) is F18);
 | 
|      // In checked mode, verifies the type.
 | 
|      x18 = m18;
 | 
| @@ -853,7 +830,7 @@ class U3<T> {
 | 
|        Expect.equals(tIsDynamic, m18 is F18<bool>);
 | 
|        Expect.equals(tIsDynamic, confuse(m18) is F18<bool>);
 | 
|      } else {
 | 
| -      if (inCheckedMode) {
 | 
| +      if (typeAssertionsEnabled) {
 | 
|          Expect.throws(() {
 | 
|            x18 = (f18 as dynamic);
 | 
|          });
 | 
| @@ -891,8 +868,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m19 is F19);
 | 
| -    Expect.isTrue(m19 is void Function(
 | 
| -        [List<Function> x]) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m19 is void Function([List<Function> x])
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m19) is F19);
 | 
|      // In checked mode, verifies the type.
 | 
|      x19 = m19;
 | 
| @@ -932,7 +909,7 @@ class U3<T> {
 | 
|        Expect.equals(tIsDynamic, m20 is F20<bool>);
 | 
|        Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
 | 
|      } else {
 | 
| -      if (inCheckedMode) {
 | 
| +      if (typeAssertionsEnabled) {
 | 
|          Expect.throws(() {
 | 
|            x20 = (f20 as dynamic);
 | 
|          });
 | 
| @@ -970,8 +947,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m21 is F21);
 | 
| -    Expect.isTrue(m21 is List<Function> Function<A>(
 | 
| -        Function x) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m21 is List<Function> Function<A>(Function x)
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m21) is F21);
 | 
|      // In checked mode, verifies the type.
 | 
|      x21 = m21;
 | 
| @@ -995,8 +972,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m22 is F22);
 | 
| -    Expect.isTrue(m22 is Function<A>(
 | 
| -        List<Function> x) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m22 is Function<A>(List<Function> x)
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m22) is F22);
 | 
|      // In checked mode, verifies the type.
 | 
|      x22 = m22;
 | 
| @@ -1021,8 +998,8 @@ class U3<T> {
 | 
|      }
 | 
|  
 | 
|      Expect.isTrue(m23 is F23);
 | 
| -    Expect.isTrue(m23 is void Function<A>(
 | 
| -        core.List<core.int> x) Function<B extends core.int>(int x));
 | 
| +    Expect.isTrue(m23 is void Function<A>(core.List<core.int> x)
 | 
| +        Function<B extends core.int>(int x));
 | 
|      Expect.isTrue(confuse(m23) is F23);
 | 
|      // In checked mode, verifies the type.
 | 
|      x23 = m23;
 | 
| 
 |