// Copyright (c) 2016, 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.
// Dart test program for testing params.

// @dart = 2.9

// Convenience values.
var c = new C();
var x = 42;
var y = 42;
var z = 42;

// Trailing comma in parameter lists.

// Typedefs.
typedef fx(x, ); //                                     //# none: ok
typedef fy([y,]); //                                    //# none: continued
typedef fxy(x, [y, ]); //                               //# none: continued
typedef fz({z,}); //                                    //# none: continued
typedef fxz(x, {z, }); //                               //# none: continued

// As arguments type.
argfx(void f(x, )) {} //                                //# none: continued
argfy(void f([y, ])) {} //                              //# none: continued
argfxy(void f(x, [y, ])) {} //                          //# none: continued
argfz(void f({z, })) {} //                              //# none: continued
argfxz(void f(x, {z, })) {} //                          //# none: continued

// Top level functions
void topx(x,) {} //                                     //# none: continued
void topy([y, ]) {} //                                  //# none: continued
void topxy(x, [y, ]) {} //                              //# none: continued
void topz({z, }) {} //                                  //# none: continued
void topxz(x, {z, }) {} //                              //# none: continued

void set topsetx(x, ) {} //                             //# none: continued

// After specific parameter formats.
void afterDefaultValueY([int y = 42, ]) {} //           //# none: continued
void afterDefaultValueZ({int z : 42, }) {} //           //# none: continued
void afterFunsigX(void f(),) {} //                      //# none: continued
void afterFunsigY([void f(),]) {} //                    //# none: continued
void afterFunsigZ({void f(),}) {} //                    //# none: continued
void afterFunsigDefaultValueY([void f() = topy,]) {} // //# none: continued
void afterFunsigDefaultValueZ({void f() : topz,}) {} // //# none: continued

class C {
  C();

  // Constructors.
  C.x(x, ); //                                          //# none: continued
  C.y([y, ]); //                                        //# none: continued
  C.xy(x, [y, ]); //                                    //# none: continued
  C.z({z, }); //                                        //# none: continued
  C.xz(x, {z, }); //                                    //# none: continued

  // Static members
  static void staticx(x,) {} //                         //# none: continued
  static void staticy([y, ]) {} //                      //# none: continued
  static void staticxy(x, [y, ]) {} //                  //# none: continued
  static void staticz({z, }) {} //                      //# none: continued
  static void staticxz(x, {z, }) {} //                  //# none: continued

  static void set staticsetx(x, ) {} //                 //# none: continued

  // Instance members
  void instancex(x,) {} //                              //# none: continued
  void instancey([y, ]) {} //                           //# none: continued
  void instancexy(x, [y, ]) {} //                       //# none: continued
  void instancez({z, }) {} //                           //# none: continued
  void instancexz(x, {z, }) {} //                       //# none: continued

  void set instancesetx(x, ) {} //                      //# none: continued

  operator +(x, ) => this; //                           //# none: continued
  operator []=(x, y, ) {} //                            //# none: continued
}

main() {
  testCalls(); //                                       //# none: continued
  // Make sure the cases are checked.
  testBadCalls();
}

