more NNBD tests
Change-Id: Idfff790ac969d147b840a49c326b78bd74a58583
Reviewed-on: https://dart-review.googlesource.com/c/90800
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
diff --git a/pkg/analyzer/test/generated/parser_fasta_test.dart b/pkg/analyzer/test/generated/parser_fasta_test.dart
index 2f532dd..5829f98 100644
--- a/pkg/analyzer/test/generated/parser_fasta_test.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_test.dart
@@ -1899,14 +1899,15 @@
*/
@reflectiveTest
class NNBDParserTest_Fasta extends FastaParserTestCase {
- parseNNBDCompilationUnit(String code, {List<ExpectedError> errors}) {
+ CompilationUnit parseNNBDCompilationUnit(String code,
+ {List<ExpectedError> errors}) {
createParser('''
@pragma('analyzer:non-nullable') library nnbd.parser.test;
$code
''');
_parserProxy.astBuilder.enableNonNullable = true;
CompilationUnit unit = _parserProxy.parseCompilationUnit2();
- assertNoErrors();
+ assertErrors(errors: errors);
return unit;
}
@@ -1938,6 +1939,19 @@
parseNNBDCompilationUnit('main() { C.a? Function()? x = 7; }');
}
+ void test_binary_expression_statement() {
+ final unit = parseNNBDCompilationUnit('D? foo(X? x) { X ?? x2; }');
+ FunctionDeclaration funct = unit.declarations[0];
+ BlockFunctionBody body = funct.functionExpression.body;
+ ExpressionStatement statement = body.block.statements[0];
+ BinaryExpression expression = statement.expression;
+ SimpleIdentifier lhs = expression.leftOperand;
+ expect(lhs.name, 'X');
+ expect(expression.operator.lexeme, '??');
+ SimpleIdentifier rhs = expression.rightOperand;
+ expect(rhs.name, 'x2');
+ }
+
void test_conditional() {
parseNNBDCompilationUnit('D? foo(X? x) { X ? 7 : y; }');
}
@@ -1946,6 +1960,15 @@
parseNNBDCompilationUnit('D? foo(X? x) { X ? x2 = x + bar(7) : y; }');
}
+ void test_conditional_error() {
+ parseNNBDCompilationUnit('D? foo(X? x) { X ? ? x2 = x + bar(7) : y; }',
+ errors: [
+ expectedError(ParserErrorCode.MISSING_IDENTIFIER, 78, 1),
+ expectedError(ParserErrorCode.EXPECTED_TOKEN, 99, 1),
+ expectedError(ParserErrorCode.MISSING_IDENTIFIER, 99, 1),
+ ]);
+ }
+
void test_conditional_simple() {
parseNNBDCompilationUnit('D? foo(X? x) { X ? x2 = x : y; }');
}