library;
import self as self;

import "org-dartlang-testcase:///issue_36647_lib1.dart";


library;
import self as self2;
import "issue_36647_lib2.dart" as iss;
additionalExports = (iss::xxx)
, iss::XXX)
, iss::extends)


export "org-dartlang-testcase:///issue_36647_lib2.dart";


library;
//
// Problems in library:
//
// pkg/front_end/testcases/regress/issue_36647_lib2.dart:5:11: Error: Expected a class or mixin body, but got 'xx'.
// class xxx xx XXX extends XXX {
//           ^^
//
// pkg/front_end/testcases/regress/issue_36647_lib2.dart:5:14: Error: Expected ';' after this.
// class xxx xx XXX extends XXX {
//              ^^^
//
// pkg/front_end/testcases/regress/issue_36647_lib2.dart:5:18: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
// Try adding the name of the type of the variable or the keyword 'var'.
// class xxx xx XXX extends XXX {
//                  ^^^^^^^
//
// pkg/front_end/testcases/regress/issue_36647_lib2.dart:5:18: Error: Expected an identifier, but got 'extends'.
// class xxx xx XXX extends XXX {
//                  ^^^^^^^
//
// pkg/front_end/testcases/regress/issue_36647_lib2.dart:5:18: Error: Expected ';' after this.
// class xxx xx XXX extends XXX {
//                  ^^^^^^^
//
// pkg/front_end/testcases/regress/issue_36647_lib2.dart:5:26: Error: A function declaration needs an explicit list of parameters.
// Try adding a parameter list to the function declaration.
// class xxx xx XXX extends XXX {
//                          ^^^
//
// pkg/front_end/testcases/regress/issue_36647_lib2.dart:5:26: Error: 'XXX' is already declared in this scope.
// class xxx xx XXX extends XXX {
//                          ^^^
// pkg/front_end/testcases/regress/issue_36647_lib2.dart:5:14: Context: Previous declaration of 'XXX'.
// class xxx xx XXX extends XXX {
//              ^^^
//
// pkg/front_end/testcases/regress/issue_36647_lib2.dart:5:11: Warning: Type 'xx' not found.
// class xxx xx XXX extends XXX {
//           ^^
//
// pkg/front_end/testcases/regress/issue_36647_lib2.dart:5:11: Warning: 'xx' isn't a type.
// class xxx xx XXX extends XXX {
//           ^^
//
import self as iss;
import "dart:core" as core;

class xxx extends core::Object {
  synthetic constructor •() → iss::xxx
    : super core::Object::•()
    ;
}
static field invalid-type XXX;
static field dynamic extends;
