Skip to content

Commit

Permalink
Issue 36212. Fix for updated part without library.
Browse files Browse the repository at this point in the history
R=brianwilkerson@google.com

Bug: #36212
Change-Id: Ib0c43685c0b9f167591232d384a7fc5e426c07d5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97007
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
  • Loading branch information
scheglov authored and commit-bot@chromium.org committed Mar 16, 2019
1 parent d597166 commit cc1ddfb
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 0 deletions.
1 change: 1 addition & 0 deletions pkg/analyzer/lib/src/services/available_declarations.dart
Expand Up @@ -624,6 +624,7 @@ class DeclarationsTracker {

var isLibrary = file.isLibrary;
var library = isLibrary ? file : file.library;
if (library == null) return;

if (isLibrary) {
file.refresh(containingContext);
Expand Down
74 changes: 74 additions & 0 deletions pkg/analyzer/test/src/services/available_declarations_test.dart
Expand Up @@ -348,6 +348,19 @@ class B {}
]);
}

test_added_part_withoutLibrary() async {
var b = convertPath('/home/test/lib/b.dart');

newFile(b, content: r'''
part of 'a.dart';
''');
tracker.changeFile(b);
await _doAllTrackerWork();

_assertHasNoLibrary('package:test/a.dart');
_assertHasNoLibrary('package:test/b.dart');
}

test_chooseContext_inAnalysisRoot() async {
var homePath = convertPath('/home');
var testPath = convertPath('/home/test');
Expand Down Expand Up @@ -536,6 +549,30 @@ class D {}
_assertHasLibrary('package:test/b.dart');
}

test_deleted_library_ofPart() async {
var a = convertPath('/home/test/lib/a.dart');
var b = convertPath('/home/test/lib/b.dart');

newFile(a, content: r'''
part 'b.dart';
''');
newFile(b, content: r'''
part of 'a.dart';
''');
tracker.addContext(testAnalysisContext);

await _doAllTrackerWork();
_assertHasLibrary('package:test/a.dart');
_assertHasNoLibrary('package:test/b.dart');

deleteFile(a);
tracker.changeFile(a);
await _doAllTrackerWork();

_assertHasNoLibrary('package:test/a.dart');
_assertHasNoLibrary('package:test/b.dart');
}

test_deleted_part() async {
var a = convertPath('/home/test/lib/a.dart');
var b = convertPath('/home/test/lib/b.dart');
Expand Down Expand Up @@ -575,6 +612,19 @@ class C {}
]);
}

test_deleted_part_withoutLibrary() async {
var b = convertPath('/home/test/lib/b.dart');

newFile(b, content: r'''
part of 'a.dart';
''');
tracker.addContext(testAnalysisContext);

await _doAllTrackerWork();
_assertHasNoLibrary('package:test/a.dart');
_assertHasNoLibrary('package:test/b.dart');
}

test_updated_exported() async {
var a = convertPath('/home/test/lib/a.dart');
var b = convertPath('/home/test/lib/b.dart');
Expand Down Expand Up @@ -713,6 +763,30 @@ class B2 {}
_ExpectedDeclaration.class_('C'),
]);
}

test_updated_part_withoutLibrary() async {
var b = convertPath('/home/test/lib/b.dart');

newFile(b, content: r'''
part of 'a.dart';
class B {}
''');
tracker.addContext(testAnalysisContext);

await _doAllTrackerWork();
_assertHasNoLibrary('package:test/a.dart');
_assertHasNoLibrary('package:test/b.dart');

newFile(b, content: r'''
part of 'a.dart';
class B2 {}
''');
tracker.changeFile(b);

await _doAllTrackerWork();
_assertHasNoLibrary('package:test/a.dart');
_assertHasNoLibrary('package:test/b.dart');
}
}

@reflectiveTest
Expand Down

0 comments on commit cc1ddfb

Please sign in to comment.