| Index: pkg/analyzer_experimental/test/generated/scanner_test.dart
|
| ===================================================================
|
| --- pkg/analyzer_experimental/test/generated/scanner_test.dart (revision 23549)
|
| +++ pkg/analyzer_experimental/test/generated/scanner_test.dart (working copy)
|
| @@ -131,6 +131,7 @@
|
| });
|
| }
|
| }
|
| +
|
| /**
|
| * The class {@code TokenFactory} defines utility methods that can be used to create tokens.
|
| */
|
| @@ -139,11 +140,6 @@
|
| static Token token2(String lexeme) => new StringToken(TokenType.STRING, lexeme, 0);
|
| static Token token3(TokenType type) => new Token(type, 0);
|
| static Token token4(TokenType type, String lexeme) => new StringToken(type, lexeme, 0);
|
| - /**
|
| - * Prevent the creation of instances of this class.
|
| - */
|
| - TokenFactory() {
|
| - }
|
| }
|
| class CharBufferScannerTest extends AbstractScannerTest {
|
| Token scan(String source, GatheringErrorListener listener) {
|
| @@ -555,10 +551,18 @@
|
| final __test = new CharBufferScannerTest();
|
| runJUnitTest(__test, __test.test_keyword_with);
|
| });
|
| - _ut.test('test_lineInfo', () {
|
| + _ut.test('test_lineInfo_multilineComment', () {
|
| final __test = new CharBufferScannerTest();
|
| - runJUnitTest(__test, __test.test_lineInfo);
|
| + runJUnitTest(__test, __test.test_lineInfo_multilineComment);
|
| });
|
| + _ut.test('test_lineInfo_simpleClass', () {
|
| + final __test = new CharBufferScannerTest();
|
| + runJUnitTest(__test, __test.test_lineInfo_simpleClass);
|
| + });
|
| + _ut.test('test_lineInfo_slashN', () {
|
| + final __test = new CharBufferScannerTest();
|
| + runJUnitTest(__test, __test.test_lineInfo_slashN);
|
| + });
|
| _ut.test('test_lt', () {
|
| final __test = new CharBufferScannerTest();
|
| runJUnitTest(__test, __test.test_lt);
|
| @@ -739,6 +743,10 @@
|
| final __test = new CharBufferScannerTest();
|
| runJUnitTest(__test, __test.test_string_simple_escapedDollar);
|
| });
|
| + _ut.test('test_string_simple_interpolation_adjacentIdentifiers', () {
|
| + final __test = new CharBufferScannerTest();
|
| + runJUnitTest(__test, __test.test_string_simple_interpolation_adjacentIdentifiers);
|
| + });
|
| _ut.test('test_string_simple_interpolation_block', () {
|
| final __test = new CharBufferScannerTest();
|
| runJUnitTest(__test, __test.test_string_simple_interpolation_block);
|
| @@ -755,6 +763,14 @@
|
| final __test = new CharBufferScannerTest();
|
| runJUnitTest(__test, __test.test_string_simple_interpolation_identifier);
|
| });
|
| + _ut.test('test_string_simple_interpolation_missingIdentifier', () {
|
| + final __test = new CharBufferScannerTest();
|
| + runJUnitTest(__test, __test.test_string_simple_interpolation_missingIdentifier);
|
| + });
|
| + _ut.test('test_string_simple_interpolation_nonIdentifier', () {
|
| + final __test = new CharBufferScannerTest();
|
| + runJUnitTest(__test, __test.test_string_simple_interpolation_nonIdentifier);
|
| + });
|
| _ut.test('test_string_simple_single', () {
|
| final __test = new CharBufferScannerTest();
|
| runJUnitTest(__test, __test.test_string_simple_single);
|
| @@ -1206,10 +1222,18 @@
|
| final __test = new StringScannerTest();
|
| runJUnitTest(__test, __test.test_keyword_with);
|
| });
|
| - _ut.test('test_lineInfo', () {
|
| + _ut.test('test_lineInfo_multilineComment', () {
|
| final __test = new StringScannerTest();
|
| - runJUnitTest(__test, __test.test_lineInfo);
|
| + runJUnitTest(__test, __test.test_lineInfo_multilineComment);
|
| });
|
| + _ut.test('test_lineInfo_simpleClass', () {
|
| + final __test = new StringScannerTest();
|
| + runJUnitTest(__test, __test.test_lineInfo_simpleClass);
|
| + });
|
| + _ut.test('test_lineInfo_slashN', () {
|
| + final __test = new StringScannerTest();
|
| + runJUnitTest(__test, __test.test_lineInfo_slashN);
|
| + });
|
| _ut.test('test_lt', () {
|
| final __test = new StringScannerTest();
|
| runJUnitTest(__test, __test.test_lt);
|
| @@ -1394,6 +1418,10 @@
|
| final __test = new StringScannerTest();
|
| runJUnitTest(__test, __test.test_string_simple_escapedDollar);
|
| });
|
| + _ut.test('test_string_simple_interpolation_adjacentIdentifiers', () {
|
| + final __test = new StringScannerTest();
|
| + runJUnitTest(__test, __test.test_string_simple_interpolation_adjacentIdentifiers);
|
| + });
|
| _ut.test('test_string_simple_interpolation_block', () {
|
| final __test = new StringScannerTest();
|
| runJUnitTest(__test, __test.test_string_simple_interpolation_block);
|
| @@ -1410,6 +1438,14 @@
|
| final __test = new StringScannerTest();
|
| runJUnitTest(__test, __test.test_string_simple_interpolation_identifier);
|
| });
|
| + _ut.test('test_string_simple_interpolation_missingIdentifier', () {
|
| + final __test = new StringScannerTest();
|
| + runJUnitTest(__test, __test.test_string_simple_interpolation_missingIdentifier);
|
| + });
|
| + _ut.test('test_string_simple_interpolation_nonIdentifier', () {
|
| + final __test = new StringScannerTest();
|
| + runJUnitTest(__test, __test.test_string_simple_interpolation_nonIdentifier);
|
| + });
|
| _ut.test('test_string_simple_single', () {
|
| final __test = new StringScannerTest();
|
| runJUnitTest(__test, __test.test_string_simple_single);
|
| @@ -1441,11 +1477,13 @@
|
| });
|
| }
|
| }
|
| +
|
| /**
|
| * Instances of the class {@code TokenStreamValidator} are used to validate the correct construction
|
| * of a stream of tokens.
|
| */
|
| class TokenStreamValidator {
|
| +
|
| /**
|
| * Validate that the stream of tokens that starts with the given token is correct.
|
| * @param token the first token in the stream of tokens to be validated
|
| @@ -1802,16 +1840,18 @@
|
| void test_keyword_with() {
|
| assertKeywordToken("with");
|
| }
|
| - void test_lineInfo() {
|
| + void test_lineInfo_multilineComment() {
|
| String source = "/*\r *\r */";
|
| - GatheringErrorListener listener = new GatheringErrorListener();
|
| - Token token = scan(source, listener);
|
| - JUnitTestCase.assertSame(TokenType.MULTI_LINE_COMMENT, token.precedingComments.type);
|
| - listener.assertNoErrors();
|
| - LineInfo info = listener.getLineInfo(new TestSource());
|
| - JUnitTestCase.assertNotNull(info);
|
| - JUnitTestCase.assertEquals(3, info.getLocation(source.length - 1).lineNumber);
|
| + assertLineInfo(source, [new AbstractScannerTest_ExpectedLocation(0, 1, 1), new AbstractScannerTest_ExpectedLocation(4, 2, 2), new AbstractScannerTest_ExpectedLocation(source.length - 1, 3, 3)]);
|
| }
|
| + 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 AbstractScannerTest_ExpectedLocation(0, 1, 1), new AbstractScannerTest_ExpectedLocation(source.indexOf("MISSING_GETTER"), 3, 20), new AbstractScannerTest_ExpectedLocation(source.length - 1, 4, 1)]);
|
| + }
|
| + void test_lineInfo_slashN() {
|
| + String source = "class Test {\n}";
|
| + assertLineInfo(source, [new AbstractScannerTest_ExpectedLocation(0, 1, 1), new AbstractScannerTest_ExpectedLocation(source.indexOf("}"), 2, 1)]);
|
| + }
|
| void test_lt() {
|
| assertToken(TokenType.LT, "<");
|
| }
|
| @@ -1953,6 +1993,9 @@
|
| void test_string_simple_escapedDollar() {
|
| assertToken(TokenType.STRING, "'a\\\$b'");
|
| }
|
| + 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)]);
|
| + }
|
| 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)]);
|
| }
|
| @@ -1965,6 +2008,12 @@
|
| 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)]);
|
| }
|
| + 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)]);
|
| + }
|
| + 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)]);
|
| + }
|
| void test_string_simple_single() {
|
| assertToken(TokenType.STRING, "'string'");
|
| }
|
| @@ -1999,6 +2048,7 @@
|
| JUnitTestCase.assertEquals(source.length, comment.length);
|
| JUnitTestCase.assertEquals(source, comment.lexeme);
|
| }
|
| +
|
| /**
|
| * Assert that scanning the given source produces an error with the given code.
|
| * @param illegalCharacter
|
| @@ -2010,6 +2060,7 @@
|
| scan(source, listener);
|
| listener.assertErrors([new AnalysisError.con2(null, expectedOffset, 1, expectedError, [(source.codeUnitAt(expectedOffset) as int)])]);
|
| }
|
| +
|
| /**
|
| * Assert that when scanned the given source contains a single keyword token with the same lexeme
|
| * as the original source.
|
| @@ -2036,6 +2087,19 @@
|
| JUnitTestCase.assertEquals(source, ((value2 as Keyword)).syntax);
|
| JUnitTestCase.assertEquals(TokenType.EOF, token.next.type);
|
| }
|
| + void assertLineInfo(String source, List<AbstractScannerTest_ExpectedLocation> expectedLocations) {
|
| + GatheringErrorListener listener = new GatheringErrorListener();
|
| + scan(source, listener);
|
| + listener.assertNoErrors();
|
| + LineInfo info = listener.getLineInfo(new TestSource());
|
| + JUnitTestCase.assertNotNull(info);
|
| + for (AbstractScannerTest_ExpectedLocation expectedLocation in expectedLocations) {
|
| + LineInfo_Location location = info.getLocation(expectedLocation._offset);
|
| + JUnitTestCase.assertEquals(expectedLocation._lineNumber, location.lineNumber);
|
| + JUnitTestCase.assertEquals(expectedLocation._columnNumber, location.columnNumber);
|
| + }
|
| + }
|
| +
|
| /**
|
| * Assert that the token scanned from the given source has the expected type.
|
| * @param expectedType the expected type of the token
|
| @@ -2068,6 +2132,7 @@
|
| JUnitTestCase.assertEquals(TokenType.EOF, originalToken.next.type);
|
| return originalToken;
|
| }
|
| +
|
| /**
|
| * Assert that when scanned the given source contains a sequence of tokens identical to the given
|
| * tokens.
|
| @@ -2095,6 +2160,21 @@
|
| return token;
|
| }
|
| }
|
| +
|
| +/**
|
| + * Instances of the class {@code ExpectedLocation} encode information about the expected location
|
| + * of a given offset in source code.
|
| + */
|
| +class AbstractScannerTest_ExpectedLocation {
|
| + int _offset = 0;
|
| + int _lineNumber = 0;
|
| + int _columnNumber = 0;
|
| + AbstractScannerTest_ExpectedLocation(int offset, int lineNumber, int columnNumber) {
|
| + this._offset = offset;
|
| + this._lineNumber = lineNumber;
|
| + this._columnNumber = columnNumber;
|
| + }
|
| +}
|
| main() {
|
| CharBufferScannerTest.dartSuite();
|
| KeywordStateTest.dartSuite();
|
|
|