// Formatted problems:
//
// pkg/front_end/testcases/bug21938.dart:10:4: Error: The method 'call' isn't defined for the class 'Object'.
//  - 'Object' is from 'dart:core'.
// Try correcting the name to the name of an existing method, or defining a method named 'call'.
//   x /*@error=UndefinedMethod*/ ();
//    ^
//
// pkg/front_end/testcases/bug21938.dart:11:4: Error: The method 'call' isn't defined for the class 'Object'.
//  - 'Object' is from 'dart:core'.
// Try correcting the name to the name of an existing method, or defining a method named 'call'.
//   x /*@error=UndefinedMethod*/ (3);
//    ^
//
// pkg/front_end/testcases/bug21938.dart:13:33: Error: The method 'call' isn't defined for the class 'Object'.
//  - 'Object' is from 'dart:core'.
// Try correcting the name to the name of an existing method, or defining a method named 'call'.
//   x. /*@error=UndefinedMethod*/ call();
//                                 ^^^^

library;
import self as self;
import "dart:core" as core;

static method test() → dynamic {
  core::Object x;
  core::Function f;
  let final dynamic #t1 = x in invalid-expression "pkg/front_end/testcases/bug21938.dart:10:4: Error: The method 'call' isn't defined for the class 'Object'.
 - 'Object' is from 'dart:core'.
Try correcting the name to the name of an existing method, or defining a method named 'call'.
  x /*@error=UndefinedMethod*/ ();
   ^";
  let final dynamic #t2 = x in invalid-expression "pkg/front_end/testcases/bug21938.dart:11:4: Error: The method 'call' isn't defined for the class 'Object'.
 - 'Object' is from 'dart:core'.
Try correcting the name to the name of an existing method, or defining a method named 'call'.
  x /*@error=UndefinedMethod*/ (3);
   ^";
  f.call(5, 2);
  let final dynamic #t3 = x in invalid-expression "pkg/front_end/testcases/bug21938.dart:13:33: Error: The method 'call' isn't defined for the class 'Object'.
 - 'Object' is from 'dart:core'.
Try correcting the name to the name of an existing method, or defining a method named 'call'.
  x. /*@error=UndefinedMethod*/ call();
                                ^^^^";
  f.call;
  f.call(5, 2);
}
static method main() → dynamic {}
