// Unhandled errors:
//
// pkg/front_end/testcases/regress/issue_29982.dart:7:15: Error: The non-ASCII character 'é' (U+00E9) can't be used in identifiers, only in strings and comments.
// Try using an US-ASCII letter, a digit, '_' (an underscore), or '$' (a dollar sign).
//   print('${eh[éh']}');
//               ^
//
// pkg/front_end/testcases/regress/issue_29982.dart:7:14: Error: Can't find ']' to match '['.
//   print('${eh[éh']}');
//              ^
//
// pkg/front_end/testcases/regress/issue_29982.dart:7:10: Error: Can't find '}' to match '${'.
//   print('${eh[éh']}');
//          ^
//
// pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: String starting with ' must end with '.
//
// pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: Expected a declaration, but got ''.
//
// pkg/front_end/testcases/regress/issue_29982.dart:7:17: Error: Expected ']' before this.
//   print('${eh[éh']}');
//                 ^^^^
//
// pkg/front_end/testcases/regress/issue_29982.dart:7:15: Error: Getter not found: 'éh'.
//   print('${eh[éh']}');
//               ^^
//
// pkg/front_end/testcases/regress/issue_29982.dart:7:17: Error: Expected '}' before this.
//   print('${eh[éh']}');
//                 ^^^^
//
// pkg/front_end/testcases/regress/issue_29982.dart:7:21: Error: Expected a String, but got ')'.
//   print('${eh[éh']}');
//                     ^

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

static method main() → dynamic {
  core::Map<core::String, core::String> eh = <core::String, core::String>{"\u0233h": "\u0233h"};
  core::print("${eh.{core::Map::[]}(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#éh, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))))}");
}
