| Index: pkg/front_end/test/scanner_replacement_test.dart
|
| diff --git a/pkg/front_end/test/scanner_replacement_test.dart b/pkg/front_end/test/scanner_replacement_test.dart
|
| index aca78d8e75763abe86087b2792443c7f57c4255c..5d0a51a87d0897c2cd45a84f231900f8a3dfc3a5 100644
|
| --- a/pkg/front_end/test/scanner_replacement_test.dart
|
| +++ b/pkg/front_end/test/scanner_replacement_test.dart
|
| @@ -77,13 +77,17 @@ class ScannerTest_Replacement extends ScannerTestBase {
|
| expect(close.isSynthetic, isFalse);
|
| }
|
|
|
| - void _assertOpenOnly(String source) {
|
| - analyzer.BeginToken open = _scan(source);
|
| + void _assertOpenOnly(String source, String expectedCloser) {
|
| + ErrorListener listener = new ErrorListener();
|
| + analyzer.BeginToken open = scanWithListener(source, listener);
|
| fasta.Token close = open.next;
|
| expect(close.next.isEof, isTrue);
|
| expect(open.endGroup, close);
|
| expect(open.isSynthetic, isFalse);
|
| expect(close.isSynthetic, isTrue);
|
| + listener.assertErrors([
|
| + new TestError(0, ScannerErrorCode.EXPECTED_TOKEN, [expectedCloser]),
|
| + ]);
|
| }
|
|
|
| void test_lt() {
|
| @@ -100,7 +104,7 @@ class ScannerTest_Replacement extends ScannerTestBase {
|
|
|
| @override
|
| void test_open_curly_bracket() {
|
| - _assertOpenOnly('{');
|
| + _assertOpenOnly('{', '}');
|
| }
|
|
|
| void test_open_curly_bracket_with_close() {
|
| @@ -108,7 +112,7 @@ class ScannerTest_Replacement extends ScannerTestBase {
|
| }
|
|
|
| void test_open_paren() {
|
| - _assertOpenOnly('(');
|
| + _assertOpenOnly('(', ')');
|
| }
|
|
|
| void test_open_paren_with_close() {
|
| @@ -116,7 +120,7 @@ class ScannerTest_Replacement extends ScannerTestBase {
|
| }
|
|
|
| void test_open_square_bracket() {
|
| - _assertOpenOnly('[');
|
| + _assertOpenOnly('[', ']');
|
| }
|
|
|
| void test_open_square_bracket_with_close() {
|
| @@ -130,11 +134,12 @@ class ScannerTest_Replacement extends ScannerTestBase {
|
| // and inserts synthetic closers as needed.
|
| // r'"${({(}}"' is parsed as r'"${({()})}"'
|
| // where both ')' are synthetic
|
| - var stringStart = _scan(r'"${({(}}"');
|
| - var interpolationStart = stringStart.next as analyzer.BeginToken;
|
| - var openParen1 = interpolationStart.next as analyzer.BeginToken;
|
| - var openBrace = openParen1.next as analyzer.BeginToken;
|
| - var openParen2 = openBrace.next as analyzer.BeginToken;
|
| + ErrorListener listener = new ErrorListener();
|
| + var stringStart = scanWithListener(r'"${({(}}"', listener);
|
| + analyzer.BeginToken interpolationStart = stringStart.next;
|
| + analyzer.BeginToken openParen1 = interpolationStart.next;
|
| + analyzer.BeginToken openBrace = openParen1.next;
|
| + analyzer.BeginToken openParen2 = openBrace.next;
|
| var closeParen2 = openParen2.next;
|
| var closeBrace = closeParen2.next;
|
| var closeParen1 = closeBrace.next;
|
| @@ -151,15 +156,20 @@ class ScannerTest_Replacement extends ScannerTestBase {
|
| expect(openParen2.endToken, same(closeParen2));
|
| expect(closeParen2.isSynthetic, isTrue);
|
| expect(eof.isEof, isTrue);
|
| + listener.assertErrors([
|
| + new TestError(3, ScannerErrorCode.EXPECTED_TOKEN, [')']),
|
| + new TestError(5, ScannerErrorCode.EXPECTED_TOKEN, [')']),
|
| + ]);
|
| }
|
|
|
| @override
|
| void test_unmatched_openers() {
|
| + ErrorListener listener = new ErrorListener();
|
| // fasta inserts missing closers except for '<'
|
| - var openBrace = _scan('{[(<') as analyzer.BeginToken;
|
| - var openBracket = openBrace.next as analyzer.BeginToken;
|
| - var openParen = openBracket.next as analyzer.BeginToken;
|
| - var openLT = openParen.next as analyzer.BeginToken;
|
| + analyzer.BeginToken openBrace = scanWithListener('{[(<', listener);
|
| + analyzer.BeginToken openBracket = openBrace.next;
|
| + analyzer.BeginToken openParen = openBracket.next;
|
| + analyzer.BeginToken openLT = openParen.next;
|
| var closeParen = openLT.next;
|
| var closeBracket = closeParen.next;
|
| var closeBrace = closeBracket.next;
|
| @@ -169,6 +179,12 @@ class ScannerTest_Replacement extends ScannerTestBase {
|
| expect(openBracket.endGroup, same(closeBracket));
|
| expect(openParen.endGroup, same(closeParen));
|
| expect(eof.isEof, true);
|
| +
|
| + listener.assertErrors([
|
| + new TestError(2, ScannerErrorCode.EXPECTED_TOKEN, [')']),
|
| + new TestError(1, ScannerErrorCode.EXPECTED_TOKEN, [']']),
|
| + new TestError(0, ScannerErrorCode.EXPECTED_TOKEN, ['}']),
|
| + ]);
|
| }
|
|
|
| analyzer.Token _scan(String source,
|
|
|