Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(106)

Unified Diff: pkg/analyzer/test/generated/parser_test.dart

Issue 2330803002: Remove IncrementalScanner and IncrementalParser. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer/test/generated/parser_test.dart
diff --git a/pkg/analyzer/test/generated/parser_test.dart b/pkg/analyzer/test/generated/parser_test.dart
index 596fb0e1cd48599a05e78fe4189777bdbfb9b334..38d3464b32a06a32fb6f287e192eb079f10a5260 100644
--- a/pkg/analyzer/test/generated/parser_test.dart
+++ b/pkg/analyzer/test/generated/parser_test.dart
@@ -8,14 +8,10 @@ import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/token.dart';
import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/src/dart/ast/token.dart';
-import 'package:analyzer/src/dart/ast/utilities.dart';
import 'package:analyzer/src/dart/scanner/reader.dart';
import 'package:analyzer/src/dart/scanner/scanner.dart';
-import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/error.dart';
-import 'package:analyzer/src/generated/incremental_scanner.dart';
import 'package:analyzer/src/generated/parser.dart';
-import 'package:analyzer/src/generated/source.dart' show Source;
import 'package:analyzer/src/generated/testing/ast_factory.dart';
import 'package:analyzer/src/generated/testing/token_factory.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
@@ -29,8 +25,6 @@ main() {
initializeTestEnvironment();
defineReflectiveTests(ComplexParserTest);
defineReflectiveTests(ErrorParserTest);
- // ignore: deprecated_member_use
- defineReflectiveTests(IncrementalParserTest);
defineReflectiveTests(NonErrorParserTest);
defineReflectiveTests(RecoveryParserTest);
defineReflectiveTests(SimpleParserTest);
@@ -2367,383 +2361,6 @@ void main() {
}
}
-@deprecated
-@reflectiveTest
-class IncrementalParserTest extends EngineTestCase {
- void fail_replace_identifier_with_functionLiteral_in_initializer_interp() {
- // TODO(paulberry, brianwilkerson): broken due to incremental scanning bugs
-
- // Function literals are allowed inside interpolation expressions in
- // initializers.
- //
- // 'class A { var a; A(b) : a = "${b}";'
- // 'class A { var a; A(b) : a = "${() {}}";'
- _assertParse(r'class A { var a; A(b) : a = "${', 'b', '() {}', '}";');
- }
-
- void test_delete_everything() {
- // "f() => a + b;"
- // ""
- _assertParse("", "f() => a + b;", "", "");
- }
-
- void test_delete_identifier_beginning() {
- // "f() => abs + b;"
- // "f() => s + b;"
- _assertParse("f() => ", "ab", "", "s + b;");
- }
-
- void test_delete_identifier_end() {
- // "f() => abs + b;"
- // "f() => a + b;"
- _assertParse("f() => a", "bs", "", " + b;");
- }
-
- void test_delete_identifier_middle() {
- // "f() => abs + b;"
- // "f() => as + b;"
- _assertParse("f() => a", "b", "", "s + b;");
- }
-
- void test_delete_mergeTokens() {
- // "f() => a + b + c;"
- // "f() => ac;"
- _assertParse("f() => a", " + b + ", "", "c;");
- }
-
- void test_insert_afterIdentifier1() {
- // "f() => a + b;"
- // "f() => abs + b;"
- _assertParse("f() => a", "", "bs", " + b;");
- }
-
- void test_insert_afterIdentifier2() {
- // "f() => a + b;"
- // "f() => a + bar;"
- _assertParse("f() => a + b", "", "ar", ";");
- }
-
- void test_insert_beforeIdentifier1() {
- // "f() => a + b;"
- // "f() => xa + b;"
- _assertParse("f() => ", "", "x", "a + b;");
- }
-
- void test_insert_beforeIdentifier2() {
- // "f() => a + b;"
- // "f() => a + xb;"
- _assertParse("f() => a + ", "", "x", "b;");
- }
-
- void test_insert_convertOneFunctionToTwo() {
- // "f() {}"
- // "f() => 0; g() {}"
- _assertParse("f()", "", " => 0; g()", " {}");
- }
-
- void test_insert_end() {
- // "class A {}"
- // "class A {} class B {}"
- _assertParse("class A {}", "", " class B {}", "");
- }
-
- void test_insert_final_before_field_declaration() {
- _assertParse('class C { ', '', 'final ', 'int x; }');
- }
-
- void test_insert_function_parameter() {
- _assertParse('class C { void f(', '', 'arg', ') {} }');
- }
-
- void test_insert_identifier_inCombinator() {
- _assertParse("import 'foo.dart' show x", "", ", y", ";");
- }
-
- void test_insert_insideClassBody() {
- // "class C {C(); }"
- // "class C { C(); }"
- _assertParse("class C {", "", " ", "C(); }");
- }
-
- void test_insert_insideIdentifier() {
- // "f() => cob;"
- // "f() => cow.b;"
- _assertParse("f() => co", "", "w.", "b;");
- }
-
- void test_insert_newIdentifier1() {
- // "f() => a; c;"
- // "f() => a; b c;"
- _assertParse("f() => a;", "", " b", " c;");
- }
-
- void test_insert_newIdentifier2() {
- // "f() => a; c;"
- // "f() => a;b c;"
- _assertParse("f() => a;", "", "b", " c;");
- }
-
- void test_insert_newIdentifier3() {
- // "/** A simple function. */ f() => a; c;"
- // "/** A simple function. */ f() => a; b c;"
- _assertParse("/** A simple function. */ f() => a;", "", " b", " c;");
- }
-
- void test_insert_newIdentifier4() {
- // "/** An [A]. */ class A {} class B { m() { return 1; } }"
- // "/** An [A]. */ class A {} class B { m() { return 1 + 2; } }"
- _assertParse("/** An [A]. */ class A {} class B { m() { return 1", "",
- " + 2", "; } }");
- }
-
- void test_insert_period() {
- // "f() => a + b;"
- // "f() => a + b.;"
- _assertParse("f() => a + b", "", ".", ";");
- }
-
- void test_insert_period_betweenIdentifiers1() {
- // "f() => a b;"
- // "f() => a. b;"
- _assertParse("f() => a", "", ".", " b;");
- }
-
- void test_insert_period_betweenIdentifiers2() {
- // "f() => a b;"
- // "f() => a .b;"
- _assertParse("f() => a ", "", ".", "b;");
- }
-
- void test_insert_period_betweenIdentifiers3() {
- // "f() => a b;"
- // "f() => a . b;"
- _assertParse("f() => a ", "", ".", " b;");
- }
-
- void test_insert_period_insideExistingIdentifier() {
- // "f() => ab;"
- // "f() => a.b;"
- _assertParse("f() => a", "", ".", "b;");
- }
-
- void test_insert_periodAndIdentifier() {
- // "f() => a + b;"
- // "f() => a + b.x;"
- _assertParse("f() => a + b", "", ".x", ";");
- }
-
- void test_insert_simpleToComplexExression() {
- // "/** An [A]. */ class A {} class B { m() => 1; }"
- // "/** An [A]. */ class A {} class B { m() => 1 + 2; }"
- _assertParse(
- "/** An [A]. */ class A {} class B { m() => 1", "", " + 2", "; }");
- }
-
- void test_insert_statement_in_method_with_mismatched_braces() {
- _assertParse(
- '''
-class C {
- void f() {
-''',
- '',
- 'g();',
- '''
- if (b) {
-
-
- }
-
- void g() {
- h((x) {});
- }
-}
-''');
- }
-
- void test_insert_whitespace_end() {
- // "f() => a + b;"
- // "f() => a + b; "
- _assertParse("f() => a + b;", "", " ", "");
- }
-
- void test_insert_whitespace_end_multiple() {
- // "f() => a + b;"
- // "f() => a + b; "
- _assertParse("f() => a + b;", "", " ", "");
- }
-
- void test_insert_whitespace_middle() {
- // "f() => a + b;"
- // "f() => a + b;"
- _assertParse("f() => a", "", " ", " + b;");
- }
-
- void test_rename_class_withConstructor() {
- // "class C { C() {} }"
- // "class D { C() {} }"
- _assertParse('class ', 'C', 'D', ' { C() {} }');
- }
-
- void test_replace_field_type_with_void() {
- // Note: this produces an error, but we still need the parser to produce a
- // consistent parse tree for it.
- _assertParse('class C { ', 'int', 'void', ' x; }');
- }
-
- void test_replace_identifier_beginning() {
- // "f() => bell + b;"
- // "f() => fell + b;"
- _assertParse("f() => ", "b", "f", "ell + b;");
- }
-
- void test_replace_identifier_end() {
- // "f() => bell + b;"
- // "f() => belt + b;"
- _assertParse("f() => bel", "l", "t", " + b;");
- }
-
- void test_replace_identifier_middle() {
- // "f() => first + b;"
- // "f() => frost + b;"
- _assertParse("f() => f", "ir", "ro", "st + b;");
- }
-
- void test_replace_identifier_with_functionLiteral_in_initializer() {
- // Function literals aren't allowed inside initializers; incremental parsing
- // needs to gather the appropriate context.
- //
- // "class A { var a; A(b) : a = b ? b : 0 { } }"
- // "class A { var a; A(b) : a = b ? () {} : 0 { } }"
- _assertParse(
- "class A { var a; A(b) : a = b ? ", "b", "() {}", " : 0 { } }");
- }
-
- void test_replace_identifier_with_functionLiteral_in_initializer_index() {
- // Function literals are allowed inside index expressions in initializers.
- //
- // "class A { var a; A(b) : a = b[b];"
- // "class A { var a; A(b) : a = b[() {}];"
- _assertParse('class A { var a; A(b) : a = b[', 'b', '() {}', '];');
- }
-
- void test_replace_identifier_with_functionLiteral_in_initializer_list() {
- // Function literals are allowed inside list literals in initializers.
- //
- // "class A { var a; A(b) : a = [b];"
- // "class A { var a; A(b) : a = [() {}];"
- _assertParse('class A { var a; A(b) : a = [', 'b', '() {}', '];');
- }
-
- void test_replace_identifier_with_functionLiteral_in_initializer_map() {
- // Function literals are allowed inside map literals in initializers.
- //
- // "class A { var a; A(b) : a = {0: b};"
- // "class A { var a; A(b) : a = {0: () {}};"
- _assertParse('class A { var a; A(b) : a = {0: ', 'b', '() {}', '};');
- }
-
- void test_replace_identifier_with_functionLiteral_in_initializer_parens() {
- // Function literals are allowed inside parentheses in initializers.
- //
- // "class A { var a; A(b) : a = (b);"
- // "class A { var a; A(b) : a = (() {});"
- _assertParse('class A { var a; A(b) : a = (', 'b', '() {}', ');');
- }
-
- void test_replace_multiple_partialFirstAndLast() {
- // "f() => aa + bb;"
- // "f() => ab * ab;"
- _assertParse("f() => a", "a + b", "b * a", "b;");
- }
-
- void test_replace_operator_oneForMany() {
- // "f() => a + b;"
- // "f() => a * c - b;"
- _assertParse("f() => a ", "+", "* c -", " b;");
- }
-
- void test_replace_operator_oneForOne() {
- // "f() => a + b;"
- // "f() => a * b;"
- _assertParse("f() => a ", "+", "*", " b;");
- }
-
- void test_split_combinator() {
- // "import 'foo.dart' show A;"
- // "import 'foo.dart' show B hide A;"
- _assertParse("import 'foo.dart' show ", "", "B hide ", "A;");
- }
-
- /**
- * Given a description of the original and modified contents, perform an incremental scan of the
- * two pieces of text.
- *
- * @param prefix the unchanged text before the edit region
- * @param removed the text that was removed from the original contents
- * @param added the text that was added to the modified contents
- * @param suffix the unchanged text after the edit region
- */
- void _assertParse(
- String prefix, String removed, String added, String suffix) {
- //
- // Compute the information needed to perform the test.
- //
- String originalContents = "$prefix$removed$suffix";
- String modifiedContents = "$prefix$added$suffix";
- int replaceStart = prefix.length;
- Source source = new TestSource();
- //
- // Parse the original contents.
- //
- GatheringErrorListener originalListener = new GatheringErrorListener();
- Scanner originalScanner = new Scanner(
- source, new CharSequenceReader(originalContents), originalListener);
- Token originalTokens = originalScanner.tokenize();
- expect(originalTokens, isNotNull);
- Parser originalParser = new Parser(source, originalListener);
- CompilationUnit originalUnit =
- originalParser.parseCompilationUnit(originalTokens);
- expect(originalUnit, isNotNull);
- //
- // Parse the modified contents.
- //
- GatheringErrorListener modifiedListener = new GatheringErrorListener();
- Scanner modifiedScanner = new Scanner(
- source, new CharSequenceReader(modifiedContents), modifiedListener);
- Token modifiedTokens = modifiedScanner.tokenize();
- expect(modifiedTokens, isNotNull);
- Parser modifiedParser = new Parser(source, modifiedListener);
- CompilationUnit modifiedUnit =
- modifiedParser.parseCompilationUnit(modifiedTokens);
- expect(modifiedUnit, isNotNull);
- //
- // Incrementally parse the modified contents.
- //
- GatheringErrorListener incrementalListener = new GatheringErrorListener();
- AnalysisOptionsImpl options = new AnalysisOptionsImpl();
- IncrementalScanner incrementalScanner = new IncrementalScanner(source,
- new CharSequenceReader(modifiedContents), incrementalListener, options);
- Token incrementalTokens = incrementalScanner.rescan(
- originalTokens, replaceStart, removed.length, added.length);
- expect(incrementalTokens, isNotNull);
- IncrementalParser incrementalParser = new IncrementalParser(
- source, incrementalScanner.tokenMap, incrementalListener);
- CompilationUnit incrementalUnit = incrementalParser.reparse(
- originalUnit,
- incrementalScanner.leftToken,
- incrementalScanner.rightToken,
- replaceStart,
- prefix.length + removed.length);
- expect(incrementalUnit, isNotNull);
- //
- // Validate that the results of the incremental parse are the same as the
- // full parse of the modified source.
- //
- expect(AstComparator.equalNodes(modifiedUnit, incrementalUnit), isTrue);
- // TODO(brianwilkerson) Verify that the errors are correct?
- }
-}
-
@reflectiveTest
class NonErrorParserTest extends ParserTestCase {
void test_constFactory_external() {
« no previous file with comments | « pkg/analyzer/test/generated/incremental_scanner_test.dart ('k') | pkg/analyzer/test/generated/test_all.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698