blob: 54af1727417c120183cd11160627d02ad781f170 [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.
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/ast_factory.dart';
import 'package:analyzer/src/fasta/ast_building_factory.dart';
import 'package:front_end/src/fasta/kernel/expression_generator.dart' as fasta;
import 'package:front_end/src/fasta/kernel/expression_generator_helper.dart';
import 'package:front_end/src/fasta/kernel/forest.dart';
import 'package:front_end/src/scanner/token.dart';
import 'package:kernel/ast.dart' show DartType, Initializer, Name, Procedure;
abstract class AnalyzerExpressionGenerator
implements Generator<Expression, Statement, Arguments> {
final ExpressionGeneratorHelper<Expression, Statement, Arguments> helper;
final AstFactory astFactory;
AnalyzerExpressionGenerator(this.helper, this.astFactory);
Forest<Expression, Statement, Token, Arguments> get forest => helper.forest;
@override
// TODO: implement isInitializer
bool get isInitializer => throw new UnimplementedError();
@override
// TODO: implement isThisPropertyAccess
bool get isThisPropertyAccess => throw new UnimplementedError();
@override
// TODO: implement plainNameForRead
String get plainNameForRead => throw new UnimplementedError();
@override
// TODO: implement plainNameForWrite
String get plainNameForWrite => throw new UnimplementedError();
@override
// TODO: implement uri
Uri get uri => throw new UnimplementedError();
@override
Expression buildAssignment(Expression value, {bool voidContext}) {
// TODO: implement buildAssignment
throw new UnimplementedError();
}
@override
Expression buildCompoundAssignment(Name binaryOperator, Expression value,
{int offset,
bool voidContext,
Procedure interfaceTarget,
bool isPreIncDec}) {
// TODO: implement buildCompoundAssignment
throw new UnimplementedError();
}
@override
Initializer buildFieldInitializer(Map<String, int> initializedFields) {
// TODO: implement buildFieldInitializer
throw new UnimplementedError();
}
/// For most accessors, the AST structure will be the same whether the result
/// is being used for access or modification.
Expression buildForEffect() => buildSimpleRead();
@override
Expression buildNullAwareAssignment(
Expression value, DartType type, int offset,
{bool voidContext}) {
// TODO: implement buildNullAwareAssignment
throw new UnimplementedError();
}
@override
Expression buildPostfixIncrement(Name binaryOperator,
{int offset, bool voidContext, Procedure interfaceTarget}) {
// TODO: implement buildPostfixIncrement
throw new UnimplementedError();
}
@override
Expression buildPrefixIncrement(Name binaryOperator,
{int offset, bool voidContext, Procedure interfaceTarget}) {
// TODO: implement buildPrefixIncrement
throw new UnimplementedError();
}
@override
buildPropertyAccess(fasta.IncompleteSendGenerator send, int operatorOffset,
bool isNullAware) {
// TODO: implement buildPropertyAccess
throw new UnimplementedError();
}
@override
buildThrowNoSuchMethodError(Expression receiver, Arguments arguments,
{bool isSuper,
bool isGetter,
bool isSetter,
bool isStatic,
String name,
int offset,
/*LocatedMessage*/ argMessage}) {
// TODO: implement buildThrowNoSuchMethodError
throw new UnimplementedError();
}
@override
DartType buildTypeWithBuiltArguments(List<DartType> arguments,
{bool nonInstanceAccessIsError: false}) {
// TODO: implement buildTypeWithBuiltArguments
throw new UnimplementedError();
}
@override
doInvocation(int offset, Arguments arguments) {
// TODO: implement doInvocation
throw new UnimplementedError();
}
@override
Expression makeInvalidRead() {
// TODO: implement makeInvalidRead
throw new UnimplementedError();
}
@override
Expression makeInvalidWrite(Expression value) {
// TODO: implement makeInvalidWrite
throw new UnimplementedError();
}
@override
void printOn(StringSink sink) {
// TODO: implement printOn
throw new UnimplementedError();
}
@override
T storeOffset<T>(T node, int offset) {
// TODO: implement storeOffset
throw new UnimplementedError();
}
}
class AnalyzerUnresolvedNameGenerator extends AnalyzerExpressionGenerator
with
fasta.ErroneousExpressionGenerator<Expression, Statement, Arguments>,
fasta.UnresolvedNameGenerator<Expression, Statement, Arguments> {
@override
final Token token;
@override
final Name name;
AnalyzerUnresolvedNameGenerator(
ExpressionGeneratorHelper<dynamic, dynamic, dynamic> helper,
AstFactory astFactory,
this.token,
this.name)
: super(helper, astFactory);
@override
Expression buildSimpleRead() => astFactory.simpleIdentifier(token);
@override
void printOn(StringSink sink) {
sink.write(", name: ");
sink.write(name.name);
}
}