blob: 95b17035d44c8c1877e57e5034288f7dd0b86b01 [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:analyzer/src/dart/error/syntactic_errors.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'recovery_test_support.dart';
main() {
defineReflectiveSuite(() {
defineReflectiveTests(InvalidCodeTest);
defineReflectiveTests(MisplacedCodeTest);
});
}
@reflectiveTest
class InvalidCodeTest extends AbstractRecoveryTest {
@failingTest
void test_const_mistyped() {
// https://github.com/dart-lang/sdk/issues/9714
testRecovery('''
List<String> fruits = cont <String>['apples', 'bananas', 'pears'];
''', [], '''
List<String> fruits = const <String>['apples', 'bananas', 'pears'];
''');
}
void test_default_asVariableName() {
testRecovery('''
const default = const Object();
''', [ParserErrorCode.MISSING_IDENTIFIER], '''
const default = const Object();
''', expectedErrorsInValidCode: [ParserErrorCode.MISSING_IDENTIFIER]);
}
void test_expressionInPlaceOfTypeName() {
// https://github.com/dart-lang/sdk/issues/30370
testRecovery('''
f() {
return <g('')>[0, 1, 2];
}
''', [ParserErrorCode.EXPECTED_TOKEN], '''
f() {
return <g>[0, 1, 2];
}
''');
}
void test_expressionInPlaceOfTypeName2() {
// https://github.com/dart-lang/sdk/issues/30370
testRecovery('''
f() {
return <test('', (){})>[0, 1, 2];
}
''', [ParserErrorCode.EXPECTED_TOKEN], '''
f() {
return <test>[0, 1, 2];
}
''');
}
@failingTest
void test_functionInPlaceOfTypeName() {
// https://github.com/dart-lang/sdk/issues/30370
// TODO(danrubel): Improve recovery. Currently, the fasta scanner
// does not associate `<` with `>` in this situation.
testRecovery('''
f() {
return <test('', (){});>[0, 1, 2];
}
''', [ParserErrorCode.UNEXPECTED_TOKEN], '''
f() {
return _s_ < test('', (){}); _s_ > [0, 1, 2];
}
''');
}
void test_with_asArgumentName() {
testRecovery('''
f() {}
g() {
f(with: 3);
}
''', [ParserErrorCode.MISSING_IDENTIFIER], '''
f() {}
g() {
f(with: 3);
}
''', expectedErrorsInValidCode: [ParserErrorCode.MISSING_IDENTIFIER]);
}
@failingTest
void test_with_asParameterName() {
testRecovery('''
f({int with: 0}) {}
''', [], '''
f({int _s_}) {}
''');
}
}
@reflectiveTest
class MisplacedCodeTest extends AbstractRecoveryTest {
@failingTest
void test_const_mistyped() {
// https://github.com/dart-lang/sdk/issues/10554
testRecovery('''
var allValues = [];
allValues.forEach((enum) {});
''', [], '''
var allValues = [];
''');
}
}