blob: 1a7bdf9d90a3cc0bf0e8674b6fd1cd5e71d7d39a [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' show DartType;
import '../builder/ast_factory.dart' as builder;
import '../builder/shadow_ast.dart' as builder;
import 'kernel_shadow_ast.dart';
/// Concrete implementation of [builder.AstFactory] for building a kernel AST.
class KernelAstFactory implements builder.AstFactory {
@override
KernelBlock block(List<builder.ShadowStatement> statements, int charOffset) {
return new KernelBlock(statements)..fileOffset = charOffset;
}
@override
KernelIntLiteral intLiteral(value, int charOffset) {
return new KernelIntLiteral(value)..fileOffset = charOffset;
}
@override
KernelListLiteral listLiteral(List<builder.ShadowExpression> 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(
builder.ShadowExpression expression, int charOffset) {
return new KernelReturnStatement(expression)..fileOffset = charOffset;
}
@override
KernelVariableDeclaration variableDeclaration(String name,
{DartType type,
builder.ShadowExpression initializer,
int charOffset,
bool isFinal: false,
bool isConst: false}) {
return new KernelVariableDeclaration(name,
type: type,
initializer: initializer,
isFinal: isFinal,
isConst: isConst)..fileEqualsOffset = charOffset;
}
}