void testCalls() {
  // Check that all functions can be called normally
  topx(x); //                                           //# none: continued
  topy(y); //                                           //# none: continued
  topxy(x, y); //                                       //# none: continued
  topz(); //                                            //# none: continued
  topz(z: z); //                                        //# none: continued
  topxz(x); //                                          //# none: continued
  topxz(x, z: z); //                                    //# none: continued
  topsetx = x; //                                       //# none: continued
  afterDefaultValueY(); //                              //# none: continued
  afterDefaultValueY(y); //                             //# none: continued
  afterDefaultValueZ(); //                              //# none: continued
  afterDefaultValueZ(z: z); //                          //# none: continued
  new C.x(x); //                                        //# none: continued
  new C.xy(x); //                                       //# none: continued
  new C.xy(x, y); //                                    //# none: continued
  new C.y(y); //                                        //# none: continued
  new C.xz(x); //                                       //# none: continued
  new C.xz(x, z: z); //                                 //# none: continued
  new C.z(z: z); //                                     //# none: continued
  C.staticx(x); //                                      //# none: continued
  C.staticy(y); //                                      //# none: continued
  C.staticxy(x); //                                     //# none: continued
  C.staticxy(x, y); //                                  //# none: continued
  C.staticz(); //                                       //# none: continued
  C.staticz(z: z); //                                   //# none: continued
  C.staticxz(x); //                                     //# none: continued
  C.staticxz(x, z: z); //                               //# none: continued
  C.staticsetx = x; //                                  //# none: continued
  c.instancex(x); //                                    //# none: continued
  c.instancey(); //                                     //# none: continued
  c.instancey(y); //                                    //# none: continued
  c.instancexy(x); //                                   //# none: continued
  c.instancexy(x, y); //                                //# none: continued
  c.instancez(); //                                     //# none: continued
  c.instancez(z: z); //                                 //# none: continued
  c.instancexz(x); //                                   //# none: continued
  c.instancexz(x, z: z); //                             //# none: continued
  c.instancesetx = x; //                                //# none: continued
  c + x; //                                             //# none: continued
  c[x] = y; //                                          //# none: continued

  // Call with extra comma (not possible for setters and operators).
  topx(x, ); //                                         //# none: continued
  topy(y, ); //                                         //# none: continued
  topxy(x, y, ); //                                     //# none: continued
  topxy(x, ); //                                        //# none: continued
  topz(z: z, ); //                                      //# none: continued
  topxz(x, ); //                                        //# none: continued
  topxz(x, z: z, ); //                                  //# none: continued
  new C.x(x, ); //                                      //# none: continued
  new C.xy(x, y, ); //                                  //# none: continued
  new C.xy(x, ); //                                     //# none: continued
  new C.y(y, ); //                                      //# none: continued
  new C.xz(x, ); //                                     //# none: continued
  new C.xz(x, z: z, ); //                               //# none: continued
  new C.z(z: z, ); //                                   //# none: continued
  C.staticx(x, ); //                                    //# none: continued
  C.staticy(y, ); //                                    //# none: continued
  C.staticxy(x, y, ); //                                //# none: continued
  C.staticxy(x, ); //                                   //# none: continued
  C.staticz(z: z, ); //                                 //# none: continued
  C.staticxz(x, ); //                                   //# none: continued
  C.staticxz(x, z: z, ); //                             //# none: continued
  c.instancex(x, ); //                                  //# none: continued
  c.instancey(y, ); //                                  //# none: continued
  c.instancexy(x, y, ); //                              //# none: continued
  c.instancexy(x, ); //                                 //# none: continued
  c.instancez(z: z, ); //                               //# none: continued
  c.instancexz(x, ); //                                 //# none: continued
  c.instancexz(x, z: z, ); //                           //# none: continued

  // Typedefs work as expected.
  if (topx is! fx) throw "Bad type: $fx"; //            //# none: continued
  if (topy is! fy) throw "Bad type: $fy"; //            //# none: continued
  if (topxy is! fxy) throw "Bad type: $fxy"; //         //# none: continued
  if (topz is! fz) throw "Bad type: $fz"; //            //# none: continued
  if (topxz is! fxz) throw "Bad type: $fxz"; //         //# none: continued

  // Parameter types work (checked mode only test).
  argfx(topx); //                                       //# none: continued
  argfy(topy); //                                       //# none: continued
  argfxy(topxy); //                                     //# none: continued
  argfz(topz); //                                       //# none: continued
  argfxz(topxz); //                                     //# none: continued
}

