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:7: Error: A class declaration must have a body, even if it is empty.
// Try adding an empty body.
// 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: Error: Type 'xx' not found.
// class xxx xx XXX extends XXX {
//           ^^
//
import self as iss;
import "dart:core" as core;

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