library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/export_builtin_from_dill/main.dart:11:7: Error: 'Never' is exported from both 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib2.dart' and 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib3.dart'.
//   new exported.Never();
//       ^^^^^^^^
//
// pkg/front_end/testcases/general/export_builtin_from_dill/main.dart:14:7: Error: 'dynamic' is exported from both 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib2.dart' and 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib3.dart'.
//   new exported.dynamic();
//       ^^^^^^^^
//
import self as self;
import "dart:core" as core;
import "main_lib2.dart" as mai;
import "main_lib3.dart" as mai2;

import "org-dartlang-testcase:///main_lib1.dart" as exported;
import "org-dartlang-testcase:///main_lib2.dart" as lib2;
import "org-dartlang-testcase:///main_lib3.dart" as lib3;
import "org-dartlang-testcase:///main_lib4.dart" as lib4;

static method test() → dynamic {
  invalid-expression "pkg/front_end/testcases/general/export_builtin_from_dill/main.dart:11:7: Error: 'Never' is exported from both 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib2.dart' and 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib3.dart'.
  new exported.Never();
      ^^^^^^^^";
  invalid-type n1;
  core::_GrowableList::•<invalid-type>(0);
  invalid-expression "pkg/front_end/testcases/general/export_builtin_from_dill/main.dart:14:7: Error: 'dynamic' is exported from both 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib2.dart' and 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib3.dart'.
  new exported.dynamic();
      ^^^^^^^^";
  invalid-type d1;
  core::_GrowableList::•<invalid-type>(0);
  new mai::Never::•();
  mai::Never n2;
  core::_GrowableList::•<mai::Never>(0);
  new mai::dynamic::•();
  mai::dynamic d2;
  core::_GrowableList::•<mai::dynamic>(0);
  new mai2::Never::•();
  mai2::Never n3;
  core::_GrowableList::•<mai2::Never>(0);
  new mai2::dynamic::•();
  mai2::dynamic d3;
  core::_GrowableList::•<mai2::dynamic>(0);
  new mai::Never::•();
  mai::Never n4;
  core::_GrowableList::•<mai::Never>(0);
  new mai::dynamic::•();
  mai::dynamic d4;
  core::_GrowableList::•<mai::dynamic>(0);
}

library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/export_builtin_from_dill/main_lib1.dart:6:1: Error: 'Never' is exported from both 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib2.dart' and 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib3.dart'.
// export 'main_lib3.dart';
// ^
//
// pkg/front_end/testcases/general/export_builtin_from_dill/main_lib1.dart:6:1: Error: 'dynamic' is exported from both 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib2.dart' and 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib3.dart'.
// export 'main_lib3.dart';
// ^
//
import self as self2;
import "dart:core" as core;

export "org-dartlang-testcase:///main_lib2.dart";
export "org-dartlang-testcase:///main_lib3.dart";

static const field dynamic _exports# = #C1 /*isLegacy*/;

library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/export_builtin_from_dill/main_lib2.dart:7:7: Error: Can't use 'dynamic' as a name here.
// class dynamic {}
//       ^^^^^^^
//
import self as mai;
import "dart:core" as core;

class Never extends core::Object {
  synthetic constructor •() → mai::Never
    : super core::Object::•()
    ;
}
class dynamic extends core::Object {
  synthetic constructor •() → mai::dynamic
    : super core::Object::•()
    ;
}

library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/export_builtin_from_dill/main_lib3.dart:7:7: Error: Can't use 'dynamic' as a name here.
// class dynamic {}
//       ^^^^^^^
//
import self as mai2;
import "dart:core" as core;

class Never extends core::Object {
  synthetic constructor •() → mai2::Never
    : super core::Object::•()
    ;
}
class dynamic extends core::Object {
  synthetic constructor •() → mai2::dynamic
    : super core::Object::•()
    ;
}

library /*isNonNullableByDefault*/;
import self as self3;
import "main_lib2.dart" as mai;
additionalExports = (mai::Never,
  mai::dynamic)

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


constants  {
  #C1 = "{\"Never\":\"'Never' is exported from both 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib2.dart' and 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib3.dart'.\",\"dynamic\":\"'dynamic' is exported from both 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib2.dart' and 'pkg/front_end/testcases/general/export_builtin_from_dill/main_lib3.dart'.\"}"
}