// Invalid syntax. This was invalid syntax before the addition of trailing
// commas too, and should stay that way.
void topBadEmpty(,) {} //                          //# 1: syntax error
void topBadStart(, a) {} //                        //# 2: syntax error
void topBadEnd(a,,) {} //                          //# 3: syntax error
void topBadMiddle(a,, b) {} //                     //# 4: syntax error
void topBadPosEmpty([]) {} //                      //# 5: syntax error
void topBadPosEmpty(,[]) {} //                     //# 6: syntax error
void topBadPosEmpty([,]) {} //                     //# 7: syntax error
void topBadPosEmpty([],) {} //                     //# 8: syntax error
void topBadPosStart(,[a]) {} //                    //# 9: syntax error
void topBadPosStart([, a]) {} //                   //# 10: syntax error
void topBadPosEnd([a,,]) {} //                     //# 11: syntax error
void topBadPosStart([a],) {} //                    //# 12: syntax error
void topBadPosMiddle([a,, b]) {} //                //# 13: syntax error
void topBadNamEmpty({}) {} //                      //# 14: syntax error
void topBadNamEmpty(,{}) {} //                     //# 15: syntax error
void topBadNamEmpty({,}) {} //                     //# 16: syntax error
void topBadNamEmpty({},) {} //                     //# 17: syntax error
void topBadNamStart(,{a}) {} //                    //# 18: syntax error
void topBadNamStart({, a}) {} //                   //# 19: syntax error
void topBadNamEnd({a,,}) {} //                     //# 20: syntax error
void topBadNamStart({a},) {} //                    //# 21: syntax error
void topBadNamMiddle({a,, b}) {} //                //# 22: syntax error
void set topSetBadEmpty(,) {} //                   //# 23: syntax error
void set topSetBadStart(, a) {} //                 //# 24: syntax error
void set topSetBadEnd(a,,) {} //                   //# 25: syntax error
void set topSetBadMiddle(a,, b) {} //              //# 26: syntax error
class Bad {
  Bad() {}
  Bad.empty(,) {} //                               //# 27: syntax error
  Bad.start(, a) {} //                             //# 28: syntax error
  Bad.end(a,,) {} //                               //# 29: syntax error
  Bad.middle(a,, b) {} //                          //# 30: syntax error
  Bad.posEmpty([]) {} //                           //# 31: syntax error
  Bad.posEmpty(,[]) {} //                          //# 32: syntax error
  Bad.posEmpty([,]) {} //                          //# 33: syntax error
  Bad.posEmpty([],) {} //                          //# 34: syntax error
  Bad.posStart(,[a]) {} //                         //# 35: syntax error
  Bad.posStart([, a]) {} //                        //# 36: syntax error
  Bad.posEnd([a,,]) {} //                          //# 37: syntax error
  Bad.posStart([a],) {} //                         //# 38: syntax error
  Bad.PosMiddle([a,, b]) {} //                     //# 39: syntax error
  Bad.namEmpty({}) {} //                           //# 40: syntax error
  Bad.namEmpty(,{}) {} //                          //# 41: syntax error
  Bad.namEmpty({,}) {} //                          //# 42: syntax error
  Bad.namEmpty({},) {} //                          //# 43: syntax error
  Bad.namStart(,{a}) {} //                         //# 44: syntax error
  Bad.namStart({, a}) {} //                        //# 45: syntax error
  Bad.namEnd({a,,}) {} //                          //# 46: syntax error
  Bad.namStart({a},) {} //                         //# 47: syntax error
  Bad.namMiddle({a,, b}) {} //                     //# 48: syntax error
  static void staticBadEmpty(,) {} //              //# 49: syntax error
  static void staticBadStart(, a) {} //            //# 50: syntax error
  static void staticBadEnd(a,,) {} //              //# 51: syntax error
  static void staticBadMiddle(a,, b) {} //         //# 52: syntax error
  static void staticBadPosEmpty([]) {} //          //# 53: syntax error
  static void staticBadPosEmpty(,[]) {} //         //# 54: syntax error
  static void staticBadPosEmpty([,]) {} //         //# 55: syntax error
  static void staticBadPosEmpty([],) {} //         //# 56: syntax error
  static void staticBadPosStart(,[a]) {} //        //# 57: syntax error
  static void staticBadPosStart([, a]) {} //       //# 58: syntax error
  static void staticBadPosEnd([a,,]) {} //         //# 59: syntax error
  static void staticBadPosStart([a],) {} //        //# 60: syntax error
  static void staticBadPosMiddle([a,, b]) {} //    //# 61: syntax error
  static void staticBadNamEmpty({}) {} //          //# 62: syntax error
  static void staticBadNamEmpty(,{}) {} //         //# 63: syntax error
  static void staticBadNamEmpty({,}) {} //         //# 64: syntax error
  static void staticBadNamEmpty({},) {} //         //# 65: syntax error
  static void staticBadNamStart(,{a}) {} //        //# 66: syntax error
  static void staticBadNamStart({, a}) {} //       //# 67: syntax error
  static void staticBadNamEnd({a,,}) {} //         //# 68: syntax error
  static void staticBadNamStart({a},) {} //        //# 69: syntax error
  static void staticBadNamMiddle({a,, b}) {} //    //# 70: syntax error
  static void set staticSetBadEmpty(,) {} //       //# 71: syntax error
  static void set staticSetBadStart(, a) {} //     //# 72: syntax error
  static void set staticSetBadEnd(a,,) {} //       //# 73: syntax error
  static void set staticSetBadMiddle(a,, b) {} //  //# 74: syntax error
  void instanceBadEmpty(,) {} //                   //# 75: syntax error
  void instanceBadStart(, a) {} //                 //# 76: syntax error
  void instanceBadEnd(a,,) {} //                   //# 77: syntax error
  void instanceBadMiddle(a,, b) {} //              //# 78: syntax error
  void instanceBadPosEmpty([]) {} //               //# 79: syntax error
  void instanceBadPosEmpty(,[]) {} //              //# 80: syntax error
  void instanceBadPosEmpty([,]) {} //              //# 81: syntax error
  void instanceBadPosEmpty([],) {} //              //# 82: syntax error
  void instanceBadPosStart(,[a]) {} //             //# 83: syntax error
  void instanceBadPosStart([, a]) {} //            //# 84: syntax error
  void instanceBadPosEnd([a,,]) {} //              //# 85: syntax error
  void instanceBadPosStart([a],) {} //             //# 86: syntax error
  void instanceBadPosMiddle([a,, b]) {} //         //# 87: syntax error
  void instanceBadNamEmpty({}) {} //               //# 88: syntax error
  void instanceBadNamEmpty(,{}) {} //              //# 89: syntax error
  void instanceBadNamEmpty({,}) {} //              //# 90: syntax error
  void instanceBadNamEmpty({},) {} //              //# 91: syntax error
  void instanceBadNamStart(,{a}) {} //             //# 92: syntax error
  void instanceBadNamStart({, a}) {} //            //# 93: syntax error
  void instanceBadNamEnd({a,,}) {} //              //# 94: syntax error
  void instanceBadNamStart({a},) {} //             //# 95: syntax error
  void instanceBadNamMiddle({a,, b}) {} //         //# 96: syntax error
  void set instanceSetBadEmpty(,) {} //            //# 97: syntax error
  void set instanceSetBadStart(, a) {} //          //# 98: syntax error
  void set instanceSetBadEnd(a,,) {} //            //# 99: syntax error
  void set instanceSetBadMiddle(a,, b) {} //       //# 100: syntax error
  void operator *(,); //                           //# 101: syntax error
  void operator *(, a); //                         //# 102: syntax error
  void operator *(a,,); //                         //# 103: syntax error
  void operator []=(, a); //                       //# 104: syntax error
  void operator []=(a,,); //                       //# 105: syntax error
  void operator []=(a,, b); //                     //# 106: syntax error
  void operator []=(a,); //                        //# 107: compile-time error

