blob: c37724b613715c08a6f9cb15c0b1973323503bc7 [file] [log] [blame]
// Copyright (c) 2018, 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 fasta.kernel_body_builder;
import 'package:kernel/ast.dart' show Expression;
import '../type_inference/type_inferrer.dart' show TypeInferrer;
import 'body_builder.dart' show BodyBuilder;
import 'fangorn.dart' show Fangorn;
import 'forest.dart' show Forest;
import 'kernel_api.dart' show ClassHierarchy, CoreTypes;
import 'kernel_builder.dart'
show KernelClassBuilder, KernelLibraryBuilder, ModifierBuilder, Scope;
class KernelBodyBuilder extends BodyBuilder {
@override
final Forest forest;
KernelBodyBuilder(
KernelLibraryBuilder library,
ModifierBuilder member,
Scope scope,
Scope formalParameterScope,
ClassHierarchy hierarchy,
CoreTypes coreTypes,
KernelClassBuilder classBuilder,
bool isInstanceMember,
Uri uri,
TypeInferrer typeInferrer)
: forest = const Fangorn(),
super(library, member, scope, formalParameterScope, hierarchy,
coreTypes, classBuilder, isInstanceMember, uri, typeInferrer);
KernelBodyBuilder.forField(ModifierBuilder member, TypeInferrer typeInferrer)
: forest = const Fangorn(),
super.forField(member, typeInferrer);
KernelBodyBuilder.forAnnotation(
KernelLibraryBuilder library,
KernelClassBuilder classBuilder,
ModifierBuilder member,
Scope scope,
Scope parameterScope,
Uri fileUri)
: forest = const Fangorn(),
super(
library,
member,
scope,
parameterScope,
library.loader.hierarchy,
library.loader.coreTypes,
classBuilder,
member?.isInstanceMember ?? false,
fileUri,
library.loader.typeInferenceEngine
?.createLocalTypeInferrer(fileUri, null, library));
@override
void enterThenForTypePromotion(Expression condition) {
typePromoter?.enterThen(condition);
}
}