Index: pkg/analyzer/test/generated/scanner_test.dart |
diff --git a/pkg/analyzer/test/generated/scanner_test.dart b/pkg/analyzer/test/generated/scanner_test.dart |
index de61b9879fb678c40296eee59ff131f0f084340f..3801cc0d1ad27aced093d9262bff0a0f2dadd694 100644 |
--- a/pkg/analyzer/test/generated/scanner_test.dart |
+++ b/pkg/analyzer/test/generated/scanner_test.dart |
@@ -7,14 +7,24 @@ |
library engine.scanner_test; |
-import 'package:analyzer/src/generated/source.dart'; |
import 'package:analyzer/src/generated/error.dart'; |
import 'package:analyzer/src/generated/scanner.dart'; |
+import 'package:analyzer/src/generated/source.dart'; |
import 'package:analyzer/src/generated/utilities_collection.dart' show TokenMap; |
import 'package:unittest/unittest.dart'; |
-import 'test_support.dart'; |
+ |
import '../reflective_tests.dart'; |
+import 'test_support.dart'; |
+ |
+main() { |
+ groupSep = ' | '; |
+ runReflectiveTests(CharSequenceReaderTest); |
+ runReflectiveTests(IncrementalScannerTest); |
+ runReflectiveTests(KeywordStateTest); |
+ runReflectiveTests(ScannerTest); |
+ runReflectiveTests(TokenTypeTest); |
+} |
class CharSequenceReaderTest { |
void test_advance() { |
@@ -84,7 +94,8 @@ class IncrementalScannerTest extends EngineTestCase { |
void fail_insert_beginning() { |
// This is currently reporting the changed range as being from 0 to 5, but |
- // that would force us to re-parse both classes, which is clearly sub-optimal. |
+ // that would force us to re-parse both classes, which is clearly |
+ // sub-optimal. |
// |
// "class B {}" |
// "class A {} class B {}" |
@@ -178,7 +189,10 @@ class IncrementalScannerTest extends EngineTestCase { |
// "f() {}" |
// "f() => 0; g() {}" |
_scan("f()", "", " => 0; g()", " {}"); |
- _assertTokens(2, 9, ["f", "(", ")", "=>", "0", ";", "g", "(", ")", "{", "}"]); |
+ _assertTokens( |
+ 2, |
+ 9, |
+ ["f", "(", ")", "=>", "0", ";", "g", "(", ")", "{", "}"]); |
expect(_incrementalScanner.hasNonWhitespaceChange, isTrue); |
} |
@@ -499,24 +513,24 @@ a''', "", " ", " + b;"); |
// |
Token incrementalToken = _incrementalTokens; |
expect(incrementalToken, isNotNull); |
- while (incrementalToken.type != TokenType.EOF |
- && modifiedTokens.type != TokenType.EOF) { |
+ while (incrementalToken.type != TokenType.EOF && |
+ modifiedTokens.type != TokenType.EOF) { |
expect( |
incrementalToken.type, |
same(modifiedTokens.type), |
reason: "Wrong type for token"); |
expect( |
incrementalToken.offset, |
- modifiedTokens.offset, |
- reason: "Wrong offset for token"); |
+ modifiedTokens.offset, |
+ reason: "Wrong offset for token"); |
expect( |
incrementalToken.length, |
- modifiedTokens.length, |
- reason: "Wrong length for token"); |
+ modifiedTokens.length, |
+ reason: "Wrong length for token"); |
expect( |
incrementalToken.lexeme, |
- modifiedTokens.lexeme, |
- reason: "Wrong lexeme for token"); |
+ modifiedTokens.lexeme, |
+ reason: "Wrong lexeme for token"); |
incrementalToken = incrementalToken.next; |
modifiedTokens = modifiedTokens.next; |
} |
@@ -578,10 +592,14 @@ class KeywordStateTest { |
class ScannerTest { |
void fail_incomplete_string_interpolation() { |
// https://code.google.com/p/dart/issues/detail?id=18073 |
- _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 9, "\"foo \${bar", [ |
- new StringToken(TokenType.STRING, "\"foo ", 0), |
- new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 5), |
- new StringToken(TokenType.IDENTIFIER, "bar", 7)]); |
+ _assertErrorAndTokens( |
+ ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
+ 9, |
+ "\"foo \${bar", |
+ [ |
+ new StringToken(TokenType.STRING, "\"foo ", 0), |
+ new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 5), |
+ new StringToken(TokenType.IDENTIFIER, "bar", 7)]); |
} |
void test_ampersand() { |
@@ -657,7 +675,10 @@ class ScannerTest { |
} |
void test_comment_disabled_multi() { |
- Scanner scanner = new Scanner(null, new CharSequenceReader("/* comment */ "), AnalysisErrorListener.NULL_LISTENER); |
+ Scanner scanner = new Scanner( |
+ null, |
+ new CharSequenceReader("/* comment */ "), |
+ AnalysisErrorListener.NULL_LISTENER); |
scanner.preserveComments = false; |
Token token = scanner.tokenize(); |
expect(token, isNotNull); |
@@ -673,7 +694,9 @@ class ScannerTest { |
} |
void test_comment_nested() { |
- _assertComment(TokenType.MULTI_LINE_COMMENT, "/* comment /* within a */ comment */"); |
+ _assertComment( |
+ TokenType.MULTI_LINE_COMMENT, |
+ "/* comment /* within a */ comment */"); |
} |
void test_comment_single() { |
@@ -978,33 +1001,42 @@ class ScannerTest { |
void test_lineInfo_multilineComment() { |
String source = "/*\r *\r */"; |
- _assertLineInfo(source, [ |
- new ScannerTest_ExpectedLocation(0, 1, 1), |
- new ScannerTest_ExpectedLocation(4, 2, 2), |
- new ScannerTest_ExpectedLocation(source.length - 1, 3, 3)]); |
+ _assertLineInfo( |
+ source, |
+ [ |
+ new ScannerTest_ExpectedLocation(0, 1, 1), |
+ new ScannerTest_ExpectedLocation(4, 2, 2), |
+ new ScannerTest_ExpectedLocation(source.length - 1, 3, 3)]); |
} |
void test_lineInfo_multilineString() { |
String source = "'''a\r\nbc\r\nd'''"; |
- _assertLineInfo(source, [ |
- new ScannerTest_ExpectedLocation(0, 1, 1), |
- new ScannerTest_ExpectedLocation(7, 2, 2), |
- new ScannerTest_ExpectedLocation(source.length - 1, 3, 4)]); |
+ _assertLineInfo( |
+ source, |
+ [ |
+ new ScannerTest_ExpectedLocation(0, 1, 1), |
+ new ScannerTest_ExpectedLocation(7, 2, 2), |
+ new ScannerTest_ExpectedLocation(source.length - 1, 3, 4)]); |
} |
void test_lineInfo_simpleClass() { |
- String source = "class Test {\r\n String s = '...';\r\n int get x => s.MISSING_GETTER;\r\n}"; |
- _assertLineInfo(source, [ |
- new ScannerTest_ExpectedLocation(0, 1, 1), |
- new ScannerTest_ExpectedLocation(source.indexOf("MISSING_GETTER"), 3, 20), |
- new ScannerTest_ExpectedLocation(source.length - 1, 4, 1)]); |
+ String source = |
+ "class Test {\r\n String s = '...';\r\n int get x => s.MISSING_GETTER;\r\n}"; |
+ _assertLineInfo( |
+ source, |
+ [ |
+ new ScannerTest_ExpectedLocation(0, 1, 1), |
+ new ScannerTest_ExpectedLocation(source.indexOf("MISSING_GETTER"), 3, 20), |
+ new ScannerTest_ExpectedLocation(source.length - 1, 4, 1)]); |
} |
void test_lineInfo_slashN() { |
String source = "class Test {\n}"; |
- _assertLineInfo(source, [ |
- new ScannerTest_ExpectedLocation(0, 1, 1), |
- new ScannerTest_ExpectedLocation(source.indexOf("}"), 2, 1)]); |
+ _assertLineInfo( |
+ source, |
+ [ |
+ new ScannerTest_ExpectedLocation(0, 1, 1), |
+ new ScannerTest_ExpectedLocation(source.indexOf("}"), 2, 1)]); |
} |
void test_lt() { |
@@ -1072,21 +1104,25 @@ class ScannerTest { |
} |
void test_periodAfterNumberNotIncluded_identifier() { |
- _assertTokens("42.isEven()", [ |
- new StringToken(TokenType.INT, "42", 0), |
- new Token(TokenType.PERIOD, 2), |
- new StringToken(TokenType.IDENTIFIER, "isEven", 3), |
- new Token(TokenType.OPEN_PAREN, 9), |
- new Token(TokenType.CLOSE_PAREN, 10)]); |
+ _assertTokens( |
+ "42.isEven()", |
+ [ |
+ new StringToken(TokenType.INT, "42", 0), |
+ new Token(TokenType.PERIOD, 2), |
+ new StringToken(TokenType.IDENTIFIER, "isEven", 3), |
+ new Token(TokenType.OPEN_PAREN, 9), |
+ new Token(TokenType.CLOSE_PAREN, 10)]); |
} |
void test_periodAfterNumberNotIncluded_period() { |
- _assertTokens("42..isEven()", [ |
- new StringToken(TokenType.INT, "42", 0), |
- new Token(TokenType.PERIOD_PERIOD, 2), |
- new StringToken(TokenType.IDENTIFIER, "isEven", 4), |
- new Token(TokenType.OPEN_PAREN, 10), |
- new Token(TokenType.CLOSE_PAREN, 11)]); |
+ _assertTokens( |
+ "42..isEven()", |
+ [ |
+ new StringToken(TokenType.INT, "42", 0), |
+ new Token(TokenType.PERIOD_PERIOD, 2), |
+ new StringToken(TokenType.IDENTIFIER, "isEven", 4), |
+ new Token(TokenType.OPEN_PAREN, 10), |
+ new Token(TokenType.CLOSE_PAREN, 11)]); |
} |
void test_plus() { |
@@ -1124,7 +1160,8 @@ class ScannerTest { |
void test_setSourceStart() { |
int offsetDelta = 42; |
GatheringErrorListener listener = new GatheringErrorListener(); |
- Scanner scanner = new Scanner(null, new SubSequenceReader("a", offsetDelta), listener); |
+ Scanner scanner = |
+ new Scanner(null, new SubSequenceReader("a", offsetDelta), listener); |
scanner.setSourceStart(3, 9); |
scanner.tokenize(); |
List<int> lineStarts = scanner.lineStarts; |
@@ -1172,20 +1209,24 @@ class ScannerTest { |
} |
void test_string_multi_interpolation_block() { |
- _assertTokens("\"Hello \${name}!\"", [ |
- new StringToken(TokenType.STRING, "\"Hello ", 0), |
- new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 7), |
- new StringToken(TokenType.IDENTIFIER, "name", 9), |
- new Token(TokenType.CLOSE_CURLY_BRACKET, 13), |
- new StringToken(TokenType.STRING, "!\"", 14)]); |
+ _assertTokens( |
+ "\"Hello \${name}!\"", |
+ [ |
+ new StringToken(TokenType.STRING, "\"Hello ", 0), |
+ new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 7), |
+ new StringToken(TokenType.IDENTIFIER, "name", 9), |
+ new Token(TokenType.CLOSE_CURLY_BRACKET, 13), |
+ new StringToken(TokenType.STRING, "!\"", 14)]); |
} |
void test_string_multi_interpolation_identifier() { |
- _assertTokens("\"Hello \$name!\"", [ |
- new StringToken(TokenType.STRING, "\"Hello ", 0), |
- new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 7), |
- new StringToken(TokenType.IDENTIFIER, "name", 8), |
- new StringToken(TokenType.STRING, "!\"", 12)]); |
+ _assertTokens( |
+ "\"Hello \$name!\"", |
+ [ |
+ new StringToken(TokenType.STRING, "\"Hello ", 0), |
+ new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 7), |
+ new StringToken(TokenType.IDENTIFIER, "name", 8), |
+ new StringToken(TokenType.STRING, "!\"", 12)]); |
} |
void test_string_multi_single() { |
@@ -1197,23 +1238,35 @@ class ScannerTest { |
} |
void test_string_multi_unterminated() { |
- _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 8, "'''string", [new StringToken(TokenType.STRING, "'''string", 0)]); |
+ _assertErrorAndTokens( |
+ ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
+ 8, |
+ "'''string", |
+ [new StringToken(TokenType.STRING, "'''string", 0)]); |
} |
void test_string_multi_unterminated_interpolation_block() { |
- _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 8, "'''\${name", [ |
- new StringToken(TokenType.STRING, "'''", 0), |
- new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 3), |
- new StringToken(TokenType.IDENTIFIER, "name", 5), |
- new StringToken(TokenType.STRING, "", 9)]); |
+ _assertErrorAndTokens( |
+ ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
+ 8, |
+ "'''\${name", |
+ [ |
+ new StringToken(TokenType.STRING, "'''", 0), |
+ new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 3), |
+ new StringToken(TokenType.IDENTIFIER, "name", 5), |
+ new StringToken(TokenType.STRING, "", 9)]); |
} |
void test_string_multi_unterminated_interpolation_identifier() { |
- _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 7, "'''\$name", [ |
- new StringToken(TokenType.STRING, "'''", 0), |
- new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 3), |
- new StringToken(TokenType.IDENTIFIER, "name", 4), |
- new StringToken(TokenType.STRING, "", 8)]); |
+ _assertErrorAndTokens( |
+ ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
+ 7, |
+ "'''\$name", |
+ [ |
+ new StringToken(TokenType.STRING, "'''", 0), |
+ new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 3), |
+ new StringToken(TokenType.IDENTIFIER, "name", 4), |
+ new StringToken(TokenType.STRING, "", 8)]); |
} |
void test_string_raw_multi_double() { |
@@ -1226,7 +1279,11 @@ class ScannerTest { |
void test_string_raw_multi_unterminated() { |
String source = "r'''string"; |
- _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 9, source, [new StringToken(TokenType.STRING, source, 0)]); |
+ _assertErrorAndTokens( |
+ ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
+ 9, |
+ source, |
+ [new StringToken(TokenType.STRING, source, 0)]); |
} |
void test_string_raw_simple_double() { |
@@ -1239,12 +1296,20 @@ class ScannerTest { |
void test_string_raw_simple_unterminated_eof() { |
String source = "r'string"; |
- _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 7, source, [new StringToken(TokenType.STRING, source, 0)]); |
+ _assertErrorAndTokens( |
+ ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
+ 7, |
+ source, |
+ [new StringToken(TokenType.STRING, source, 0)]); |
} |
void test_string_raw_simple_unterminated_eol() { |
String source = "r'string"; |
- _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 8, "$source\n", [new StringToken(TokenType.STRING, source, 0)]); |
+ _assertErrorAndTokens( |
+ ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
+ 8, |
+ "$source\n", |
+ [new StringToken(TokenType.STRING, source, 0)]); |
} |
void test_string_simple_double() { |
@@ -1256,75 +1321,89 @@ class ScannerTest { |
} |
void test_string_simple_interpolation_adjacentIdentifiers() { |
- _assertTokens("'\$a\$b'", [ |
- new StringToken(TokenType.STRING, "'", 0), |
- new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1), |
- new StringToken(TokenType.IDENTIFIER, "a", 2), |
- new StringToken(TokenType.STRING, "", 3), |
- new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 3), |
- new StringToken(TokenType.IDENTIFIER, "b", 4), |
- new StringToken(TokenType.STRING, "'", 5)]); |
+ _assertTokens( |
+ "'\$a\$b'", |
+ [ |
+ new StringToken(TokenType.STRING, "'", 0), |
+ new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1), |
+ new StringToken(TokenType.IDENTIFIER, "a", 2), |
+ new StringToken(TokenType.STRING, "", 3), |
+ new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 3), |
+ new StringToken(TokenType.IDENTIFIER, "b", 4), |
+ new StringToken(TokenType.STRING, "'", 5)]); |
} |
void test_string_simple_interpolation_block() { |
- _assertTokens("'Hello \${name}!'", [ |
- new StringToken(TokenType.STRING, "'Hello ", 0), |
- new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 7), |
- new StringToken(TokenType.IDENTIFIER, "name", 9), |
- new Token(TokenType.CLOSE_CURLY_BRACKET, 13), |
- new StringToken(TokenType.STRING, "!'", 14)]); |
+ _assertTokens( |
+ "'Hello \${name}!'", |
+ [ |
+ new StringToken(TokenType.STRING, "'Hello ", 0), |
+ new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 7), |
+ new StringToken(TokenType.IDENTIFIER, "name", 9), |
+ new Token(TokenType.CLOSE_CURLY_BRACKET, 13), |
+ new StringToken(TokenType.STRING, "!'", 14)]); |
} |
void test_string_simple_interpolation_blockWithNestedMap() { |
- _assertTokens("'a \${f({'b' : 'c'})} d'", [ |
- new StringToken(TokenType.STRING, "'a ", 0), |
- new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 3), |
- new StringToken(TokenType.IDENTIFIER, "f", 5), |
- new Token(TokenType.OPEN_PAREN, 6), |
- new Token(TokenType.OPEN_CURLY_BRACKET, 7), |
- new StringToken(TokenType.STRING, "'b'", 8), |
- new Token(TokenType.COLON, 12), |
- new StringToken(TokenType.STRING, "'c'", 14), |
- new Token(TokenType.CLOSE_CURLY_BRACKET, 17), |
- new Token(TokenType.CLOSE_PAREN, 18), |
- new Token(TokenType.CLOSE_CURLY_BRACKET, 19), |
- new StringToken(TokenType.STRING, " d'", 20)]); |
+ _assertTokens( |
+ "'a \${f({'b' : 'c'})} d'", |
+ [ |
+ new StringToken(TokenType.STRING, "'a ", 0), |
+ new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 3), |
+ new StringToken(TokenType.IDENTIFIER, "f", 5), |
+ new Token(TokenType.OPEN_PAREN, 6), |
+ new Token(TokenType.OPEN_CURLY_BRACKET, 7), |
+ new StringToken(TokenType.STRING, "'b'", 8), |
+ new Token(TokenType.COLON, 12), |
+ new StringToken(TokenType.STRING, "'c'", 14), |
+ new Token(TokenType.CLOSE_CURLY_BRACKET, 17), |
+ new Token(TokenType.CLOSE_PAREN, 18), |
+ new Token(TokenType.CLOSE_CURLY_BRACKET, 19), |
+ new StringToken(TokenType.STRING, " d'", 20)]); |
} |
void test_string_simple_interpolation_firstAndLast() { |
- _assertTokens("'\$greeting \$name'", [ |
- new StringToken(TokenType.STRING, "'", 0), |
- new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1), |
- new StringToken(TokenType.IDENTIFIER, "greeting", 2), |
- new StringToken(TokenType.STRING, " ", 10), |
- new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 11), |
- new StringToken(TokenType.IDENTIFIER, "name", 12), |
- new StringToken(TokenType.STRING, "'", 16)]); |
+ _assertTokens( |
+ "'\$greeting \$name'", |
+ [ |
+ new StringToken(TokenType.STRING, "'", 0), |
+ new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1), |
+ new StringToken(TokenType.IDENTIFIER, "greeting", 2), |
+ new StringToken(TokenType.STRING, " ", 10), |
+ new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 11), |
+ new StringToken(TokenType.IDENTIFIER, "name", 12), |
+ new StringToken(TokenType.STRING, "'", 16)]); |
} |
void test_string_simple_interpolation_identifier() { |
- _assertTokens("'Hello \$name!'", [ |
- new StringToken(TokenType.STRING, "'Hello ", 0), |
- new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 7), |
- new StringToken(TokenType.IDENTIFIER, "name", 8), |
- new StringToken(TokenType.STRING, "!'", 12)]); |
+ _assertTokens( |
+ "'Hello \$name!'", |
+ [ |
+ new StringToken(TokenType.STRING, "'Hello ", 0), |
+ new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 7), |
+ new StringToken(TokenType.IDENTIFIER, "name", 8), |
+ new StringToken(TokenType.STRING, "!'", 12)]); |
} |
void test_string_simple_interpolation_missingIdentifier() { |
- _assertTokens("'\$x\$'", [ |
- new StringToken(TokenType.STRING, "'", 0), |
- new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1), |
- new StringToken(TokenType.IDENTIFIER, "x", 2), |
- new StringToken(TokenType.STRING, "", 3), |
- new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 3), |
- new StringToken(TokenType.STRING, "'", 4)]); |
+ _assertTokens( |
+ "'\$x\$'", |
+ [ |
+ new StringToken(TokenType.STRING, "'", 0), |
+ new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1), |
+ new StringToken(TokenType.IDENTIFIER, "x", 2), |
+ new StringToken(TokenType.STRING, "", 3), |
+ new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 3), |
+ new StringToken(TokenType.STRING, "'", 4)]); |
} |
void test_string_simple_interpolation_nonIdentifier() { |
- _assertTokens("'\$1'", [ |
- new StringToken(TokenType.STRING, "'", 0), |
- new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1), |
- new StringToken(TokenType.STRING, "1'", 2)]); |
+ _assertTokens( |
+ "'\$1'", |
+ [ |
+ new StringToken(TokenType.STRING, "'", 0), |
+ new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1), |
+ new StringToken(TokenType.STRING, "1'", 2)]); |
} |
void test_string_simple_single() { |
@@ -1333,28 +1412,44 @@ class ScannerTest { |
void test_string_simple_unterminated_eof() { |
String source = "'string"; |
- _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 6, source, [new StringToken(TokenType.STRING, source, 0)]); |
+ _assertErrorAndTokens( |
+ ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
+ 6, |
+ source, |
+ [new StringToken(TokenType.STRING, source, 0)]); |
} |
void test_string_simple_unterminated_eol() { |
String source = "'string"; |
- _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 7, "$source\r", [new StringToken(TokenType.STRING, source, 0)]); |
+ _assertErrorAndTokens( |
+ ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
+ 7, |
+ "$source\r", |
+ [new StringToken(TokenType.STRING, source, 0)]); |
} |
void test_string_simple_unterminated_interpolation_block() { |
- _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 6, "'\${name", [ |
- new StringToken(TokenType.STRING, "'", 0), |
- new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 1), |
- new StringToken(TokenType.IDENTIFIER, "name", 3), |
- new StringToken(TokenType.STRING, "", 7)]); |
+ _assertErrorAndTokens( |
+ ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
+ 6, |
+ "'\${name", |
+ [ |
+ new StringToken(TokenType.STRING, "'", 0), |
+ new StringToken(TokenType.STRING_INTERPOLATION_EXPRESSION, "\${", 1), |
+ new StringToken(TokenType.IDENTIFIER, "name", 3), |
+ new StringToken(TokenType.STRING, "", 7)]); |
} |
void test_string_simple_unterminated_interpolation_identifier() { |
- _assertErrorAndTokens(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, 5, "'\$name", [ |
- new StringToken(TokenType.STRING, "'", 0), |
- new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1), |
- new StringToken(TokenType.IDENTIFIER, "name", 2), |
- new StringToken(TokenType.STRING, "", 6)]); |
+ _assertErrorAndTokens( |
+ ScannerErrorCode.UNTERMINATED_STRING_LITERAL, |
+ 5, |
+ "'\$name", |
+ [ |
+ new StringToken(TokenType.STRING, "'", 0), |
+ new StringToken(TokenType.STRING_INTERPOLATION_IDENTIFIER, "\$", 1), |
+ new StringToken(TokenType.IDENTIFIER, "name", 2), |
+ new StringToken(TokenType.STRING, "", 6)]); |
} |
void test_tilde() { |
@@ -1408,10 +1503,18 @@ class ScannerTest { |
* @param expectedOffset the string offset that should be associated with the error |
* @param source the source to be scanned to produce the error |
*/ |
- void _assertError(ScannerErrorCode expectedError, int expectedOffset, String source) { |
+ void _assertError(ScannerErrorCode expectedError, int expectedOffset, |
+ String source) { |
GatheringErrorListener listener = new GatheringErrorListener(); |
_scanWithListener(source, listener); |
- listener.assertErrors([new AnalysisError.con2(null, expectedOffset, 1, expectedError, [source.codeUnitAt(expectedOffset)])]); |
+ listener.assertErrors( |
+ [ |
+ new AnalysisError.con2( |
+ null, |
+ expectedOffset, |
+ 1, |
+ expectedError, |
+ [source.codeUnitAt(expectedOffset)])]); |
} |
/** |
@@ -1423,10 +1526,18 @@ class ScannerTest { |
* @param source the source to be scanned to produce the error |
* @param expectedTokens the tokens that are expected to be in the source |
*/ |
- void _assertErrorAndTokens(ScannerErrorCode expectedError, int expectedOffset, String source, List<Token> expectedTokens) { |
+ void _assertErrorAndTokens(ScannerErrorCode expectedError, int expectedOffset, |
+ String source, List<Token> expectedTokens) { |
GatheringErrorListener listener = new GatheringErrorListener(); |
Token token = _scanWithListener(source, listener); |
- listener.assertErrors([new AnalysisError.con2(null, expectedOffset, 1, expectedError, [source.codeUnitAt(expectedOffset)])]); |
+ listener.assertErrors( |
+ [ |
+ new AnalysisError.con2( |
+ null, |
+ expectedOffset, |
+ 1, |
+ expectedError, |
+ [source.codeUnitAt(expectedOffset)])]); |
_checkTokens(token, expectedTokens); |
} |
@@ -1458,7 +1569,8 @@ class ScannerTest { |
expect(token.next.type, TokenType.EOF); |
} |
- void _assertLineInfo(String source, List<ScannerTest_ExpectedLocation> expectedLocations) { |
+ void _assertLineInfo(String source, |
+ List<ScannerTest_ExpectedLocation> expectedLocations) { |
GatheringErrorListener listener = new GatheringErrorListener(); |
_scanWithListener(source, listener); |
listener.assertNoErrors(); |
@@ -1485,7 +1597,8 @@ class ScannerTest { |
expect(originalToken.length, source.length); |
expect(originalToken.lexeme, source); |
if (expectedType == TokenType.SCRIPT_TAG) { |
- // Adding space before the script tag is not allowed, and adding text at the end changes nothing. |
+ // Adding space before the script tag is not allowed, and adding text at |
+ // the end changes nothing. |
return originalToken; |
} else if (expectedType == TokenType.SINGLE_LINE_COMMENT) { |
// Adding space to an end-of-line comment changes the comment. |
@@ -1496,7 +1609,8 @@ class ScannerTest { |
expect(tokenWithSpaces.length, source.length); |
expect(tokenWithSpaces.lexeme, source); |
return originalToken; |
- } else if (expectedType == TokenType.INT || expectedType == TokenType.DOUBLE) { |
+ } else if (expectedType == TokenType.INT || |
+ expectedType == TokenType.DOUBLE) { |
Token tokenWithLowerD = _scan("${source}d"); |
expect(tokenWithLowerD, isNotNull); |
expect(tokenWithLowerD.type, expectedType); |
@@ -1538,9 +1652,18 @@ class ScannerTest { |
for (int i = 0; i < expectedTokens.length; i++) { |
Token expectedToken = expectedTokens[i]; |
expect(token.type, expectedToken.type, reason: "Wrong type for token $i"); |
- expect(token.offset, expectedToken.offset, reason: "Wrong offset for token $i"); |
- expect(token.length, expectedToken.length, reason: "Wrong length for token $i"); |
- expect(token.lexeme, expectedToken.lexeme, reason: "Wrong lexeme for token $i"); |
+ expect( |
+ token.offset, |
+ expectedToken.offset, |
+ reason: "Wrong offset for token $i"); |
+ expect( |
+ token.length, |
+ expectedToken.length, |
+ reason: "Wrong length for token $i"); |
+ expect( |
+ token.lexeme, |
+ expectedToken.lexeme, |
+ reason: "Wrong lexeme for token $i"); |
token = token.next; |
expect(token, isNotNull); |
} |
@@ -1555,7 +1678,8 @@ class ScannerTest { |
} |
Token _scanWithListener(String source, GatheringErrorListener listener) { |
- Scanner scanner = new Scanner(null, new CharSequenceReader(source), listener); |
+ Scanner scanner = |
+ new Scanner(null, new CharSequenceReader(source), listener); |
Token result = scanner.tokenize(); |
listener.setLineInfo(new TestSource(), scanner.lineStarts); |
return result; |
@@ -1573,7 +1697,8 @@ class ScannerTest_ExpectedLocation { |
final int _columnNumber; |
- ScannerTest_ExpectedLocation(this._offset, this._lineNumber, this._columnNumber); |
+ ScannerTest_ExpectedLocation(this._offset, this._lineNumber, |
+ this._columnNumber); |
} |
/** |
@@ -1604,7 +1729,10 @@ class TokenStreamValidator { |
while (currentToken != null && currentToken.type != TokenType.EOF) { |
_validateStream(buffer, currentToken.precedingComments); |
TokenType type = currentToken.type; |
- if (type == TokenType.OPEN_CURLY_BRACKET || type == TokenType.OPEN_PAREN || type == TokenType.OPEN_SQUARE_BRACKET || type == TokenType.STRING_INTERPOLATION_EXPRESSION) { |
+ if (type == TokenType.OPEN_CURLY_BRACKET || |
+ type == TokenType.OPEN_PAREN || |
+ type == TokenType.OPEN_SQUARE_BRACKET || |
+ type == TokenType.STRING_INTERPOLATION_EXPRESSION) { |
if (currentToken is! BeginToken) { |
buffer.write("\r\nExpected BeginToken, found "); |
buffer.write(currentToken.runtimeType.toString()); |
@@ -1706,12 +1834,3 @@ class TokenTypeTest extends EngineTestCase { |
expect(TokenType.TILDE_SLASH.isUserDefinableOperator, isTrue); |
} |
} |
- |
-main() { |
- groupSep = ' | '; |
- runReflectiveTests(CharSequenceReaderTest); |
- runReflectiveTests(IncrementalScannerTest); |
- runReflectiveTests(KeywordStateTest); |
- runReflectiveTests(ScannerTest); |
- runReflectiveTests(TokenTypeTest); |
-} |