  method() {
    // Local methods.
    void localBadEmpty(,) {} //                    //# 108: syntax error
    void localBadStart(, a) {} //                  //# 109: syntax error
    void localBadEnd(a,,) {} //                    //# 110: syntax error
    void localBadMiddle(a,, b) {} //               //# 111: syntax error
    void localBadPosEmpty([]) {} //                //# 112: syntax error
    void localBadPosEmpty(,[]) {} //               //# 113: syntax error
    void localBadPosEmpty([,]) {} //               //# 114: syntax error
    void localBadPosEmpty([],) {} //               //# 115: syntax error
    void localBadPosStart(,[a]) {} //              //# 116: syntax error
    void localBadPosStart([, a]) {} //             //# 117: syntax error
    void localBadPosEnd([a,,]) {} //               //# 118: syntax error
    void localBadPosStart([a],) {} //              //# 119: syntax error
    void localBadPosMiddle([a,, b]) {} //          //# 120: syntax error
    void localBadNamEmpty({}) {} //                //# 121: syntax error
    void localBadNamEmpty(,{}) {} //               //# 122: syntax error
    void localBadNamEmpty({,}) {} //               //# 123: syntax error
    void localBadNamEmpty({},) {} //               //# 124: syntax error
    void localBadNamStart(,{a}) {} //              //# 125: syntax error
    void localBadNamStart({, a}) {} //             //# 126: syntax error
    void localBadNamEnd({a,,}) {} //               //# 127: syntax error
    void localBadNamStart({a},) {} //              //# 128: syntax error
    void localBadNamMiddle({a,, b}) {} //          //# 129: syntax error

    // invalid calls.

    topx(,); //                                    //# 130: syntax error
    topy(,); //                                    //# 131: syntax error
    topz(,); //                                    //# 132: syntax error
    topx(, x); //                                  //# 133: syntax error
    topz(, z:z); //                                //# 134: syntax error
    topxy(x,, y); //                               //# 135: syntax error
    topxz(x,, z:z); //                             //# 136: syntax error
    topx(x,,); //                                  //# 137: syntax error
    topz(z:z,,); //                                //# 138: syntax error

    new C.x(,); //                                 //# 139: syntax error
    new C.y(,); //                                 //# 140: syntax error
    new C.z(,); //                                 //# 141: syntax error
    new C.x(, x); //                               //# 142: syntax error
    new C.z(, z:z); //                             //# 143: syntax error
    new C.xy(x,, y); //                            //# 144: syntax error
    new C.xz(x,, z:z); //                          //# 145: syntax error
    new C.x(x,,); //                               //# 146: syntax error
    new C.z(z:z,,); //                             //# 147: syntax error

    C.staticx(,); //                               //# 148: syntax error
    C.staticy(,); //                               //# 149: syntax error
    C.staticz(,); //                               //# 150: syntax error
    C.staticx(, x); //                             //# 151: syntax error
    C.staticz(, z:z); //                           //# 152: syntax error
    C.staticxy(x,, y); //                          //# 153: syntax error
    C.staticxz(x,, z:z); //                        //# 154: syntax error
    C.staticx(x,,); //                             //# 155: syntax error
    C.staticz(z:z,,); //                           //# 156: syntax error

    c.instancex(,); //                             //# 157: syntax error
    c.instancey(,); //                             //# 158: syntax error
    c.instancez(,); //                             //# 159: syntax error
    c.instancex(, x); //                           //# 160: syntax error
    c.instancez(, z:z); //                         //# 161: syntax error
    c.instancexy(x,, y); //                        //# 162: syntax error
    c.instancexz(x,, z:z); //                      //# 163: syntax error
    c.instancex(x,,); //                           //# 164: syntax error
    c.instancez(z:z,,); //                         //# 165: syntax error

    c[x,] = y; //                                  //# 166: syntax error
  }

