//
// Problems outside component:
//
// pkg/front_end/testcases/general/export_builtin_from_dill/main_lib1.dart: 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'.
//
// pkg/front_end/testcases/general/export_builtin_from_dill/main_lib1.dart: 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'.
//
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 "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;
  <invalid-type>[];
  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;
  <invalid-type>[];
  new mai::Never::•();
  mai::Never n2;
  <mai::Never>[];
  new mai::dynamic::•();
  mai::dynamic d2;
  <mai::dynamic>[];
  new mai2::Never::•();
  mai2::Never n3;
  <mai2::Never>[];
  new mai2::dynamic::•();
  mai2::dynamic d3;
  <mai2::dynamic>[];
  new mai::Never::•();
  mai::Never n4;
  <mai::Never>[];
  new mai::dynamic::•();
  mai::dynamic d4;
  <mai::dynamic>[];
}
