// Copyright (c) 2012, 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.

library js_backend;

import 'dart:async' show EventSink, Future;

import 'package:_internal/compiler/js_lib/shared/embedded_names.dart'
    as embeddedNames;

import '../closure.dart';
import '../constants/expressions.dart';
import '../constants/values.dart';
import '../dart2jslib.dart';
import '../dart_types.dart';
import '../elements/elements.dart';
import '../io/code_output.dart';
import '../js/js.dart' as jsAst;
import '../js/js.dart' show js;
import '../js_emitter/js_emitter.dart'
    show Emitter,
         CodeEmitterTask,
         ClassBuilder,
         MetadataCollector,
         USE_NEW_EMITTER;

import '../library_loader.dart' show LibraryLoader, LoadedLibraries;
import '../native/native.dart' as native;
import '../ssa/ssa.dart';
import '../tree/tree.dart';
import '../types/types.dart';
import '../universe/universe.dart';
import '../util/characters.dart';
import '../util/util.dart';

import '../elements/visitor.dart' show
    ElementVisitor;

import '../js_backend/codegen/task.dart';
import 'patch_resolver.dart';

part 'backend.dart';
part 'checked_mode_helpers.dart';
part 'constant_emitter.dart';
part 'constant_handler_javascript.dart';
part 'constant_system_javascript.dart';
part 'custom_elements_analysis.dart';
part 'minify_namer.dart';
part 'namer.dart';
part 'runtime_types.dart';
part 'type_variable_handler.dart';