  // As parameters:
  void f(void topBadEmpty(,)) {} //                //# 167: syntax error
  void f(void topBadStart(, a)) {} //              //# 168: syntax error
  void f(void topBadEnd(a,,)) {} //                //# 169: syntax error
  void f(void topBadMiddle(a,, b)) {} //           //# 170: syntax error
  void f(void topBadPosEmpty([])) {} //            //# 171: syntax error
  void f(void topBadPosEmpty(,[])) {} //           //# 172: syntax error
  void f(void topBadPosEmpty([,])) {} //           //# 173: syntax error
  void f(void topBadPosEmpty([],)) {} //           //# 174: syntax error
  void f(void topBadPosStart(,[a])) {} //          //# 175: syntax error
  void f(void topBadPosStart([, a])) {} //         //# 176: syntax error
  void f(void topBadPosEnd([a,,])) {} //           //# 177: syntax error
  void f(void topBadPosStart([a],)) {} //          //# 178: syntax error
  void f(void topBadPosMiddle([a,, b])) {} //      //# 179: syntax error
  void f(void topBadNamEmpty({})) {} //            //# 180: syntax error
  void f(void topBadNamEmpty(,{})) {} //           //# 181: syntax error
  void f(void topBadNamEmpty({,})) {} //           //# 182: syntax error
  void f(void topBadNamEmpty({},)) {} //           //# 183: syntax error
  void f(void topBadNamStart(,{a})) {} //          //# 184: syntax error
  void f(void topBadNamStart({, a})) {} //         //# 185: syntax error
  void f(void topBadNamEnd({a,,})) {} //           //# 186: syntax error
  void f(void topBadNamStart({a},)) {} //          //# 187: syntax error
  void f(void topBadNamMiddle({a,, b})) {} //      //# 188: syntax error
}

