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, |