CQ. Migrate from assertErrorsInTestResult() to resolveFileWithDiagnostics().
Change-Id: I1fc158dad37eba700b8c83e288de63270cedf3b5 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/506880 Reviewed-by: Johnni Winther <johnniwinther@google.com> Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
committed by
dart-scoped@luci-project-accounts.iam.gserviceaccount.com
parent
f81c7f2140
commit
9543bb6472
@@ -312,7 +312,7 @@ void f() {
|
||||
|
||||
// We don't have any lints configured, so no errors.
|
||||
var result = await resolveTestFile();
|
||||
assertErrorsInTestResult(result, []);
|
||||
expect(result.diagnostics, isEmpty);
|
||||
|
||||
// The summary for the library was linked.
|
||||
_assertContainsLinkedCycle({testFile}, andClear: true);
|
||||
|
||||
@@ -131,7 +131,7 @@ class AnalysisDriver_LintTest extends PubPackageResolutionTest
|
||||
var result = await resolveTestFile();
|
||||
|
||||
// No errors for a file that doesn't exist.
|
||||
assertErrorsInTestResult(result, []);
|
||||
expect(result.diagnostics, isEmpty);
|
||||
}
|
||||
|
||||
void _assertHasLintReported(List<Diagnostic> diagnostics, String name) {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1383,20 +1383,21 @@ extension E on int {
|
||||
}
|
||||
''');
|
||||
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
import 'x.dart';
|
||||
void f() {
|
||||
0.foo();
|
||||
}
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, []);
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.singleMethodInvocation;
|
||||
assertResolvedNodeText(node, r'''
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'package:analyzer/src/diagnostic/diagnostic.dart' as diag;
|
||||
import 'package:test/test.dart';
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
@@ -533,19 +532,20 @@ ExportDirective
|
||||
}
|
||||
|
||||
test_inPart_library() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
part of 'a.dart';
|
||||
export 'c.dart';
|
||||
''');
|
||||
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
newFile('$testPackageLibPath/c.dart', '');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, const []);
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
export 'c.dart';
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.export('c.dart');
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -561,17 +561,20 @@ ExportDirective
|
||||
}
|
||||
|
||||
test_inPart_library_fileDoesNotExist() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
export 'c.dart';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [error(diag.uriDoesNotExist, 25, 8)]);
|
||||
// ^^^^^^^^
|
||||
// [diag.uriDoesNotExist] Target of URI doesn't exist: 'c.dart'.
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.export('c.dart');
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -587,17 +590,20 @@ ExportDirective
|
||||
}
|
||||
|
||||
test_inPart_noRelativeUri() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
export ':net';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [error(diag.invalidUri, 25, 6)]);
|
||||
// ^^^^^^
|
||||
// [diag.invalidUri] Invalid URI syntax: ':net'.
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.export('export');
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -613,19 +619,20 @@ ExportDirective
|
||||
}
|
||||
|
||||
test_inPart_noRelativeUriStr() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
export '${'foo'}.dart';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.uriWithInterpolation, 25, 15),
|
||||
]);
|
||||
// ^^^^^^^^^^^^^^^
|
||||
// [diag.uriWithInterpolation] URIs can't use string interpolation.
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.export('export');
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -651,17 +658,20 @@ ExportDirective
|
||||
}
|
||||
|
||||
test_inPart_noSource() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
export 'foo:bar';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [error(diag.uriDoesNotExist, 25, 9)]);
|
||||
// ^^^^^^^^^
|
||||
// [diag.uriDoesNotExist] Target of URI doesn't exist: 'foo:bar'.
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.export('export');
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -677,21 +687,24 @@ ExportDirective
|
||||
}
|
||||
|
||||
test_inPart_notLibrary_partOfName() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
part of 'a.dart';
|
||||
export 'c.dart';
|
||||
''');
|
||||
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
newFile('$testPackageLibPath/c.dart', r'''
|
||||
part of my.lib;
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [error(diag.exportOfNonLibrary, 25, 8)]);
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
export 'c.dart';
|
||||
// ^^^^^^^^
|
||||
// [diag.exportOfNonLibrary] The exported library 'c.dart' can't have a part-of directive.
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.export('c.dart');
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -707,21 +720,24 @@ ExportDirective
|
||||
}
|
||||
|
||||
test_inPart_notLibrary_partOfUri() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
part of 'a.dart';
|
||||
export 'c.dart';
|
||||
''');
|
||||
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
newFile('$testPackageLibPath/c.dart', r'''
|
||||
part of 'b.dart';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [error(diag.exportOfNonLibrary, 25, 8)]);
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
export 'c.dart';
|
||||
// ^^^^^^^^
|
||||
// [diag.exportOfNonLibrary] The exported library 'c.dart' can't have a part-of directive.
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.export('c.dart');
|
||||
assertResolvedNodeText(node, r'''
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'package:analyzer/src/diagnostic/diagnostic.dart' as diag;
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
import 'context_collection_resolution.dart';
|
||||
@@ -716,22 +715,23 @@ ImportDirective
|
||||
}
|
||||
|
||||
test_inPart_library() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
part of 'a.dart';
|
||||
import 'c.dart';
|
||||
''');
|
||||
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
newFile('$testPackageLibPath/c.dart', '');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
// TODO(scheglov): update the hint.
|
||||
// assertErrorsInTestResult(result, [
|
||||
// error(WarningCode.UNUSED_IMPORT, 33, 8),
|
||||
// ]);
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
import 'c.dart';
|
||||
// ^^^^^^^^
|
||||
// [diag.unusedImport] Unused import: 'c.dart'.
|
||||
''',
|
||||
});
|
||||
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.import('c.dart');
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -747,17 +747,20 @@ ImportDirective
|
||||
}
|
||||
|
||||
test_inPart_library_fileDoesNotExist() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
import 'c.dart';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [error(diag.uriDoesNotExist, 25, 8)]);
|
||||
// ^^^^^^^^
|
||||
// [diag.uriDoesNotExist] Target of URI doesn't exist: 'c.dart'.
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.import('c.dart');
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -773,17 +776,20 @@ ImportDirective
|
||||
}
|
||||
|
||||
test_inPart_noRelativeUri() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
import ':net';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [error(diag.invalidUri, 25, 6)]);
|
||||
// ^^^^^^
|
||||
// [diag.invalidUri] Invalid URI syntax: ':net'.
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.import('import');
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -799,19 +805,20 @@ ImportDirective
|
||||
}
|
||||
|
||||
test_inPart_noRelativeUriStr() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
import '${'foo'}.dart';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.uriWithInterpolation, 25, 15),
|
||||
]);
|
||||
// ^^^^^^^^^^^^^^^
|
||||
// [diag.uriWithInterpolation] URIs can't use string interpolation.
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.import('import');
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -837,17 +844,20 @@ ImportDirective
|
||||
}
|
||||
|
||||
test_inPart_noSource() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
import 'foo:bar';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [error(diag.uriDoesNotExist, 25, 9)]);
|
||||
// ^^^^^^^^^
|
||||
// [diag.uriDoesNotExist] Target of URI doesn't exist: 'foo:bar'.
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.import('import');
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -863,21 +873,25 @@ ImportDirective
|
||||
}
|
||||
|
||||
test_inPart_notLibrary_partOfName() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
part of 'a.dart';
|
||||
import 'c.dart';
|
||||
''');
|
||||
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
newFile('$testPackageLibPath/c.dart', r'''
|
||||
part of my.lib;
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [error(diag.importOfNonLibrary, 25, 8)]);
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
import 'c.dart';
|
||||
// ^^^^^^^^
|
||||
// [diag.importOfNonLibrary] The imported library 'c.dart' can't have a part-of directive.
|
||||
''',
|
||||
});
|
||||
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.import('c.dart');
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -893,21 +907,25 @@ ImportDirective
|
||||
}
|
||||
|
||||
test_inPart_notLibrary_partOfUri() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
part of 'a.dart';
|
||||
import 'c.dart';
|
||||
''');
|
||||
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
newFile('$testPackageLibPath/c.dart', r'''
|
||||
part of 'b.dart';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [error(diag.importOfNonLibrary, 25, 8)]);
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
import 'c.dart';
|
||||
// ^^^^^^^^
|
||||
// [diag.importOfNonLibrary] The imported library 'c.dart' can't have a part-of directive.
|
||||
''',
|
||||
});
|
||||
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.import('c.dart');
|
||||
assertResolvedNodeText(node, r'''
|
||||
|
||||
@@ -344,18 +344,18 @@ const foo = 42;
|
||||
}
|
||||
|
||||
test_location_partOfDirective() async {
|
||||
newFile('$testPackageLibPath/test.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
testFile: r'''
|
||||
part 'a.dart';
|
||||
const foo = 42;
|
||||
''');
|
||||
|
||||
var a = newFile('$testPackageLibPath/a.dart', r'''
|
||||
''',
|
||||
a: r'''
|
||||
@foo
|
||||
part of 'test.dart';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(a);
|
||||
assertErrorsInTestResult(result, const []);
|
||||
''',
|
||||
});
|
||||
var result = results[a]!;
|
||||
|
||||
_assertAtFoo42(result);
|
||||
}
|
||||
|
||||
@@ -206,6 +206,11 @@ class NodeTextExpectationsCollector {
|
||||
methodName: 'resolveFilesWithDiagnostics',
|
||||
argument: _ArgumentMapEntryValue(mapArgument: _ArgumentIndex(0)),
|
||||
),
|
||||
_AssertMethod(
|
||||
className: '_IndexMixin',
|
||||
methodName: '_indexTestCode',
|
||||
argument: _ArgumentIndex(0),
|
||||
),
|
||||
_AssertMethod(
|
||||
className: 'ResolutionTest',
|
||||
methodName: 'resolveTestCodeWithDiagnostics',
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'package:analyzer/src/dart/element/element.dart';
|
||||
import 'package:analyzer/src/diagnostic/diagnostic.dart' as diag;
|
||||
import 'package:test/test.dart';
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
@@ -133,22 +132,20 @@ PartDirective
|
||||
}
|
||||
|
||||
test_inLibrary_withPart_partOfName() async {
|
||||
var a = newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
// @dart = 3.4
|
||||
library my.lib;
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
// @dart = 3.4
|
||||
part of my.lib;
|
||||
''');
|
||||
|
||||
var bResult = await resolveFile2(b);
|
||||
assertErrorsInTestResult(bResult, const []);
|
||||
|
||||
var result = await resolveFile2(a);
|
||||
assertErrorsInTestResult(result, const []);
|
||||
''',
|
||||
});
|
||||
var result = results[a]!;
|
||||
|
||||
var node = result.findNode.singlePartDirective;
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -164,22 +161,20 @@ PartDirective
|
||||
}
|
||||
|
||||
test_inLibrary_withPart_partOfName_preEnhancedParts() async {
|
||||
var a = newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
// @dart = 3.4
|
||||
library my.lib;
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
// @dart = 3.4
|
||||
part of my.lib;
|
||||
''');
|
||||
|
||||
var bResult = await resolveFile2(b);
|
||||
assertErrorsInTestResult(bResult, const []);
|
||||
|
||||
var result = await resolveFile2(a);
|
||||
assertErrorsInTestResult(result, const []);
|
||||
''',
|
||||
});
|
||||
var result = results[a]!;
|
||||
|
||||
var node = result.findNode.singlePartDirective;
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -195,24 +190,22 @@ PartDirective
|
||||
}
|
||||
|
||||
test_inLibrary_withPart_partOfName_preEnhancedParts_different() async {
|
||||
var a = newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
// @dart = 3.4
|
||||
library foo;
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
// ^^^^^^^^
|
||||
// [diag.partOfDifferentLibrary] Expected this library to be part of 'foo', not 'bar'.
|
||||
''',
|
||||
b: r'''
|
||||
// @dart = 3.4
|
||||
part of bar;
|
||||
''');
|
||||
|
||||
var bResult = await resolveFile2(b);
|
||||
assertErrorsInTestResult(bResult, const []);
|
||||
|
||||
var result = await resolveFile2(a);
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.partOfDifferentLibrary, 33, 8),
|
||||
]);
|
||||
''',
|
||||
});
|
||||
var result = results[a]!;
|
||||
|
||||
var node = result.findNode.singlePartDirective;
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -324,17 +317,20 @@ PartDirective
|
||||
}
|
||||
|
||||
test_inPart_fileDoesNotExist() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
part 'c.dart';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [error(diag.uriDoesNotExist, 23, 8)]);
|
||||
// ^^^^^^^^
|
||||
// [diag.uriDoesNotExist] Target of URI doesn't exist: 'package:test/c.dart'.
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.singlePartDirective;
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -350,17 +346,20 @@ PartDirective
|
||||
}
|
||||
|
||||
test_inPart_noRelativeUri() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
part ':net';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [error(diag.invalidUri, 23, 6)]);
|
||||
// ^^^^^^
|
||||
// [diag.invalidUri] Invalid URI syntax: ':net'.
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.singlePartDirective;
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -376,19 +375,20 @@ PartDirective
|
||||
}
|
||||
|
||||
test_inPart_noRelativeUriStr() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
part '${'foo'}.dart';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.uriWithInterpolation, 23, 15),
|
||||
]);
|
||||
// ^^^^^^^^^^^^^^^
|
||||
// [diag.uriWithInterpolation] URIs can't use string interpolation.
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.singlePartDirective;
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -414,17 +414,20 @@ PartDirective
|
||||
}
|
||||
|
||||
test_inPart_noSource() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
part 'foo:bar';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [error(diag.uriDoesNotExist, 23, 9)]);
|
||||
// ^^^^^^^^^
|
||||
// [diag.uriDoesNotExist] Target of URI doesn't exist: 'foo:bar'.
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.singlePartDirective;
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -440,25 +443,26 @@ PartDirective
|
||||
}
|
||||
|
||||
test_inPart_withPart_partOfName() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var c = getFile('$testPackageLibPath/c.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
part 'c.dart';
|
||||
''');
|
||||
|
||||
var c = newFile('$testPackageLibPath/c.dart', r'''
|
||||
''',
|
||||
c: r'''
|
||||
part of my.lib;
|
||||
''');
|
||||
|
||||
var cResult = await resolveFile2(c);
|
||||
assertErrorsInTestResult(cResult, [error(diag.partOfName, 8, 6)]);
|
||||
// ^^^^^^
|
||||
// [diag.partOfName] The 'part of' directive can't use a name with the enhanced-parts feature.
|
||||
''',
|
||||
});
|
||||
|
||||
// We already reported an error above.
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, const []);
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.singlePartDirective;
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -474,21 +478,22 @@ PartDirective
|
||||
}
|
||||
|
||||
test_inPart_withPart_partOfUri() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var c = getFile('$testPackageLibPath/c.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
part 'c.dart';
|
||||
''');
|
||||
|
||||
newFile('$testPackageLibPath/c.dart', r'''
|
||||
''',
|
||||
c: r'''
|
||||
part of 'b.dart';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, const []);
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.singlePartDirective;
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -504,23 +509,24 @@ PartDirective
|
||||
}
|
||||
|
||||
test_inPart_withPart_partOfUri_different() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var c = getFile('$testPackageLibPath/c.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
part 'c.dart';
|
||||
''');
|
||||
|
||||
newFile('$testPackageLibPath/c.dart', r'''
|
||||
// ^^^^^^^^
|
||||
// [diag.partOfDifferentLibrary] Expected this library to be part of 'package:test/b.dart', not 'package:test/c.dart'.
|
||||
''',
|
||||
c: r'''
|
||||
part of 'a.dart';
|
||||
''');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.partOfDifferentLibrary, 23, 8),
|
||||
]);
|
||||
''',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.singlePartDirective;
|
||||
assertResolvedNodeText(node, r'''
|
||||
@@ -536,19 +542,22 @@ PartDirective
|
||||
}
|
||||
|
||||
test_inPart_withSource_notPart_library() async {
|
||||
newFile('$testPackageLibPath/a.dart', r'''
|
||||
var a = getFile('$testPackageLibPath/a.dart');
|
||||
var b = getFile('$testPackageLibPath/b.dart');
|
||||
var c = getFile('$testPackageLibPath/c.dart');
|
||||
var results = await resolveFilesWithDiagnostics({
|
||||
a: r'''
|
||||
part 'b.dart';
|
||||
''');
|
||||
|
||||
var b = newFile('$testPackageLibPath/b.dart', r'''
|
||||
''',
|
||||
b: r'''
|
||||
part of 'a.dart';
|
||||
part 'c.dart';
|
||||
''');
|
||||
|
||||
newFile('$testPackageLibPath/c.dart', '');
|
||||
|
||||
var result = await resolveFile2(b);
|
||||
assertErrorsInTestResult(result, [error(diag.partOfNonPart, 23, 8)]);
|
||||
// ^^^^^^^^
|
||||
// [diag.partOfNonPart] The included part 'package:test/c.dart' must have a part-of directive.
|
||||
''',
|
||||
c: '',
|
||||
});
|
||||
var result = results[b]!;
|
||||
|
||||
var node = result.findNode.singlePartDirective;
|
||||
assertResolvedNodeText(node, r'''
|
||||
|
||||
@@ -140,13 +140,6 @@ mixin ResolutionTest implements ResourceProviderMixin {
|
||||
diagnosticListener.assertErrors(expectedDiagnostics);
|
||||
}
|
||||
|
||||
void assertErrorsInTestResult(
|
||||
TestResolvedUnitResult result,
|
||||
List<ExpectedDiagnostic> expectedDiagnostics,
|
||||
) {
|
||||
assertErrorsInList(result.diagnostics, expectedDiagnostics);
|
||||
}
|
||||
|
||||
void assertHasTestErrors(TestResolvedUnitResult result) {
|
||||
expect(result.diagnostics, isNotEmpty);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'package:analyzer/src/diagnostic/diagnostic.dart' as diag;
|
||||
import 'package:analyzer_testing/package_config_file_builder.dart';
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
@@ -32,11 +31,12 @@ import 'dart:_internal';
|
||||
|
||||
test_wasm_fromJs() async {
|
||||
var packageRootPath = _newPackage('js');
|
||||
var file = newFile('$packageRootPath/lib/js.dart', '''
|
||||
var file = getFile('$packageRootPath/lib/js.dart');
|
||||
await resolveFileWithDiagnostics(file, '''
|
||||
import 'dart:_wasm';
|
||||
// ^^^^^^^^^^^^
|
||||
// [diag.unusedImport] Unused import: 'dart:_wasm'.
|
||||
''');
|
||||
var result = await resolveFile2(file);
|
||||
assertErrorsInTestResult(result, [error(diag.unusedImport, 7, 12)]);
|
||||
}
|
||||
|
||||
test_wasm_fromTest() async {
|
||||
@@ -50,11 +50,12 @@ import 'dart:_wasm';
|
||||
|
||||
test_wasm_fromUi() async {
|
||||
var packageRootPath = _newPackage('ui');
|
||||
var file = newFile('$packageRootPath/lib/ui.dart', '''
|
||||
var file = getFile('$packageRootPath/lib/ui.dart');
|
||||
await resolveFileWithDiagnostics(file, '''
|
||||
import 'dart:_wasm';
|
||||
// ^^^^^^^^^^^^
|
||||
// [diag.unusedImport] Unused import: 'dart:_wasm'.
|
||||
''');
|
||||
var result = await resolveFile2(file);
|
||||
assertErrorsInTestResult(result, [error(diag.unusedImport, 7, 12)]);
|
||||
}
|
||||
|
||||
String _newPackage(String packageName) {
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'package:analyzer/src/diagnostic/diagnostic.dart' as diag;
|
||||
import 'package:analyzer_testing/mock_packages/mock_packages.dart';
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
@@ -47,16 +46,11 @@ import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
|
||||
var result = await resolveFileCode(
|
||||
'$testPackageBlazeBinPath/lib/bar.dart',
|
||||
r'''
|
||||
var file = getFile('$testPackageBlazeBinPath/lib/bar.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
export 'src/foo.dart';
|
||||
''',
|
||||
);
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidExportOfInternalElement, 0, 22),
|
||||
]);
|
||||
// [diag.invalidExportOfInternalElement][column 1][length 22] The member 'One' can't be exported as a part of a package's public API.
|
||||
''');
|
||||
}
|
||||
|
||||
void test_exporterIsInBlazeBinLibSrc() async {
|
||||
@@ -65,12 +59,10 @@ import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
|
||||
await resolveFileWithDiagnostics(
|
||||
getFile('$testPackageBlazeBinPath/lib/src/bar.dart'),
|
||||
r'''
|
||||
var file = getFile('$testPackageBlazeBinPath/lib/src/bar.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
export 'foo.dart';
|
||||
''',
|
||||
);
|
||||
''');
|
||||
}
|
||||
|
||||
void test_exporterIsInGenfilesLib() async {
|
||||
@@ -79,16 +71,11 @@ import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
|
||||
var result = await resolveFileCode(
|
||||
'$testPackageGenfilesPath/lib/bar.dart',
|
||||
r'''
|
||||
var file = getFile('$testPackageGenfilesPath/lib/bar.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
export 'src/foo.dart';
|
||||
''',
|
||||
);
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidExportOfInternalElement, 0, 22),
|
||||
]);
|
||||
// [diag.invalidExportOfInternalElement][column 1][length 22] The member 'One' can't be exported as a part of a package's public API.
|
||||
''');
|
||||
}
|
||||
|
||||
void test_exporterIsInGenfilesLibSrc() async {
|
||||
@@ -97,12 +84,10 @@ import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
|
||||
await resolveFileWithDiagnostics(
|
||||
getFile('$testPackageGenfilesPath/lib/src/bar.dart'),
|
||||
r'''
|
||||
var file = getFile('$testPackageGenfilesPath/lib/src/bar.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
export 'foo.dart';
|
||||
''',
|
||||
);
|
||||
''');
|
||||
}
|
||||
|
||||
void test_exporterIsInLib() async {
|
||||
@@ -111,13 +96,11 @@ import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
|
||||
var result = await resolveFileCode('$testPackageLibPath/bar.dart', r'''
|
||||
var file = getFile('$testPackageLibPath/bar.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
export 'src/foo.dart';
|
||||
// [diag.invalidExportOfInternalElement][column 1][length 22] The member 'One' can't be exported as a part of a package's public API.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidExportOfInternalElement, 0, 22),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_exporterIsInLibSrc() async {
|
||||
@@ -126,12 +109,10 @@ import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
|
||||
await resolveFileWithDiagnostics(
|
||||
getFile('$testPackageLibPath/src/bar.dart'),
|
||||
r'''
|
||||
var file = getFile('$testPackageLibPath/src/bar.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
export 'foo.dart';
|
||||
''',
|
||||
);
|
||||
''');
|
||||
}
|
||||
|
||||
void test_exporterIsInTest() async {
|
||||
@@ -140,12 +121,10 @@ import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
|
||||
await resolveFileWithDiagnostics(
|
||||
getFile('$myPackageRootPath/test/foo_test.dart'),
|
||||
r'''
|
||||
var file = getFile('$myPackageRootPath/test/foo_test.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
export 'package:dart.my/src/foo.dart';
|
||||
''',
|
||||
);
|
||||
''');
|
||||
}
|
||||
|
||||
void test_internalIsInBlazeBin() async {
|
||||
@@ -203,16 +182,11 @@ import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
|
||||
var result = await resolveFileCode(
|
||||
'$testPackageDartToolPath/lib/bar.dart',
|
||||
r'''
|
||||
var file = getFile('$testPackageDartToolPath/lib/bar.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
export 'package:test/src/foo.dart';
|
||||
''',
|
||||
);
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidExportOfInternalElement, 0, 35),
|
||||
]);
|
||||
// [diag.invalidExportOfInternalElement][column 1][length 35] The member 'One' can't be exported as a part of a package's public API.
|
||||
''');
|
||||
}
|
||||
|
||||
@FailingTest(
|
||||
@@ -227,12 +201,10 @@ import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
|
||||
await resolveFileWithDiagnostics(
|
||||
getFile('$testPackageDartToolPath/lib/src/bar.dart'),
|
||||
r'''
|
||||
var file = getFile('$testPackageDartToolPath/lib/src/bar.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
export 'package:test/src/foo.dart';
|
||||
''',
|
||||
);
|
||||
''');
|
||||
}
|
||||
|
||||
void test_exporterInLib() async {
|
||||
@@ -241,13 +213,11 @@ import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
|
||||
var result = await resolveFileCode('$testPackageRootPath/lib/bar.dart', r'''
|
||||
var file = getFile('$testPackageRootPath/lib/bar.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
export 'package:test/src/foo.dart';
|
||||
// [diag.invalidExportOfInternalElement][column 1][length 35] The member 'One' can't be exported as a part of a package's public API.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidExportOfInternalElement, 0, 35),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_exporterInLibSrc() async {
|
||||
@@ -256,12 +226,10 @@ import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
|
||||
await resolveFileWithDiagnostics(
|
||||
getFile('$testPackageRootPath/lib/src/bar.dart'),
|
||||
r'''
|
||||
var file = getFile('$testPackageRootPath/lib/src/bar.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
export 'package:test/src/foo.dart';
|
||||
''',
|
||||
);
|
||||
''');
|
||||
}
|
||||
|
||||
void test_internalIsInGeneratedLibSrc() async {
|
||||
@@ -310,13 +278,11 @@ import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
|
||||
var result = await resolveFileCode('$testPackageLibPath/bar.dart', r'''
|
||||
var file = getFile('$testPackageLibPath/bar.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
export 'src/foo.dart';
|
||||
// [diag.invalidExportOfInternalElement][column 1][length 22] The member 'One' can't be exported as a part of a package's public API.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidExportOfInternalElement, 0, 22),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_exporterIsInLibSrc() async {
|
||||
@@ -325,12 +291,10 @@ import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
|
||||
await resolveFileWithDiagnostics(
|
||||
getFile('$testPackageLibPath/src/bar.dart'),
|
||||
r'''
|
||||
var file = getFile('$testPackageLibPath/src/bar.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
export 'foo.dart';
|
||||
''',
|
||||
);
|
||||
''');
|
||||
}
|
||||
|
||||
void test_exporterIsInTest() async {
|
||||
@@ -339,12 +303,10 @@ import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
|
||||
await resolveFileWithDiagnostics(
|
||||
getFile('$testPackageRootPath/test/foo_test.dart'),
|
||||
r'''
|
||||
var file = getFile('$testPackageRootPath/test/foo_test.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
export 'package:test/src/foo.dart';
|
||||
''',
|
||||
);
|
||||
''');
|
||||
}
|
||||
|
||||
void test_internalIsLibSrc() async {
|
||||
|
||||
@@ -2,20 +2,22 @@
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'package:analyzer/src/diagnostic/diagnostic.dart' as diag;
|
||||
import 'package:analyzer/file_system/file_system.dart';
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
import '../dart/resolution/context_collection_resolution.dart';
|
||||
import '../dart/resolution/node_text_expectations.dart';
|
||||
|
||||
main() {
|
||||
defineReflectiveSuite(() {
|
||||
defineReflectiveTests(InvalidInternalAnnotationTest);
|
||||
defineReflectiveTests(UpdateNodeTextExpectations);
|
||||
});
|
||||
}
|
||||
|
||||
@reflectiveTest
|
||||
class InvalidInternalAnnotationTest extends PubPackageResolutionTest {
|
||||
String get testPackageLibSrcFilePath => '$testPackageLibPath/src/foo.dart';
|
||||
File get testPackageLibSrcFile => getFile('$testPackageLibPath/src/foo.dart');
|
||||
|
||||
@override
|
||||
void setUp() {
|
||||
@@ -28,354 +30,312 @@ version: 0.0.1
|
||||
}
|
||||
|
||||
void test_annotationInLib() async {
|
||||
var result = await resolveFileCode('$testPackageLibPath/foo.dart', r'''
|
||||
var file = getFile('$testPackageLibPath/foo.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
// [diag.invalidInternalAnnotation][column 2][length 8] Only public elements in a package's private API can be annotated as being internal.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 34, 8),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_annotationInLib_onLibrary() async {
|
||||
var result = await resolveFileCode('$testPackageLibPath/foo.dart', r'''
|
||||
var file = getFile('$testPackageLibPath/foo.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
@internal
|
||||
// [diag.invalidInternalAnnotation][column 2][length 8] Only public elements in a package's private API can be annotated as being internal.
|
||||
library foo;
|
||||
import 'package:meta/meta.dart';
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 1, 8),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_annotationInLibSrc() async {
|
||||
await resolveFileWithDiagnostics(getFile(testPackageLibSrcFilePath), r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''');
|
||||
}
|
||||
|
||||
void test_annotationInLibSrcSubdirectory() async {
|
||||
await resolveFileWithDiagnostics(
|
||||
getFile('$testPackageLibPath/src/foo/foo.dart'),
|
||||
r'''
|
||||
var file = getFile('$testPackageLibPath/src/foo/foo.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''',
|
||||
);
|
||||
''');
|
||||
}
|
||||
|
||||
void test_annotationInLibSubdirectory() async {
|
||||
var result = await resolveFileCode('$testPackageLibPath/foo/foo.dart', r'''
|
||||
var file = getFile('$testPackageLibPath/foo/foo.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
// [diag.invalidInternalAnnotation][column 2][length 8] Only public elements in a package's private API can be annotated as being internal.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 34, 8),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_annotationInTest() async {
|
||||
await resolveFileWithDiagnostics(
|
||||
getFile('$testPackageRootPath/test/foo_test.dart'),
|
||||
r'''
|
||||
var file = getFile('$testPackageRootPath/test/foo_test.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal class One {}
|
||||
''',
|
||||
);
|
||||
''');
|
||||
}
|
||||
|
||||
void test_annotationInTest_extensionType() async {
|
||||
await resolveFileWithDiagnostics(
|
||||
getFile('$testPackageRootPath/test/foo_test.dart'),
|
||||
r'''
|
||||
var file = getFile('$testPackageRootPath/test/foo_test.dart');
|
||||
await resolveFileWithDiagnostics(file, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal extension type E(int i) {}
|
||||
''',
|
||||
);
|
||||
''');
|
||||
}
|
||||
|
||||
void test_privateClass() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal class _One {}
|
||||
// [diag.invalidInternalAnnotation][column 2][length 8] Only public elements in a package's private API can be annotated as being internal.
|
||||
// ^^^^
|
||||
// [diag.unusedElement] The declaration '_One' isn't referenced.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 34, 8),
|
||||
error(diag.unusedElement, 49, 4),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateConstructor() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
class C {
|
||||
@internal C._f();
|
||||
// ^^^^^^^^
|
||||
// [diag.invalidInternalAnnotation] Only public elements in a package's private API can be annotated as being internal.
|
||||
}
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 46, 8),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateEnum() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal enum _E {one}
|
||||
// [diag.invalidInternalAnnotation][column 2][length 8] Only public elements in a package's private API can be annotated as being internal.
|
||||
// ^^
|
||||
// [diag.unusedElement] The declaration '_E' isn't referenced.
|
||||
// ^^^
|
||||
// [diag.unusedField] The value of the field 'one' isn't used.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 34, 8),
|
||||
error(diag.unusedElement, 48, 2),
|
||||
error(diag.unusedField, 52, 3),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateEnumValue() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
enum E {@internal _one}
|
||||
// ^^^^^^^^
|
||||
// [diag.invalidInternalAnnotation] Only public elements in a package's private API can be annotated as being internal.
|
||||
// ^^^^
|
||||
// [diag.unusedField] The value of the field '_one' isn't used.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 42, 8),
|
||||
error(diag.unusedField, 51, 4),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateExtension() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal extension _One on String {}
|
||||
// [diag.invalidInternalAnnotation][column 2][length 8] Only public elements in a package's private API can be annotated as being internal.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 34, 8),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateExtension_unnamed() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal extension on String {}
|
||||
// [diag.invalidInternalAnnotation][column 2][length 8] Only public elements in a package's private API can be annotated as being internal.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 34, 8),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateExtensionType() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal extension type _E(int i) {}
|
||||
// [diag.invalidInternalAnnotation][column 2][length 8] Only public elements in a package's private API can be annotated as being internal.
|
||||
// ^^
|
||||
// [diag.unusedElement] The declaration '_E' isn't referenced.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 34, 8),
|
||||
error(diag.unusedElement, 58, 2),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateField_instance() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
class C {
|
||||
@internal int _i = 0;
|
||||
// ^^^^^^
|
||||
// [diag.invalidInternalAnnotation] Only public elements in a package's private API can be annotated as being internal.
|
||||
// ^^
|
||||
// [diag.unusedField] The value of the field '_i' isn't used.
|
||||
}
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.unusedField, 59, 2),
|
||||
error(diag.invalidInternalAnnotation, 59, 6),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateField_static() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
class C {
|
||||
@internal static int _i = 0;
|
||||
// ^^^^^^
|
||||
// [diag.invalidInternalAnnotation] Only public elements in a package's private API can be annotated as being internal.
|
||||
// ^^
|
||||
// [diag.unusedField] The value of the field '_i' isn't used.
|
||||
}
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.unusedField, 66, 2),
|
||||
error(diag.invalidInternalAnnotation, 66, 6),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateGetter() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
class C {
|
||||
@internal int get _i => 0;
|
||||
// ^^^^^^^^
|
||||
// [diag.invalidInternalAnnotation] Only public elements in a package's private API can be annotated as being internal.
|
||||
// ^^
|
||||
// [diag.unusedElement] The declaration '_i' isn't referenced.
|
||||
}
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 46, 8),
|
||||
error(diag.unusedElement, 63, 2),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateMethod_instance() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
class C {
|
||||
@internal void _f() {}
|
||||
// ^^^^^^^^
|
||||
// [diag.invalidInternalAnnotation] Only public elements in a package's private API can be annotated as being internal.
|
||||
// ^^
|
||||
// [diag.unusedElement] The declaration '_f' isn't referenced.
|
||||
}
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 46, 8),
|
||||
error(diag.unusedElement, 60, 2),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateMethod_static() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
class C {
|
||||
@internal static void _f() {}
|
||||
// ^^^^^^^^
|
||||
// [diag.invalidInternalAnnotation] Only public elements in a package's private API can be annotated as being internal.
|
||||
// ^^
|
||||
// [diag.unusedElement] The declaration '_f' isn't referenced.
|
||||
}
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 46, 8),
|
||||
error(diag.unusedElement, 67, 2),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateMixin() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal mixin _One {}
|
||||
// [diag.invalidInternalAnnotation][column 2][length 8] Only public elements in a package's private API can be annotated as being internal.
|
||||
// ^^^^
|
||||
// [diag.unusedElement] The declaration '_One' isn't referenced.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 34, 8),
|
||||
error(diag.unusedElement, 49, 4),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateTopLevelFunction() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal void _f() {}
|
||||
// [diag.invalidInternalAnnotation][column 2][length 8] Only public elements in a package's private API can be annotated as being internal.
|
||||
// ^^
|
||||
// [diag.unusedElement] The declaration '_f' isn't referenced.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 34, 8),
|
||||
error(diag.unusedElement, 48, 2),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateTopLevelVariable() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal int _i = 1;
|
||||
// ^^^^^^
|
||||
// [diag.invalidInternalAnnotation] Only public elements in a package's private API can be annotated as being internal.
|
||||
// ^^
|
||||
// [diag.unusedElement] The declaration '_i' isn't referenced.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 47, 6),
|
||||
error(diag.unusedElement, 47, 2),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_privateTypedef() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
@internal typedef _T = void Function();
|
||||
// [diag.invalidInternalAnnotation][column 2][length 8] Only public elements in a package's private API can be annotated as being internal.
|
||||
// ^^
|
||||
// [diag.unusedElement] The declaration '_T' isn't referenced.
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.invalidInternalAnnotation, 34, 8),
|
||||
error(diag.unusedElement, 51, 2),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_publicConstructor_named_privateClass() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
class _C {
|
||||
// ^^
|
||||
// [diag.unusedElement] The declaration '_C' isn't referenced.
|
||||
@internal _C.named();
|
||||
// ^^^^^^^^
|
||||
// [diag.invalidInternalAnnotation] Only public elements in a package's private API can be annotated as being internal.
|
||||
}
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.unusedElement, 39, 2),
|
||||
error(diag.invalidInternalAnnotation, 47, 8),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_publicConstructor_primary_privateClass() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
class _C() {
|
||||
// ^^
|
||||
// [diag.unusedElement] The declaration '_C' isn't referenced.
|
||||
@internal
|
||||
// ^^^^^^^^
|
||||
// [diag.invalidInternalAnnotation] Only public elements in a package's private API can be annotated as being internal.
|
||||
this;
|
||||
}
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.unusedElement, 39, 2),
|
||||
error(diag.invalidInternalAnnotation, 49, 8),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_publicConstructor_unnamed_privateClass() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
class _C {
|
||||
// ^^
|
||||
// [diag.unusedElement] The declaration '_C' isn't referenced.
|
||||
@internal _C();
|
||||
// ^^^^^^^^
|
||||
// [diag.invalidInternalAnnotation] Only public elements in a package's private API can be annotated as being internal.
|
||||
}
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.unusedElement, 39, 2),
|
||||
error(diag.invalidInternalAnnotation, 47, 8),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_publicMethod_privateClass() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
class _C {
|
||||
// ^^
|
||||
// [diag.unusedElement] The declaration '_C' isn't referenced.
|
||||
@internal void f() {}
|
||||
}
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [error(diag.unusedElement, 39, 2)]);
|
||||
}
|
||||
|
||||
void test_publicMethod_privateClass_static() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
class _C {
|
||||
// ^^
|
||||
// [diag.unusedElement] The declaration '_C' isn't referenced.
|
||||
@internal static void f() {}
|
||||
// ^
|
||||
// [diag.unusedElement] The declaration 'f' isn't referenced.
|
||||
}
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [
|
||||
error(diag.unusedElement, 39, 2),
|
||||
error(diag.unusedElement, 68, 1),
|
||||
]);
|
||||
}
|
||||
|
||||
void test_publicMethod_privateExtensionType() async {
|
||||
var result = await resolveFileCode(testPackageLibSrcFilePath, r'''
|
||||
await resolveFileWithDiagnostics(testPackageLibSrcFile, r'''
|
||||
import 'package:meta/meta.dart';
|
||||
extension type _E(int i) {
|
||||
// ^^
|
||||
// [diag.unusedElement] The declaration '_E' isn't referenced.
|
||||
@internal void f() {}
|
||||
}
|
||||
''');
|
||||
|
||||
assertErrorsInTestResult(result, [error(diag.unusedElement, 48, 2)]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'package:analyzer/src/diagnostic/diagnostic.dart' as diag;
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
import '../dart/resolution/context_collection_resolution.dart';
|
||||
@@ -85,8 +84,11 @@ import 'target.dart';
|
||||
analysisDriver.removeFile(filePath);
|
||||
await analysisDriver.applyPendingFileChanges();
|
||||
|
||||
var result = await resolveTestFile();
|
||||
assertErrorsInTestResult(result, [error(diag.uriDoesNotExist, 7, 13)]);
|
||||
await resolveFileWithDiagnostics(testFile, '''
|
||||
import 'target.dart';
|
||||
// ^^^^^^^^^^^^^
|
||||
// [diag.uriDoesNotExist] Target of URI doesn't exist: 'target.dart'.
|
||||
''');
|
||||
}
|
||||
|
||||
test_libraryImport_cannotResolve() async {
|
||||
@@ -116,7 +118,6 @@ main() {
|
||||
''');
|
||||
}
|
||||
|
||||
@failingTest
|
||||
test_libraryImport_disappears_when_fixed() async {
|
||||
await resolveTestCodeWithDiagnostics('''
|
||||
import 'target.dart';
|
||||
@@ -124,13 +125,17 @@ import 'target.dart';
|
||||
// [diag.uriDoesNotExist] Target of URI doesn't exist: 'target.dart'.
|
||||
''');
|
||||
|
||||
newFile('$testPackageLibPath/target.dart', '');
|
||||
var targetFile = newFile('$testPackageLibPath/target.dart', '');
|
||||
|
||||
// Make sure the error goes away.
|
||||
// TODO(brianwilkerson): The error does not go away, possibly because the
|
||||
// file is not being reanalyzed.
|
||||
var result = await resolveTestFile();
|
||||
assertErrorsInTestResult(result, [error(diag.unusedImport, 0, 0)]);
|
||||
var analysisDriver = driverFor(testFile);
|
||||
analysisDriver.changeFile2(targetFile);
|
||||
await analysisDriver.applyPendingFileChanges();
|
||||
|
||||
await resolveFileWithDiagnostics(testFile, '''
|
||||
import 'target.dart';
|
||||
// ^^^^^^^^^^^^^
|
||||
// [diag.unusedImport] Unused import: 'target.dart'.
|
||||
''');
|
||||
}
|
||||
|
||||
test_part() async {
|
||||
|
||||
Reference in New Issue
Block a user