From bf71251dcd5400cbc7764096f73388fb51225eca Mon Sep 17 00:00:00 2001 From: Konstantin Shcheglov Date: Wed, 10 Jun 2026 11:25:41 -0700 Subject: [PATCH] CQ. Remove ResolutionTest.error/message, all goes through inline expected diagnostics now. Change-Id: I46fd2efe14e1bb46fa7ec12423c19fcf551bdca9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/510660 Reviewed-by: Johnni Winther --- .../test/src/dart/resolution/resolution.dart | 30 --- .../diagnostics/ambiguous_import_test.dart | 34 ++-- .../duplicate_definition_test.dart | 173 +++++++----------- 3 files changed, 82 insertions(+), 155 deletions(-) diff --git a/pkg/analyzer/test/src/dart/resolution/resolution.dart b/pkg/analyzer/test/src/dart/resolution/resolution.dart index e4fb53348d8..6595058749f 100644 --- a/pkg/analyzer/test/src/dart/resolution/resolution.dart +++ b/pkg/analyzer/test/src/dart/resolution/resolution.dart @@ -8,7 +8,6 @@ import 'package:analyzer/dart/constant/value.dart'; import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:analyzer/diagnostic/diagnostic.dart'; -import 'package:analyzer/error/error.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/src/dart/analysis/results.dart'; import 'package:analyzer/src/dart/ast/ast.dart'; @@ -23,7 +22,6 @@ import 'package:analyzer/src/dart/element/type_system.dart'; import 'package:analyzer/src/test_utilities/find_element2.dart'; import 'package:analyzer/src/test_utilities/find_node.dart'; import 'package:analyzer_testing/resource_provider_mixin.dart'; -import 'package:analyzer_testing/src/analysis_rule/pub_package_resolution.dart'; import 'package:analyzer_testing/src/expected_diagnostics.dart'; import 'package:analyzer_utilities/testing/tree_string_sink.dart'; import 'package:test/test.dart'; @@ -242,31 +240,6 @@ mixin ResolutionTest implements ResourceProviderMixin { expect(node.staticType, isNull); } - ExpectedError error( - DiagnosticCode code, - int offset, - int length, { - Pattern? correctionContains, - // TODO(FMorschel): refactor the uses of this to prefer `messageContains` - String? text, - List messageContains = const [], - List contextMessages = - const [], - }) { - assert( - text == null || messageContains.isEmpty, - 'Only use one of text or messageContains', - ); - return ExpectedError( - code, - offset, - length, - correctionContains: correctionContains, - messageContainsAll: text != null ? [text] : messageContains, - contextMessages: contextMessages, - ); - } - Element? getNodeElement2(AstNode node) { if (node is Annotation) { return node.element; @@ -318,9 +291,6 @@ mixin ResolutionTest implements ResourceProviderMixin { } } - ExpectedContextMessage message(File file, int offset, int length) => - ExpectedContextMessage(file, offset, length); - Future resolveFile(File file); /// Resolve [file] and return a test view of it. diff --git a/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart b/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart index e99e6ff6566..533e91f3091 100644 --- a/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart +++ b/pkg/analyzer/test/src/diagnostics/ambiguous_import_test.dart @@ -2,13 +2,8 @@ // 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/dart/analysis/results.dart'; -import 'package:analyzer/src/diagnostic/diagnostic.dart' as diag; -import 'package:matcher/src/core_matchers.dart'; -import 'package:test/test.dart' show expect; import 'package:test_reflective_loader/test_reflective_loader.dart'; -import '../../generated/test_support.dart'; import '../dart/resolution/context_collection_resolution.dart'; import '../dart/resolution/node_text_expectations.dart'; @@ -101,24 +96,23 @@ class N {} newFile("$testPackageLibPath/lib2.dart", ''' class N {} '''); - var partFile = newFile('$testPackageLibPath/part.dart', ''' -part of 'lib.dart'; -class A extends N {} -'''); - var libFile = newFile('$testPackageLibPath/lib.dart', ''' + var partFile = getFile('$testPackageLibPath/part.dart'); + var libFile = getFile('$testPackageLibPath/lib.dart'); + + await resolveFilesWithDiagnostics({ + libFile: r''' import 'lib1.dart'; import 'lib2.dart'; part 'part.dart'; -'''); - ResolvedUnitResult libResult = await resolveFile(libFile); - ResolvedUnitResult partResult = await resolveFile(partFile); - expect(libResult.diagnostics, hasLength(0)); - GatheringDiagnosticListener() - ..addAll(partResult.diagnostics) - ..assertErrors([ - error(diag.extendsNonClass, 36, 1), - error(diag.ambiguousImport, 36, 1), - ]); +''', + partFile: r''' +part of 'lib.dart'; +class A extends N {} +// ^ +// [diag.extendsNonClass] Classes can only extend other classes. +// [diag.ambiguousImport] The name 'N' is defined in the libraries 'package:test/lib1.dart' and 'package:test/lib2.dart'. +''', + }); } test_instanceCreation() async { diff --git a/pkg/analyzer/test/src/diagnostics/duplicate_definition_test.dart b/pkg/analyzer/test/src/diagnostics/duplicate_definition_test.dart index 8eda2f3c227..aa718c94cd6 100644 --- a/pkg/analyzer/test/src/diagnostics/duplicate_definition_test.dart +++ b/pkg/analyzer/test/src/diagnostics/duplicate_definition_test.dart @@ -2,10 +2,8 @@ // 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 '../../generated/test_support.dart'; import '../dart/resolution/context_collection_resolution.dart'; import '../dart/resolution/node_text_expectations.dart'; @@ -4153,69 +4151,52 @@ augment class A {} } test_class_library_part() async { - var lib = newFile('$testPackageLibPath/lib.dart', ''' + var lib = getFile('$testPackageLibPath/lib.dart'); + var a = getFile('$testPackageLibPath/a.dart'); + + await resolveFilesWithDiagnostics({ + lib: r''' part 'a.dart'; class A {} -'''); - - var a = newFile('$testPackageLibPath/a.dart', ''' +// ^ +// [context 1] The first definition of this name. +''', + a: r''' part of 'lib.dart'; class A {} -'''); - - await resolveFile(lib); - - var aResult = await resolveFile(a); - GatheringDiagnosticListener() - ..addAll(aResult.diagnostics) - ..assertErrors([ - error( - diag.duplicateDefinition, - 27, - 1, - contextMessages: [message(lib, 22, 1)], - ), - ]); +// ^ +// [diag.duplicateDefinition][context 1] The name 'A' is already defined. +''', + }); } test_class_part_part() async { - var lib = newFile('$testPackageLibPath/lib.dart', ''' + var lib = getFile('$testPackageLibPath/lib.dart'); + var a = getFile('$testPackageLibPath/a.dart'); + var b = getFile('$testPackageLibPath/b.dart'); + + await resolveFilesWithDiagnostics({ + lib: r''' part 'a.dart'; part 'b.dart'; -'''); - - var a = newFile('$testPackageLibPath/a.dart', ''' +''', + a: r''' part of 'lib.dart'; class A {} -'''); - - var b = newFile('$testPackageLibPath/b.dart', ''' +// ^ +// [context 1] The first definition of this name. +''', + b: r''' part of 'lib.dart'; class A {} -'''); - - await resolveFile(lib); - - var aResult = await resolveFile(a); - GatheringDiagnosticListener() - ..addAll(aResult.diagnostics) - ..assertNoErrors(); - - var bResult = await resolveFile(b); - GatheringDiagnosticListener() - ..addAll(bResult.diagnostics) - ..assertErrors([ - error( - diag.duplicateDefinition, - 27, - 1, - contextMessages: [message(a, 27, 1)], - ), - ]); +// ^ +// [diag.duplicateDefinition][context 1] The name 'A' is already defined. +''', + }); } test_extension() async { @@ -4231,31 +4212,25 @@ extension A on int {} } test_extension_library_part() async { - var lib = newFile('$testPackageLibPath/lib.dart', ''' + var lib = getFile('$testPackageLibPath/lib.dart'); + var a = getFile('$testPackageLibPath/a.dart'); + + await resolveFilesWithDiagnostics({ + lib: r''' part 'a.dart'; extension A on int {} -'''); - - var a = newFile('$testPackageLibPath/a.dart', ''' +// ^ +// [context 1] The first definition of this name. +''', + a: r''' part of 'lib.dart'; extension A on int {} -'''); - - await resolveFile(lib); - - var aResult = await resolveFile(a); - GatheringDiagnosticListener() - ..addAll(aResult.diagnostics) - ..assertErrors([ - error( - diag.duplicateDefinition, - 31, - 1, - contextMessages: [message(lib, 26, 1)], - ), - ]); +// ^ +// [diag.duplicateDefinition][context 1] The name 'A' is already defined. +''', + }); } test_extensionType() async { @@ -4271,31 +4246,25 @@ extension type A(int it) {} } test_extensionType_library_part() async { - var lib = newFile('$testPackageLibPath/lib.dart', ''' + var lib = getFile('$testPackageLibPath/lib.dart'); + var a = getFile('$testPackageLibPath/a.dart'); + + await resolveFilesWithDiagnostics({ + lib: r''' part 'a.dart'; extension type A(int it) {} -'''); - - var a = newFile('$testPackageLibPath/a.dart', ''' +// ^ +// [context 1] The first definition of this name. +''', + a: r''' part of 'lib.dart'; extension type A(int it) {} -'''); - - await resolveFile(lib); - - var aResult = await resolveFile(a); - GatheringDiagnosticListener() - ..addAll(aResult.diagnostics) - ..assertErrors([ - error( - diag.duplicateDefinition, - 36, - 1, - contextMessages: [message(lib, 31, 1)], - ), - ]); +// ^ +// [diag.duplicateDefinition][context 1] The name 'A' is already defined. +''', + }); } test_mixin() async { @@ -4318,31 +4287,25 @@ augment mixin A {} } test_mixin_library_part() async { - var lib = newFile('$testPackageLibPath/lib.dart', ''' + var lib = getFile('$testPackageLibPath/lib.dart'); + var a = getFile('$testPackageLibPath/a.dart'); + + await resolveFilesWithDiagnostics({ + lib: r''' part 'a.dart'; mixin A {} -'''); - - var a = newFile('$testPackageLibPath/a.dart', ''' +// ^ +// [context 1] The first definition of this name. +''', + a: r''' part of 'lib.dart'; mixin A {} -'''); - - await resolveFile(lib); - - var aResult = await resolveFile(a); - GatheringDiagnosticListener() - ..addAll(aResult.diagnostics) - ..assertErrors([ - error( - diag.duplicateDefinition, - 27, - 1, - contextMessages: [message(lib, 22, 1)], - ), - ]); +// ^ +// [diag.duplicateDefinition][context 1] The name 'A' is already defined. +''', + }); } test_topLevelVariable() async {