// As typedefs
typedef void BadEmpty(,); //                       //# 189: syntax error
typedef void BadStart(, a); //                     //# 190: syntax error
typedef void BadEnd(a,,); //                       //# 191: syntax error
typedef void BadMiddle(a,, b); //                  //# 192: syntax error
typedef void BadPosEmpty([]); //                   //# 193: syntax error
typedef void BadPosEmpty(,[]); //                  //# 194: syntax error
typedef void BadPosEmpty([,]); //                  //# 195: syntax error
typedef void BadPosEmpty([],); //                  //# 196: syntax error
typedef void BadPosStart(,[a]); //                 //# 197: syntax error
typedef void BadPosStart([, a]); //                //# 198: syntax error
typedef void BadPosEnd([a,,]); //                  //# 199: syntax error
typedef void BadPosStart([a],); //                 //# 200: syntax error
typedef void BadPosMiddle([a,, b]); //             //# 201: syntax error
typedef void BadNamEmpty({}); //                   //# 202: syntax error
typedef void BadNamEmpty(,{}); //                  //# 203: syntax error
typedef void BadNamEmpty({,}); //                  //# 204: syntax error
typedef void BadNamEmpty({},); //                  //# 205: syntax error
typedef void BadNamStart(,{a}); //                 //# 206: syntax error
typedef void BadNamStart({, a}); //                //# 207: syntax error
typedef void BadNamEnd({a,,}); //                  //# 208: syntax error
typedef void BadNamStart({a},); //                 //# 209: syntax error
typedef void BadNamMiddle({a,, b}); //             //# 210: syntax error

