//
// Problems outside component:
//
// pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart:9:8: Error: Not found: 'dart:_foreign_helper'
// import 'dart:_foreign_helper' show JS; // error
//        ^
//
library test;
//
// Problems in library:
//
// pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart:9:8: Error: Can't access platform private library.
// import 'dart:_foreign_helper' show JS; // error
//        ^
//
// pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart:12:14: Error: Method not found: 'JS'.
//   String x = JS('int', '42'); // error
//              ^^
//
// pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart:13:34: Error: Method not found: 'JS'.
//   var /*@type=invalid-type*/ y = JS<String>('String', '"hello"');
//                                  ^^
//
import self as self;
import "dart:core" as core;

import "dart:_foreign_helper" show JS;

static method test() → dynamic {
  core::String* x = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart:12:14: Error: Method not found: 'JS'.
  String x = JS('int', '42'); // error
             ^^";
  invalid-type y = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart:13:34: Error: Method not found: 'JS'.
  var /*@type=invalid-type*/ y = JS<String>('String', '\"hello\"');
                                 ^^";
  y = "world";
  y = 42;
}
static method main() → dynamic {}
