// TODO(multitest): This was automatically migrated from a multitest and may
// contain strange or dead code.

// @dart = 2.9

// Copyright (c) 2014, 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 the "is" and "as" operator with malformed type.

import "package:expect/expect.dart";

testEval(x) {
  return x;
}

test99(e) {
  // Test that a runtime error is thrown when the 'is' operator checks for a
  // malformed type.

}

test98(e) {
  // Test that a runtime error is thrown when the 'as' operator checks for a
  // malformed type.

}

test97(e) {
    // Check that the remaining expression after the type test
    // with malformed type is parsed, but not executed at runtime.
    // Regression test for issue 16985.

}

test96(e) {
    // Check that the remaining expression after the type test
    // with malformed type is parsed, but not executed at runtime.
    // Regression test for issue 16985.

}

test95(e) {
  // Check that the type-tested expression is evaluated before the
  // runtime error is thrown.

}

test94(e) {
  // Check that the type-tested expression is evaluated before the
  // runtime error is thrown.

}

main() {






}
