// Errors:
//
// pkg/front_end/testcases/regress/issue_29976.dart:7:14: 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).
//     "x${x*"'"é'}x
//              ^
//
// pkg/front_end/testcases/regress/issue_29976.dart:7:15: Error: String starting with ' must end with '.
//     "x${x*"'"é'}x
//               ^
//
// pkg/front_end/testcases/regress/issue_29976.dart:7:7: Error: Can't find '}' to match '${'.
//     "x${x*"'"é'}x
//       ^
//
// pkg/front_end/testcases/regress/issue_29976.dart:10:1: Error: String starting with " must end with ".
//
// pkg/front_end/testcases/regress/issue_29976.dart:10:1: Error: Expected a declaration, but got ''.
//
// pkg/front_end/testcases/regress/issue_29976.dart:7:14: Error: Expected '}' before this.
//     "x${x*"'"é'}x
//              ^
//
// pkg/front_end/testcases/regress/issue_29976.dart:8:3: Error: Expected a String, but got ')'.
//   )
//   ^
//
// pkg/front_end/testcases/regress/issue_29976.dart:8:3: Error: Expected ';' after this.
//   )
//   ^

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

static method main() → void {
  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#f, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["x${(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).*("'")}"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
}
