// Copyright (c) 2019, 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 front_end.constant_evaluator;

export '../fasta/kernel/constant_evaluator.dart'
    show
        ConstantEvaluator,
        ConstantsTransformer,
        ErrorReporter,
        EvaluationMode,
        EvaluationEnvironment,
        SimpleErrorReporter,
        transformComponent,
        transformLibraries;
