Fix parseAssignableSelector() tests and parse '?.' with Fasta.

R=brianwilkerson@google.com, paulberry@google.com
BUG=

Review-Url: https://codereview.chromium.org/2727663005 .
This commit is contained in:
Konstantin Shcheglov 2017-03-01 11:33:22 -08:00
parent 3d0a94278e
commit 93bf98045c
3 changed files with 11 additions and 60 deletions

View file

@ -406,12 +406,6 @@ class ExpressionParserTest_Fasta extends FastaParserTestCase
super.test_parseAssignableExpression_expression_args_dot_typeParameters();
}
@override
@failingTest
void test_parseAssignableExpression_expression_question_dot() {
super.test_parseAssignableExpression_expression_question_dot();
}
@override
@failingTest
void
@ -426,36 +420,6 @@ class ExpressionParserTest_Fasta extends FastaParserTestCase
super.test_parseAssignableExpression_identifier_dot();
}
@override
@failingTest
void test_parseAssignableExpression_identifier_question_dot() {
super.test_parseAssignableExpression_identifier_question_dot();
}
@override
@failingTest
void test_parseAssignableSelector_dot() {
super.test_parseAssignableSelector_dot();
}
@override
@failingTest
void test_parseAssignableSelector_index() {
super.test_parseAssignableSelector_index();
}
@override
@failingTest
void test_parseAssignableSelector_none() {
super.test_parseAssignableSelector_none();
}
@override
@failingTest
void test_parseAssignableSelector_question_dot() {
super.test_parseAssignableSelector_question_dot();
}
@override
@failingTest
void test_parseAwaitExpression() {
@ -843,12 +807,6 @@ class ExpressionParserTest_Fasta extends FastaParserTestCase
super.test_parseNewExpression();
}
@override
@failingTest
void test_parsePostfixExpression_none_methodInvocation_question_dot() {
super.test_parsePostfixExpression_none_methodInvocation_question_dot();
}
@override
@failingTest
void
@ -857,14 +815,6 @@ class ExpressionParserTest_Fasta extends FastaParserTestCase
.test_parsePostfixExpression_none_methodInvocation_question_dot_typeArgumentComments();
}
@override
@failingTest
void
test_parsePostfixExpression_none_methodInvocation_question_dot_typeArguments() {
super
.test_parsePostfixExpression_none_methodInvocation_question_dot_typeArguments();
}
@override
@failingTest
void
@ -1066,10 +1016,9 @@ class FastaParserTestCase extends Object
}
@override
Expression parseAssignableSelector(
String code, Expression prefix, bool optional,
Expression parseAssignableSelector(String code, bool optional,
{bool allowConditional: true}) {
return _parseExpression(code);
return _parseExpression('foo$code');
}
@override

View file

@ -83,7 +83,7 @@ abstract class AbstractParserTestCase implements ParserTestHelpers {
Expression parseAssignableExpression(String code, bool primaryAllowed);
Expression parseAssignableSelector(
String code, Expression prefix, bool optional,
String code, bool optional,
{bool allowConditional: true});
AwaitExpression parseAwaitExpression(String code);
@ -4231,7 +4231,7 @@ abstract class ExpressionParserTestMixin implements AbstractParserTestCase {
}
void test_parseAssignableSelector_dot() {
Expression expression = parseAssignableSelector('.x', null, true);
Expression expression = parseAssignableSelector('.x', true);
expect(expression, isNotNull);
assertNoErrors();
var propertyAccess = expression as PropertyAccess;
@ -4240,7 +4240,7 @@ abstract class ExpressionParserTestMixin implements AbstractParserTestCase {
}
void test_parseAssignableSelector_index() {
Expression expression = parseAssignableSelector('[x]', null, true);
Expression expression = parseAssignableSelector('[x]', true);
expect(expression, isNotNull);
assertNoErrors();
var indexExpression = expression as IndexExpression;
@ -4250,8 +4250,7 @@ abstract class ExpressionParserTestMixin implements AbstractParserTestCase {
}
void test_parseAssignableSelector_none() {
Expression expression =
parseAssignableSelector(';', astFactory.simpleIdentifier(null), true);
Expression expression = parseAssignableSelector('', true);
expect(expression, isNotNull);
assertNoErrors();
var identifier = expression as SimpleIdentifier;
@ -4259,7 +4258,7 @@ abstract class ExpressionParserTestMixin implements AbstractParserTestCase {
}
void test_parseAssignableSelector_question_dot() {
Expression expression = parseAssignableSelector('?.x', null, true);
Expression expression = parseAssignableSelector('?.x', true);
expect(expression, isNotNull);
assertNoErrors();
var propertyAccess = expression as PropertyAccess;
@ -7720,8 +7719,10 @@ class ParserTestCase extends EngineTestCase
@override
Expression parseAssignableSelector(
String code, Expression prefix, bool optional,
String code, bool optional,
{bool allowConditional: true}) {
Expression prefix =
astFactory.simpleIdentifier(new StringToken(TokenType.STRING, 'foo', 0));
createParser(code);
return parser.parseAssignableSelector(prefix, optional,
allowConditional: allowConditional);

View file

@ -240,6 +240,7 @@ class AstBuilder extends ScopeListener {
void handleBinaryExpression(Token token) {
debugEvent("BinaryExpression");
if (identical(".", token.stringValue) ||
identical("?.", token.stringValue) ||
identical("..", token.stringValue)) {
doDotExpression(token);
} else {