mirror of
https://github.com/dart-lang/sdk
synced 2024-10-03 19:21:31 +00:00
Add generator for unlinked names
Change-Id: I5841b3ff86133eedd14d8bef26c3d1b2dd78f34d Reviewed-on: https://dart-review.googlesource.com/57703 Commit-Queue: Brian Wilkerson <brianwilkerson@google.com> Reviewed-by: Dan Rubel <danrubel@google.com>
This commit is contained in:
parent
c911a1bef6
commit
89c2da2846
|
@ -7,19 +7,20 @@ 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/fasta/kernel/forest.dart' as fasta;
|
||||
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> {
|
||||
implements fasta.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;
|
||||
fasta.Forest<Expression, Statement, Token, Arguments> get forest =>
|
||||
helper.forest;
|
||||
|
||||
@override
|
||||
// TODO: implement isInitializer
|
||||
|
@ -146,6 +147,46 @@ abstract class AnalyzerExpressionGenerator
|
|||
}
|
||||
}
|
||||
|
||||
class AnalyzerUnlinkedNameGenerator extends AnalyzerExpressionGenerator
|
||||
with
|
||||
fasta.ErroneousExpressionGenerator<Expression, Statement, Arguments>,
|
||||
fasta.UnlinkedGenerator<Expression, Statement, Arguments> {
|
||||
@override
|
||||
final Token token;
|
||||
|
||||
@override
|
||||
final fasta.UnlinkedDeclaration declaration;
|
||||
|
||||
AnalyzerUnlinkedNameGenerator(
|
||||
ExpressionGeneratorHelper<dynamic, dynamic, dynamic> helper,
|
||||
AstFactory astFactory,
|
||||
this.token,
|
||||
this.declaration)
|
||||
: super(helper, astFactory);
|
||||
|
||||
@override
|
||||
DartType buildErroneousTypeNotAPrefix(fasta.Identifier suffix) {
|
||||
// TODO: implement buildErroneousTypeNotAPrefix
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Expression buildError(Arguments arguments,
|
||||
{bool isGetter: false, bool isSetter: false, int offset}) {
|
||||
// TODO: implement buildError
|
||||
throw new UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Expression buildSimpleRead() => astFactory.simpleIdentifier(token);
|
||||
|
||||
@override
|
||||
void printOn(StringSink sink) {
|
||||
sink.write(", name: ");
|
||||
sink.write(name.name);
|
||||
}
|
||||
}
|
||||
|
||||
class AnalyzerUnresolvedNameGenerator extends AnalyzerExpressionGenerator
|
||||
with
|
||||
fasta.ErroneousExpressionGenerator<Expression, Statement, Arguments>,
|
||||
|
|
|
@ -614,8 +614,8 @@ class AstBuildingForest
|
|||
ExpressionGeneratorHelper<Expression, Statement, Arguments> helper,
|
||||
Token token,
|
||||
UnlinkedDeclaration declaration) {
|
||||
// TODO(brianwilkerson) Implement this.
|
||||
throw new UnimplementedError();
|
||||
return new AnalyzerUnlinkedNameGenerator(
|
||||
helper, astFactory, token, declaration);
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
@ -22,6 +22,11 @@ main() async {
|
|||
});
|
||||
}
|
||||
|
||||
void dart2Failure() {
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
}
|
||||
|
||||
@reflectiveTest
|
||||
class ClassMemberParserTest_Forest extends FastaBodyBuilderTestCase
|
||||
with ClassMemberParserTestMixin {
|
||||
|
@ -627,8 +632,7 @@ class ComplexParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
@failingTest
|
||||
void test_logicalAndExpression() {
|
||||
super.test_logicalAndExpression();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
|
@ -649,22 +653,19 @@ class ComplexParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
@failingTest
|
||||
void test_logicalOrExpression() {
|
||||
super.test_logicalOrExpression();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_logicalOrExpression_precedence_logicalAnd_left() {
|
||||
super.test_logicalOrExpression_precedence_logicalAnd_left();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_logicalOrExpression_precedence_logicalAnd_right() {
|
||||
super.test_logicalOrExpression_precedence_logicalAnd_right();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
|
@ -682,13 +683,6 @@ class ComplexParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
super.test_methodInvocation3();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_multipleLabels_statement() {
|
||||
super.test_multipleLabels_statement();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_multiplicativeExpression_normal() {
|
||||
super.test_multiplicativeExpression_normal();
|
||||
|
@ -1779,8 +1773,7 @@ class ErrorParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
@failingTest
|
||||
void test_missingAssignableSelector_identifiersAssigned() {
|
||||
super.test_missingAssignableSelector_identifiersAssigned();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
|
@ -1806,8 +1799,7 @@ class ErrorParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
@failingTest
|
||||
void test_missingAssignableSelector_superPropertyAccessAssigned() {
|
||||
super.test_missingAssignableSelector_superPropertyAccessAssigned();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
|
@ -2670,11 +2662,6 @@ class ExpressionParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
super.test_parseAssignableSelector_question_dot();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseAwaitExpression() {
|
||||
super.test_parseAwaitExpression();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseBitwiseAndExpression_normal() {
|
||||
super.test_parseBitwiseAndExpression_normal();
|
||||
|
@ -2833,8 +2820,7 @@ class ExpressionParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
@failingTest
|
||||
void test_parseConditionalExpression() {
|
||||
super.test_parseConditionalExpression();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
|
@ -3086,15 +3072,13 @@ class ExpressionParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
@failingTest
|
||||
void test_parseLogicalAndExpression() {
|
||||
super.test_parseLogicalAndExpression();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseLogicalOrExpression() {
|
||||
super.test_parseLogicalOrExpression();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
|
@ -3211,8 +3195,7 @@ class ExpressionParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
@failingTest
|
||||
void test_parsePrimaryExpression_const() {
|
||||
super.test_parsePrimaryExpression_const();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
|
@ -3395,16 +3378,6 @@ class ExpressionParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
super.test_parseSuperConstructorInvocation_unnamed();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseThrowExpression() {
|
||||
super.test_parseThrowExpression();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseThrowExpressionWithoutCascade() {
|
||||
super.test_parseThrowExpressionWithoutCascade();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseUnaryExpression_decrement_normal() {
|
||||
super.test_parseUnaryExpression_decrement_normal();
|
||||
|
@ -3450,11 +3423,6 @@ class ExpressionParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
super.test_parseUnaryExpression_minus_super();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseUnaryExpression_not_normal() {
|
||||
super.test_parseUnaryExpression_not_normal();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseUnaryExpression_not_super() {
|
||||
super.test_parseUnaryExpression_not_super();
|
||||
|
@ -4061,15 +4029,13 @@ class RecoveryParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
@failingTest
|
||||
void test_conditionalExpression_missingElse() {
|
||||
super.test_conditionalExpression_missingElse();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_conditionalExpression_missingThen() {
|
||||
super.test_conditionalExpression_missingThen();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
|
@ -4160,8 +4126,7 @@ class RecoveryParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
@failingTest
|
||||
void test_incomplete_conditionalExpression() {
|
||||
super.test_incomplete_conditionalExpression();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
|
@ -4342,22 +4307,19 @@ class RecoveryParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
@failingTest
|
||||
void test_logicalAndExpression_missing_LHS() {
|
||||
super.test_logicalAndExpression_missing_LHS();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_logicalAndExpression_missing_LHS_RHS() {
|
||||
super.test_logicalAndExpression_missing_LHS_RHS();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_logicalAndExpression_missing_RHS() {
|
||||
super.test_logicalAndExpression_missing_RHS();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
|
@ -4373,36 +4335,31 @@ class RecoveryParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
@failingTest
|
||||
void test_logicalOrExpression_missing_LHS() {
|
||||
super.test_logicalOrExpression_missing_LHS();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_logicalOrExpression_missing_LHS_RHS() {
|
||||
super.test_logicalOrExpression_missing_LHS_RHS();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_logicalOrExpression_missing_RHS() {
|
||||
super.test_logicalOrExpression_missing_RHS();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_logicalOrExpression_precedence_logicalAnd_left() {
|
||||
super.test_logicalOrExpression_precedence_logicalAnd_left();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_logicalOrExpression_precedence_logicalAnd_right() {
|
||||
super.test_logicalOrExpression_precedence_logicalAnd_right();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
dart2Failure();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
|
@ -4866,11 +4823,6 @@ class SimpleParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
super.test_parseLibraryIdentifier_single();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseReturnStatement_value() {
|
||||
super.test_parseReturnStatement_value();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseStatement_function_noReturnType() {
|
||||
super.test_parseStatement_function_noReturnType();
|
||||
|
@ -5076,31 +5028,6 @@ class StatementParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
super.test_invalid_typeParamAnnotation3();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseAssertStatement() {
|
||||
super.test_parseAssertStatement();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseAssertStatement_messageLowPrecedence() {
|
||||
super.test_parseAssertStatement_messageLowPrecedence();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseAssertStatement_messageString() {
|
||||
super.test_parseAssertStatement_messageString();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseAssertStatement_trailingComma_message() {
|
||||
super.test_parseAssertStatement_trailingComma_message();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseAssertStatement_trailingComma_noMessage() {
|
||||
super.test_parseAssertStatement_trailingComma_noMessage();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseBreakStatement_noLabel() {
|
||||
super.test_parseBreakStatement_noLabel();
|
||||
|
@ -5111,11 +5038,6 @@ class StatementParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
super.test_parseContinueStatement_noLabel();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseDoStatement() {
|
||||
super.test_parseDoStatement();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseForStatement_each_await() {
|
||||
super.test_parseForStatement_each_await();
|
||||
|
@ -5216,28 +5138,11 @@ class StatementParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
super.test_parseFunctionDeclarationStatement_typeParameters_noReturnType();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseIfStatement_else_block() {
|
||||
super.test_parseIfStatement_else_block();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseIfStatement_else_emptyStatements() {
|
||||
super.test_parseIfStatement_else_emptyStatements();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseIfStatement_else_statement() {
|
||||
super.test_parseIfStatement_else_statement();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseIfStatement_noElse_block() {
|
||||
super.test_parseIfStatement_noElse_block();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseIfStatement_noElse_statement() {
|
||||
super.test_parseIfStatement_noElse_statement();
|
||||
|
@ -5402,18 +5307,6 @@ class StatementParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
super.test_parseStatement_functionDeclaration_returnType_typeParameters();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseStatement_multipleLabels() {
|
||||
super.test_parseStatement_multipleLabels();
|
||||
fail(
|
||||
'This passes under Dart 1, but fails under Dart 2 because of a cast exception');
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseStatement_noLabels() {
|
||||
super.test_parseStatement_noLabels();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseStatement_singleLabel() {
|
||||
super.test_parseStatement_singleLabel();
|
||||
|
@ -5569,11 +5462,6 @@ class StatementParserTest_Forest extends FastaBodyBuilderTestCase
|
|||
super.test_parseVariableDeclarationStatementAfterMetadata_single();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseWhileStatement() {
|
||||
super.test_parseWhileStatement();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
void test_parseYieldStatement_each() {
|
||||
super.test_parseYieldStatement_each();
|
||||
|
|
|
@ -292,7 +292,7 @@ abstract class BodyBuilder<Expression, Statement, Arguments>
|
|||
@override
|
||||
Expression toValue(Object node) {
|
||||
if (node is Generator) {
|
||||
return toExpression(node.buildSimpleRead());
|
||||
return node.buildSimpleRead();
|
||||
} else if (node is Expression) {
|
||||
return node;
|
||||
} else if (node is PrefixBuilder) {
|
||||
|
|
Loading…
Reference in a new issue