// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// @dart = 2.9

import "package:async_helper/async_helper.dart" show asyncTest;

import "package:front_end/src/testing/compiler_common.dart" show compileUnit;

import "package:front_end/src/api_prototype/front_end.dart"
    show CompilerOptions;

main() {
  asyncTest(() async {
    var sources = <String, dynamic>{
      "a.dart": """
import 'charcode.dart';
""",
      "charcode.dart": """
export 'ascii.dart';
export 'html_entity.dart' hide tilde;
""",
      "html_entity.dart": """
export 'ascii.dart' show quot;
const int tilde=1;
""",
      "ascii.dart": """
const int tilde=2;
const int quot=3;
""",
    };
    await compileUnit(sources.keys.toList(), sources,
        options: new CompilerOptions()
          ..onDiagnostic = (m) => throw m.plainTextFormatted.join("\n"));
  });
}
