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

Unified Diff: pkg/analyzer/test/src/task/incremental_element_builder_test.dart

Issue 1155543005: Prepare CompilationUnitElementDelta in IncrementalCompilationUnitElementBuilder. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Move CompilationUnit.replace() into IncrementalCompilationUnitElementBuilder. Created 5 years, 7 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
« no previous file with comments | « pkg/analyzer/lib/src/task/incremental_element_builder.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/src/task/incremental_element_builder_test.dart
diff --git a/pkg/analyzer/test/src/task/incremental_element_builder_test.dart b/pkg/analyzer/test/src/task/incremental_element_builder_test.dart
index dd05bcb557e6620ff596664bd809ea64a719c9b1..415e03157661946fecd4202f5601d2bfd165936d 100644
--- a/pkg/analyzer/test/src/task/incremental_element_builder_test.dart
+++ b/pkg/analyzer/test/src/task/incremental_element_builder_test.dart
@@ -21,6 +21,7 @@ main() {
@reflectiveTest
class IncrementalCompilationUnitElementBuilderTest extends AbstractContextTest {
Source source;
+
String oldCode;
CompilationUnit oldUnit;
CompilationUnitElement unitElement;
@@ -28,6 +29,8 @@ class IncrementalCompilationUnitElementBuilderTest extends AbstractContextTest {
String newCode;
CompilationUnit newUnit;
+ CompilationUnitElementDelta unitDelta;
+
String getNodeText(AstNode node) {
return newCode.substring(node.offset, node.end);
}
@@ -37,13 +40,13 @@ class IncrementalCompilationUnitElementBuilderTest extends AbstractContextTest {
library test;
import 'dart:math';
''');
+ List<Directive> oldDirectives = oldUnit.directives.toList();
_buildNewUnit(r'''
library test;
import 'dart:async';
import 'dart:math';
''');
- var oldDirectives = oldUnit.directives;
- var newDirectives = newUnit.directives;
+ List<Directive> newDirectives = newUnit.directives;
{
Directive newNode = newDirectives[0];
expect(newNode, same(oldDirectives[0]));
@@ -66,6 +69,7 @@ import 'dart:math';
expect(element, isNotNull);
expect(element.nameOffset, newCode.indexOf("import 'dart:math';"));
}
+ expect(unitDelta.hasDirectiveChange, isTrue);
}
test_directives_keepOffset_partOf() {
@@ -79,12 +83,12 @@ part 'test.dart';
part of my_lib;
class A {}
''', libSource);
+ List<Directive> oldDirectives = oldUnit.directives.toList();
_buildNewUnit(r'''
part of my_lib;
class A {}
''');
- var oldDirectives = oldUnit.directives;
- var newDirectives = newUnit.directives;
+ List<Directive> newDirectives = newUnit.directives;
{
Directive newNode = newDirectives[0];
expect(newNode, same(oldDirectives[0]));
@@ -101,12 +105,12 @@ library test;
import 'dart:async';
import 'dart:math';
''');
+ List<Directive> oldDirectives = oldUnit.directives.toList();
_buildNewUnit(r'''
library test;
import 'dart:math';
''');
- var oldDirectives = oldUnit.directives;
- var newDirectives = newUnit.directives;
+ List<Directive> newDirectives = newUnit.directives;
{
Directive newNode = newDirectives[0];
expect(newNode, same(oldDirectives[0]));
@@ -123,6 +127,7 @@ import 'dart:math';
expect(element, isNotNull);
expect(element.nameOffset, newCode.indexOf("import 'dart:math';"));
}
+ expect(unitDelta.hasDirectiveChange, isTrue);
}
test_directives_reorder() {
@@ -131,13 +136,13 @@ library test;
import 'dart:math' as m;
import 'dart:async';
''');
+ List<Directive> oldDirectives = oldUnit.directives.toList();
_buildNewUnit(r'''
library test;
import 'dart:async';
import 'dart:math' as m;
''');
- var oldDirectives = oldUnit.directives;
- var newDirectives = newUnit.directives;
+ List<Directive> newDirectives = newUnit.directives;
{
Directive newNode = newDirectives[0];
expect(newNode, same(oldDirectives[0]));
@@ -163,6 +168,7 @@ import 'dart:math' as m;
expect(element.nameOffset, newCode.indexOf("import 'dart:math' as m;"));
expect(element.prefix.nameOffset, newCode.indexOf("m;"));
}
+ expect(unitDelta.hasDirectiveChange, isFalse);
}
test_directives_sameOrder_insertSpaces() {
@@ -171,14 +177,14 @@ library test;
import 'dart:async';
import 'dart:math';
''');
+ List<Directive> oldDirectives = oldUnit.directives.toList();
_buildNewUnit(r'''
library test;
import 'dart:async' ;
import 'dart:math';
''');
- var oldDirectives = oldUnit.directives;
- var newDirectives = newUnit.directives;
+ List<Directive> newDirectives = newUnit.directives;
{
Directive newNode = newDirectives[0];
expect(newNode, same(oldDirectives[0]));
@@ -203,6 +209,7 @@ import 'dart:math';
expect(element, isNotNull);
expect(element.nameOffset, newCode.indexOf("import 'dart:math';"));
}
+ expect(unitDelta.hasDirectiveChange, isFalse);
}
test_directives_sameOrder_removeSpaces() {
@@ -212,13 +219,13 @@ library test;
import 'dart:async' ;
import 'dart:math';
''');
+ List<Directive> oldDirectives = oldUnit.directives.toList();
_buildNewUnit(r'''
library test;
import 'dart:async';
import 'dart:math';
''');
- var oldDirectives = oldUnit.directives;
- var newDirectives = newUnit.directives;
+ List<Directive> newDirectives = newUnit.directives;
{
Directive newNode = newDirectives[0];
expect(newNode, same(oldDirectives[0]));
@@ -243,17 +250,18 @@ import 'dart:math';
expect(element, isNotNull);
expect(element.nameOffset, newCode.indexOf("import 'dart:math';"));
}
+ expect(unitDelta.hasDirectiveChange, isFalse);
}
test_unitMembers_accessor_add() {
_buildOldUnit(r'''
get a => 1;
''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations.toList();
_buildNewUnit(r'''
get a => 1;
get b => 2;
''');
- List<CompilationUnitMember> oldNodes = oldUnit.declarations;
List<CompilationUnitMember> newNodes = newUnit.declarations;
// nodes
FunctionDeclaration node1 = newNodes[0];
@@ -276,11 +284,11 @@ get b => 2;
_buildOldUnit(r'''
class A {}
''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations.toList();
_buildNewUnit(r'''
class A {}
class B {}
''');
- List<CompilationUnitMember> oldNodes = oldUnit.declarations;
List<CompilationUnitMember> newNodes = newUnit.declarations;
// nodes
CompilationUnitMember nodeA = newNodes[0];
@@ -295,6 +303,9 @@ class B {}
expect(elementB.name, 'B');
// unit.types
expect(unitElement.types, unorderedEquals([elementA, elementB]));
+ // verify delta
+ expect(unitDelta.addedDeclarations, unorderedEquals([elementB]));
+ expect(unitDelta.removedDeclarations, unorderedEquals([]));
}
test_unitMembers_class_comments() {
@@ -306,6 +317,7 @@ class B {}
/// reference [double] and [B] types.
class C {}
''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations.toList();
_buildNewUnit(r'''
/// reference [double] and [B] types.
class C {}
@@ -314,7 +326,6 @@ class A {}
/// reference [int] type.
class B {}
''');
- List<CompilationUnitMember> oldNodes = oldUnit.declarations;
List<CompilationUnitMember> newNodes = newUnit.declarations;
{
CompilationUnitMember newNode = newNodes[0];
@@ -369,6 +380,37 @@ class B {}''');
expect(docReferences[0].identifier.staticElement.name, 'int');
}
}
+ // verify delta
+ expect(unitDelta.addedDeclarations, unorderedEquals([]));
+ expect(unitDelta.removedDeclarations, unorderedEquals([]));
+ }
+
+ test_unitMembers_class_remove() {
+ _buildOldUnit(r'''
+class A {}
+class B {}
+''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations.toList();
+ _buildNewUnit(r'''
+class A {}
+''');
+ List<CompilationUnitMember> newNodes = newUnit.declarations;
+ // nodes
+ CompilationUnitMember nodeA = newNodes[0];
+ CompilationUnitMember nodeB = oldNodes[1];
+ expect(nodeA, same(oldNodes[0]));
+ // elements
+ ClassElement elementA = nodeA.element;
+ ClassElement elementB = nodeB.element;
+ expect(elementA, isNotNull);
+ expect(elementB, isNotNull);
+ expect(elementA.name, 'A');
+ expect(elementB.name, 'B');
+ // unit.types
+ expect(unitElement.types, unorderedEquals([elementA]));
+ // verify delta
+ expect(unitDelta.addedDeclarations, unorderedEquals([]));
+ expect(unitDelta.removedDeclarations, unorderedEquals([elementB]));
}
test_unitMembers_class_reorder() {
@@ -377,12 +419,12 @@ class A {}
class B {}
class C {}
''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations.toList();
_buildNewUnit(r'''
class C {}
class A {}
class B {}
''');
- List<CompilationUnitMember> oldNodes = oldUnit.declarations;
List<CompilationUnitMember> newNodes = newUnit.declarations;
{
CompilationUnitMember newNode = newNodes[0];
@@ -411,17 +453,20 @@ class B {}
expect(element.name, 'B');
expect(element.nameOffset, newCode.indexOf('B {}'));
}
+ // verify delta
+ expect(unitDelta.addedDeclarations, unorderedEquals([]));
+ expect(unitDelta.removedDeclarations, unorderedEquals([]));
}
test_unitMembers_enum_add() {
_buildOldUnit(r'''
enum A {A1, A2}
''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations.toList();
_buildNewUnit(r'''
enum A {A1, A2}
enum B {B1, B2}
''');
- List<CompilationUnitMember> oldNodes = oldUnit.declarations;
List<CompilationUnitMember> newNodes = newUnit.declarations;
// nodes
CompilationUnitMember nodeA = newNodes[0];
@@ -436,17 +481,20 @@ enum B {B1, B2}
expect(elementB.name, 'B');
// unit.types
expect(unitElement.enums, unorderedEquals([elementA, elementB]));
+ // verify delta
+ expect(unitDelta.addedDeclarations, unorderedEquals([elementB]));
+ expect(unitDelta.removedDeclarations, unorderedEquals([]));
}
test_unitMembers_function_add() {
_buildOldUnit(r'''
a() {}
''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations.toList();
_buildNewUnit(r'''
a() {}
b() {}
''');
- List<CompilationUnitMember> oldNodes = oldUnit.declarations;
List<CompilationUnitMember> newNodes = newUnit.declarations;
// nodes
CompilationUnitMember nodeA = newNodes[0];
@@ -461,17 +509,20 @@ b() {}
expect(elementB.name, 'b');
// unit.types
expect(unitElement.functions, unorderedEquals([elementA, elementB]));
+ // verify delta
+ expect(unitDelta.addedDeclarations, unorderedEquals([elementB]));
+ expect(unitDelta.removedDeclarations, unorderedEquals([]));
}
test_unitMembers_functionTypeAlias_add() {
_buildOldUnit(r'''
typedef A();
''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations.toList();
_buildNewUnit(r'''
typedef A();
typedef B();
''');
- List<CompilationUnitMember> oldNodes = oldUnit.declarations;
List<CompilationUnitMember> newNodes = newUnit.declarations;
// nodes
CompilationUnitMember nodeA = newNodes[0];
@@ -487,17 +538,20 @@ typedef B();
// unit.types
expect(
unitElement.functionTypeAliases, unorderedEquals([elementA, elementB]));
+ // verify delta
+ expect(unitDelta.addedDeclarations, unorderedEquals([elementB]));
+ expect(unitDelta.removedDeclarations, unorderedEquals([]));
}
test_unitMembers_topLevelVariable_add() {
_buildOldUnit(r'''
int a, b;
''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations.toList();
_buildNewUnit(r'''
int a, b;
int c, d;
''');
- List<CompilationUnitMember> oldNodes = oldUnit.declarations;
List<CompilationUnitMember> newNodes = newUnit.declarations;
// nodes
TopLevelVariableDeclaration node1 = newNodes[0];
@@ -536,12 +590,12 @@ int c, d;
bool a = 1, b = 2;
int c = 3;
''');
+ List<CompilationUnitMember> oldNodes = oldUnit.declarations.toList();
_buildNewUnit(r'''
int c = 3;
bool a =1, b = 2;
''');
- List<CompilationUnitMember> oldNodes = oldUnit.declarations;
List<CompilationUnitMember> newNodes = newUnit.declarations;
{
TopLevelVariableDeclaration newNode = newNodes[0];
@@ -574,13 +628,19 @@ bool a =1, b = 2;
expect(element.nameOffset, newCode.indexOf('b = 2'));
}
}
+ // verify delta
+ expect(unitDelta.addedDeclarations, unorderedEquals([]));
+ expect(unitDelta.removedDeclarations, unorderedEquals([]));
}
void _buildNewUnit(String newCode) {
this.newCode = newCode;
context.setContents(source, newCode);
newUnit = context.parseCompilationUnit(source);
- new IncrementalCompilationUnitElementBuilder(oldUnit, newUnit).build();
+ IncrementalCompilationUnitElementBuilder builder =
+ new IncrementalCompilationUnitElementBuilder(oldUnit, newUnit);
+ builder.build();
+ unitDelta = builder.unitDelta;
expect(newUnit.element, unitElement);
}
« no previous file with comments | « pkg/analyzer/lib/src/task/incremental_element_builder.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698