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:
Konstantin Shcheglov
2026-05-28 08:52:34 -07:00
committed by dart-scoped@luci-project-accounts.iam.gserviceaccount.com
parent f81c7f2140
commit 9543bb6472
14 changed files with 1048 additions and 987 deletions
@@ -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 {