blob: d8fb64f4db7481409c1cedcc03a6c3e19bc1974e [file] [log] [blame]
// 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.
import 'package:kernel/ast.dart';
import '../builder/ast_factory.dart';
import 'kernel_shadow_ast.dart';
/// Concrete implementation of [builder.AstFactory] for building a kernel AST.
class KernelAstFactory implements AstFactory {
@override
KernelBlock block(List<Statement> statements, int charOffset) {
return new KernelBlock(statements)..fileOffset = charOffset;
}
@override
Field field(Name name, int charOffset, {String fileUri}) {
return new KernelField(name, fileUri: fileUri)..fileOffset = charOffset;
}
@override
KernelIntLiteral intLiteral(value, int charOffset) {
return new KernelIntLiteral(value)..fileOffset = charOffset;
}
@override
KernelListLiteral listLiteral(List<Expression> expressions,
DartType typeArgument, bool isConst, int charOffset) {
return new KernelListLiteral(expressions,
typeArgument: typeArgument, isConst: isConst)
..fileOffset = charOffset;
}
@override
KernelNullLiteral nullLiteral(int charOffset) {
return new KernelNullLiteral()..fileOffset = charOffset;
}
@override
KernelReturnStatement returnStatement(Expression expression, int charOffset) {
return new KernelReturnStatement(expression)..fileOffset = charOffset;
}
@override
StaticGet staticGet(Member readTarget, int offset) {
return new KernelStaticGet(readTarget)..fileOffset = offset;
}
@override
KernelVariableDeclaration variableDeclaration(String name, int charOffset,
{DartType type,
Expression initializer,
int equalsCharOffset = TreeNode.noOffset,
bool isFinal: false,
bool isConst: false}) {
return new KernelVariableDeclaration(name,
type: type,
initializer: initializer,
isFinal: isFinal,
isConst: isConst)
..fileOffset = charOffset
..fileEqualsOffset = equalsCharOffset;
}
}