blob: 740df408bd9ab30a39dba3c87553c963221f3bec [file] [log] [blame] [edit]
// 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.
import 'package:kernel/ast.dart' as ir;
import 'package:kernel/type_environment.dart' as ir;
import '../ir/impact_data.dart';
import '../kernel/element_map.dart';
import 'annotations.dart';
import 'impact.dart';
import 'scope.dart';
class ModularMemberData {
final ScopeModel scopeModel;
final ImpactBuilderData impactBuilderData;
ModularMemberData(this.scopeModel, this.impactBuilderData);
}
abstract class ModularStrategy {
List<PragmaAnnotationData> getPragmaAnnotationData(ir.Member node);
ModularMemberData getModularMemberData(ir.Member node);
}
/// Compute [ModularMemberData] from the IR.
ModularMemberData computeModularMemberData(
KernelToElementMap elementMap,
ir.Member node,
ScopeModel scopeModel,
) {
return ModularMemberData(
scopeModel,
ImpactBuilder(elementMap, node).computeImpact(),
);
}
class ModularCore {
final ir.Component component;
final ir.TypeEnvironment typeEnvironment;
ModularCore(this.component, this.typeEnvironment);
}