void testBadCalls() {
  topBadEmpty(); //                                //# 1: continued
  topBadStart(); //                                //# 2: continued
  topBadEnd(); //                                  //# 3: continued
  topBadMiddle(); //                               //# 4: continued
  topBadPosEmpty(); //                             //# 5: continued
  topBadPosEmpty(); //                             //# 6: continued
  topBadPosEmpty(); //                             //# 7: continued
  topBadPosEmpty(); //                             //# 8: continued
  topBadPosStart(); //                             //# 9: continued
  topBadPosStart(); //                             //# 10: continued
  topBadPosEnd(); //                               //# 11: continued
  topBadPosStart(); //                             //# 12: continued
  topBadPosMiddle(); //                            //# 13: continued
  topBadNamEmpty(); //                             //# 14: continued
  topBadNamEmpty(); //                             //# 15: continued
  topBadNamEmpty(); //                             //# 16: continued
  topBadNamEmpty(); //                             //# 17: continued
  topBadNamStart(); //                             //# 18: continued
  topBadNamStart(); //                             //# 19: continued
  topBadNamEnd(); //                               //# 20: continued
  topBadNamStart(); //                             //# 21: continued
  topBadNamMiddle(); //                            //# 22: continued
  topSetBadEmpty = 1; //                           //# 23: continued
  topSetBadStart = 1; //                           //# 24: continued
  topSetBadEnd = 1; //                             //# 25: continued
  topSetBadMiddle = 1; //                          //# 26: continued
  new Bad.empty(); //                              //# 27: continued
  new Bad.start(); //                              //# 28: continued
  new Bad.end(); //                                //# 29: continued
  new Bad.middle(); //                             //# 30: continued
  new Bad.posEmpty(); //                           //# 31: continued
  new Bad.posEmpty(); //                           //# 32: continued
  new Bad.posEmpty(); //                           //# 33: continued
  new Bad.posEmpty(); //                           //# 34: continued
  new Bad.posStart(); //                           //# 35: continued
  new Bad.posStart(); //                           //# 36: continued
  new Bad.posEnd(); //                             //# 37: continued
  new Bad.posStart(); //                           //# 38: continued
  new Bad.PosMiddle(); //                          //# 39: continued
  new Bad.namEmpty(); //                           //# 40: continued
  new Bad.namEmpty(); //                           //# 41: continued
  new Bad.namEmpty(); //                           //# 42: continued
  new Bad.namEmpty(); //                           //# 43: continued
  new Bad.namStart(); //                           //# 44: continued
  new Bad.namStart(); //                           //# 45: continued
  new Bad.namEnd(); //                             //# 46: continued
  new Bad.namStart(); //                           //# 47: continued
  new Bad.namMiddle(); //                          //# 48: continued
  Bad.staticBadEmpty(); //                         //# 49: continued
  Bad.staticBadStart(); //                         //# 50: continued
  Bad.staticBadEnd(); //                           //# 51: continued
  Bad.staticBadMiddle(); //                        //# 52: continued
  Bad.staticBadPosEmpty(); //                      //# 53: continued
  Bad.staticBadPosEmpty(); //                      //# 54: continued
  Bad.staticBadPosEmpty(); //                      //# 55: continued
  Bad.staticBadPosEmpty(); //                      //# 56: continued
  Bad.staticBadPosStart(); //                      //# 57: continued
  Bad.staticBadPosStart(); //                      //# 58: continued
  Bad.staticBadPosEnd(); //                        //# 59: continued
  Bad.staticBadPosStart(); //                      //# 60: continued
  Bad.staticBadPosMiddle(); //                     //# 61: continued
  Bad.staticBadNamEmpty(); //                      //# 62: continued
  Bad.staticBadNamEmpty(); //                      //# 63: continued
  Bad.staticBadNamEmpty(); //                      //# 64: continued
  Bad.staticBadNamEmpty(); //                      //# 65: continued
  Bad.staticBadNamStart(); //                      //# 66: continued
  Bad.staticBadNamStart(); //                      //# 67: continued
  Bad.staticBadNamEnd(); //                        //# 68: continued
  Bad.staticBadNamStart(); //                      //# 69: continued
  Bad.staticBadNamMiddle(); //                     //# 70: continued
  Bad.staticSetBadEmpty = 1; //                    //# 71: continued
  Bad.staticSetBadStart = 1; //                    //# 72: continued
  Bad.staticSetBadEnd = 1; //                      //# 73: continued
  Bad.staticSetBadMiddle = 1; //                   //# 74: continued

  var bad = new Bad();
  bad.instanceBadEmpty(); //                       //# 75: continued
  bad.instanceBadStart(); //                       //# 76: continued
  bad.instanceBadEnd(); //                         //# 77: continued
  bad.instanceBadMiddle(); //                      //# 78: continued
  bad.instanceBadPosEmpty(); //                    //# 79: continued
  bad.instanceBadPosEmpty(); //                    //# 80: continued
  bad.instanceBadPosEmpty(); //                    //# 81: continued
  bad.instanceBadPosEmpty(); //                    //# 82: continued
  bad.instanceBadPosStart(); //                    //# 83: continued
  bad.instanceBadPosStart(); //                    //# 84: continued
  bad.instanceBadPosEnd(); //                      //# 85: continued
  bad.instanceBadPosStart(); //                    //# 86: continued
  bad.instanceBadPosMiddle(); //                   //# 87: continued
  bad.instanceBadNamEmpty(); //                    //# 88: continued
  bad.instanceBadNamEmpty(); //                    //# 89: continued
  bad.instanceBadNamEmpty(); //                    //# 90: continued
  bad.instanceBadNamEmpty(); //                    //# 91: continued
  bad.instanceBadNamStart(); //                    //# 92: continued
  bad.instanceBadNamStart(); //                    //# 93: continued
  bad.instanceBadNamEnd(); //                      //# 94: continued
  bad.instanceBadNamStart(); //                    //# 95: continued
  bad.instanceBadNamMiddle(); //                   //# 96: continued
  bad.instanceSetBadEmpty = 1; //                  //# 97: continued
  bad.instanceSetBadStart = 1; //                  //# 98: continued
  bad.instanceSetBadEnd = 1; //                    //# 99: continued
  bad.instanceSetBadMiddle = 1; //                 //# 100: continued
  bad * bad; //                                    //# 101: continued
  bad * bad; //                                    //# 102: continued
  bad * bad; //                                    //# 103: continued
  bad[1] = 1; //                                   //# 104: continued
  bad[1] = 1; //                                   //# 105: continued
  bad[1] = 1; //                                   //# 106: continued
  bad[1] = 1; //                                   //# 107: continued

  // This covers tests 108-166
  bad.method();

  bad.f(() {}); //                                 //# 167: continued
  bad.f(() {}); //                                 //# 168: continued
  bad.f(() {}); //                                 //# 169: continued
  bad.f(() {}); //                                 //# 170: continued
  bad.f(() {}); //                                 //# 171: continued
  bad.f(() {}); //                                 //# 172: continued
  bad.f(() {}); //                                 //# 173: continued
  bad.f(() {}); //                                 //# 174: continued
  bad.f(() {}); //                                 //# 175: continued
  bad.f(() {}); //                                 //# 176: continued
  bad.f(() {}); //                                 //# 177: continued
  bad.f(() {}); //                                 //# 178: continued
  bad.f(() {}); //                                 //# 179: continued
  bad.f(() {}); //                                 //# 180: continued
  bad.f(() {}); //                                 //# 181: continued
  bad.f(() {}); //                                 //# 182: continued
  bad.f(() {}); //                                 //# 183: continued
  bad.f(() {}); //                                 //# 184: continued
  bad.f(() {}); //                                 //# 185: continued
  bad.f(() {}); //                                 //# 186: continued
  bad.f(() {}); //                                 //# 187: continued
  bad.f(() {}); //                                 //# 188: continued

  BadEmpty x; //                                   //# 189: continued
  BadStart x; //                                   //# 190: continued
  BadEnd x; //                                     //# 191: continued
  BadMiddle x; //                                  //# 192: continued
  BadPosEmpty x; //                                //# 193: continued
  BadPosEmpty x; //                                //# 194: continued
  BadPosEmpty x; //                                //# 195: continued
  BadPosEmpty x; //                                //# 196: continued
  BadPosStart x; //                                //# 197: continued
  BadPosStart x; //                                //# 198: continued
  BadPosEnd x; //                                  //# 199: continued
  BadPosStart x; //                                //# 200: continued
  BadPosMiddle x; //                               //# 201: continued
  BadNamEmpty x; //                                //# 202: continued
  BadNamEmpty x; //                                //# 203: continued
  BadNamEmpty x; //                                //# 204: continued
  BadNamEmpty x; //                                //# 205: continued
  BadNamStart x; //                                //# 206: continued
  BadNamStart x; //                                //# 207: continued
  BadNamEnd x; //                                  //# 208: continued
  BadNamStart x; //                                //# 209: continued
  BadNamMiddle x; //                               //# 210: continued
}
