From eff9c288a4be791da4b6c2d26dc5754ea25ae4c0 Mon Sep 17 00:00:00 2001 From: Konstantin Shcheglov Date: Tue, 1 Mar 2022 19:39:38 +0000 Subject: [PATCH] Get LineInfo from the element's unit instead of re-parsing the file. Change-Id: I69681f299698458583bde63c853ead63a4cd3641 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/234665 Reviewed-by: Samuel Rawlins Reviewed-by: Brian Wilkerson Commit-Queue: Konstantin Shcheglov --- pkg/nnbd_migration/lib/instrumentation.dart | 18 ++++++-- pkg/nnbd_migration/lib/migration_cli.dart | 18 +++----- pkg/nnbd_migration/lib/nnbd_migration.dart | 1 - .../src/already_migrated_code_decorator.dart | 8 +--- .../lib/src/front_end/non_nullable_fix.dart | 8 ++-- pkg/nnbd_migration/lib/src/node_builder.dart | 32 ++++++-------- .../lib/src/nullability_migration_impl.dart | 42 ++++++++----------- .../lib/src/nullability_node_target.dart | 9 ++-- pkg/nnbd_migration/lib/src/variables.dart | 9 ++-- pkg/nnbd_migration/test/abstract_context.dart | 4 -- .../already_migrated_code_decorator_test.dart | 8 ++-- pkg/nnbd_migration/test/api_test.dart | 2 +- .../test/decorated_type_test.dart | 5 +-- .../front_end/nnbd_migration_test_base.dart | 2 +- .../test/instrumentation_test.dart | 2 +- .../test/migration_cli_test.dart | 23 ++++------ .../test/migration_visitor_test_base.dart | 11 +++-- pkg/nnbd_migration/tool/trial_migration.dart | 5 +-- 18 files changed, 80 insertions(+), 127 deletions(-) diff --git a/pkg/nnbd_migration/lib/instrumentation.dart b/pkg/nnbd_migration/lib/instrumentation.dart index c171029d55b..2091796053b 100644 --- a/pkg/nnbd_migration/lib/instrumentation.dart +++ b/pkg/nnbd_migration/lib/instrumentation.dart @@ -34,11 +34,21 @@ class CodeReference { location.columnNumber, _computeEnclosingName(node)); } - factory CodeReference.fromElement( - Element element, LineInfo Function(String) getLineInfo) { - var path = element.source!.fullName; + factory CodeReference.fromElement(Element element) { + var unitElement = element.thisOrAncestorOfType(); + if (unitElement == null) { + var enclosingElement = element.enclosingElement; + if (enclosingElement is LibraryElement) { + unitElement = enclosingElement.definingCompilationUnit; + } else { + throw StateError('Unexpected element: $element'); + } + } + + var path = unitElement.source.fullName; var offset = element.nameOffset; - var location = getLineInfo(path).getLocation(offset); + + var location = unitElement.lineInfo!.getLocation(offset); return CodeReference(path, offset, location.lineNumber, location.columnNumber, _computeElementFullName(element)); } diff --git a/pkg/nnbd_migration/lib/migration_cli.dart b/pkg/nnbd_migration/lib/migration_cli.dart index 93691b6a754..2a30f5500fe 100644 --- a/pkg/nnbd_migration/lib/migration_cli.dart +++ b/pkg/nnbd_migration/lib/migration_cli.dart @@ -546,17 +546,14 @@ class MigrationCliRunner implements DartFixListenerClient { resourceProvider.getFile(s).exists) .toSet(); - NonNullableFix createNonNullableFix( - DartFixListener listener, - ResourceProvider resourceProvider, - LineInfo Function(String path) getLineInfo, - Object? bindAddress, + NonNullableFix createNonNullableFix(DartFixListener listener, + ResourceProvider resourceProvider, Object? bindAddress, {List included = const [], int? preferredPort, String? summaryPath, required String sdkPath}) { - return NonNullableFix(listener, resourceProvider, getLineInfo, bindAddress, - logger, (String? path) => shouldBeMigrated(path!), + return NonNullableFix(listener, resourceProvider, bindAddress, logger, + (String? path) => shouldBeMigrated(path!), included: included, preferredPort: preferredPort, summaryPath: summaryPath, @@ -661,8 +658,8 @@ Exception details: _fixCodeProcessor = _FixCodeProcessor(analysisContext, this); _dartFixListener = DartFixListener( DriverProviderImpl(resourceProvider, analysisContext), this); - nonNullableFix = createNonNullableFix(_dartFixListener!, resourceProvider, - _fixCodeProcessor!.getLineInfo, computeBindAddress(), + nonNullableFix = createNonNullableFix( + _dartFixListener!, resourceProvider, computeBindAddress(), included: [options.directory], preferredPort: options.previewPort, summaryPath: options.summary, @@ -1000,9 +997,6 @@ class _FixCodeProcessor extends Object { bool get isPreviewServerRunning => _task?.isPreviewServerRunning ?? false; - LineInfo getLineInfo(String path) => - (context.currentSession.getFile(path) as FileResult).lineInfo; - void prepareToRerun() { var driver = context.driver; pathsToProcess = _migrationCli.computePathsToProcess(context); diff --git a/pkg/nnbd_migration/lib/nnbd_migration.dart b/pkg/nnbd_migration/lib/nnbd_migration.dart index a780bfa860d..c549d2d92cd 100644 --- a/pkg/nnbd_migration/lib/nnbd_migration.dart +++ b/pkg/nnbd_migration/lib/nnbd_migration.dart @@ -321,7 +321,6 @@ abstract class NullabilityMigration { /// should be warned about or removed (in the way specified by /// [removeViaComments]). factory NullabilityMigration(NullabilityMigrationListener? listener, - LineInfo Function(String) getLineInfo, {bool? permissive, NullabilityMigrationInstrumentation? instrumentation, bool? removeViaComments, diff --git a/pkg/nnbd_migration/lib/src/already_migrated_code_decorator.dart b/pkg/nnbd_migration/lib/src/already_migrated_code_decorator.dart index ae86a529ce0..8873cd0debd 100644 --- a/pkg/nnbd_migration/lib/src/already_migrated_code_decorator.dart +++ b/pkg/nnbd_migration/lib/src/already_migrated_code_decorator.dart @@ -6,7 +6,6 @@ import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/nullability_suffix.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:analyzer/dart/element/type_provider.dart'; -import 'package:analyzer/source/line_info.dart'; import 'package:analyzer/src/dart/element/type.dart'; import 'package:analyzer/src/generated/element_type_provider.dart'; import 'package:nnbd_migration/src/decorated_type.dart'; @@ -22,10 +21,7 @@ class AlreadyMigratedCodeDecorator { final TypeProvider _typeProvider; - final LineInfo Function(String) _getLineInfo; - - AlreadyMigratedCodeDecorator( - this._graph, this._typeProvider, this._getLineInfo); + AlreadyMigratedCodeDecorator(this._graph, this._typeProvider); /// Transforms [type], which should have come from code that has already been /// migrated to NNBD, into the corresponding [DecoratedType]. @@ -118,7 +114,7 @@ class AlreadyMigratedCodeDecorator { } return [ for (var t in allSupertypes) - decorate(t, class_, NullabilityNodeTarget.element(class_, _getLineInfo)) + decorate(t, class_, NullabilityNodeTarget.element(class_)) ]; } } diff --git a/pkg/nnbd_migration/lib/src/front_end/non_nullable_fix.dart b/pkg/nnbd_migration/lib/src/front_end/non_nullable_fix.dart index fea31afedbb..83e0fd0ba1d 100644 --- a/pkg/nnbd_migration/lib/src/front_end/non_nullable_fix.dart +++ b/pkg/nnbd_migration/lib/src/front_end/non_nullable_fix.dart @@ -57,8 +57,6 @@ class NonNullableFix { final ResourceProvider resourceProvider; - final LineInfo Function(String) _getLineInfo; - /// The HTTP server that serves the preview tool. HttpPreviewServer? _server; @@ -85,8 +83,8 @@ class NonNullableFix { /// Completes when the server has been shutdown. late Completer serverIsShutdown; - NonNullableFix(this.listener, this.resourceProvider, this._getLineInfo, - this.bindAddress, this._logger, this.shouldBeMigratedFunction, + NonNullableFix(this.listener, this.resourceProvider, this.bindAddress, + this._logger, this.shouldBeMigratedFunction, {List included = const [], this.preferredPort, this.summaryPath, @@ -176,7 +174,7 @@ class NonNullableFix { ? null : MigrationSummary(summaryPath, resourceProvider, includedRoot)); adapter = NullabilityMigrationAdapter(listener); - migration = NullabilityMigration(adapter, _getLineInfo, + migration = NullabilityMigration(adapter, permissive: true, instrumentation: instrumentationListener); } diff --git a/pkg/nnbd_migration/lib/src/node_builder.dart b/pkg/nnbd_migration/lib/src/node_builder.dart index 965e616b100..fde5e28e785 100644 --- a/pkg/nnbd_migration/lib/src/node_builder.dart +++ b/pkg/nnbd_migration/lib/src/node_builder.dart @@ -42,8 +42,6 @@ class NodeBuilder extends GeneralizingAstVisitor @override final Source? source; - final LineInfo Function(String) _getLineInfo; - /// If the parameters of a function or method are being visited, the /// [DecoratedType]s of the function's named parameters that have been seen so /// far. Otherwise `null`. @@ -72,7 +70,7 @@ class NodeBuilder extends GeneralizingAstVisitor bool _visitingExternalDeclaration = false; NodeBuilder(this._variables, this.source, this.listener, this._graph, - this._typeProvider, this._getLineInfo, + this._typeProvider, {this.instrumentation}); NullabilityNodeTarget get safeTarget { @@ -95,7 +93,7 @@ class NodeBuilder extends GeneralizingAstVisitor var exceptionElement = node.exceptionParameter?.staticElement; var target = exceptionElement == null ? NullabilityNodeTarget.text('exception type') - : NullabilityNodeTarget.element(exceptionElement, _getLineInfo); + : NullabilityNodeTarget.element(exceptionElement); DecoratedType? exceptionType = _pushNullabilityNodeTarget( target, () => node.exceptionType?.accept(this)); if (node.exceptionParameter != null) { @@ -167,8 +165,7 @@ class NodeBuilder extends GeneralizingAstVisitor assert(constructorElement.isSynthetic); var decoratedReturnType = _createDecoratedTypeForClass(classElement, node); - var target = - NullabilityNodeTarget.element(constructorElement, _getLineInfo); + var target = NullabilityNodeTarget.element(constructorElement); var functionType = DecoratedType.forImplicitFunction( _typeProvider, constructorElement.type, _graph.never, _graph, target, returnType: decoratedReturnType); @@ -217,7 +214,7 @@ class NodeBuilder extends GeneralizingAstVisitor DecoratedType? visitDeclaredIdentifier(DeclaredIdentifier node) { node.metadata.accept(this); var declaredElement = node.declaredElement!; - var target = NullabilityNodeTarget.element(declaredElement, _getLineInfo); + var target = NullabilityNodeTarget.element(declaredElement); DecoratedType? type = _pushNullabilityNodeTarget(target, () => node.type?.accept(this)); if (type == null) { @@ -267,13 +264,12 @@ class NodeBuilder extends GeneralizingAstVisitor for (var item in node.constants) { var declaredElement = item.declaredElement!; - var target = NullabilityNodeTarget.element(declaredElement, _getLineInfo); + var target = NullabilityNodeTarget.element(declaredElement); _variables!.recordDecoratedElementType(declaredElement, DecoratedType(classElement.thisType, makeNonNullNode(target, item))); } final valuesGetter = classElement.getGetter('values')!; - var valuesTarget = - NullabilityNodeTarget.element(valuesGetter, _getLineInfo); + var valuesTarget = NullabilityNodeTarget.element(valuesGetter); _variables!.recordDecoratedElementType( valuesGetter, DecoratedType(valuesGetter.type, makeNonNullNode(valuesTarget), @@ -363,7 +359,7 @@ class NodeBuilder extends GeneralizingAstVisitor var functionType = functionElement.type; var returnType = node.returnType; DecoratedType? decoratedReturnType; - var target = NullabilityNodeTarget.element(declaredElement, _getLineInfo); + var target = NullabilityNodeTarget.element(declaredElement); if (returnType != null) { _pushNullabilityNodeTarget(target.returnType(), () { decoratedReturnType = returnType.accept(this); @@ -410,8 +406,7 @@ class NodeBuilder extends GeneralizingAstVisitor node.metadata.accept(this); DecoratedType? decoratedFunctionType; node.typeParameters?.accept(this); - var target = - NullabilityNodeTarget.element(node.declaredElement!, _getLineInfo); + var target = NullabilityNodeTarget.element(node.declaredElement!); _pushNullabilityNodeTarget(target, () { decoratedFunctionType = node.functionType!.accept(this); }); @@ -647,8 +642,7 @@ class NodeBuilder extends GeneralizingAstVisitor node.metadata.accept(this); var typeAnnotation = node.type; var declaredType = _pushNullabilityNodeTarget( - NullabilityNodeTarget.element( - node.variables.first.declaredElement!, _getLineInfo), + NullabilityNodeTarget.element(node.variables.first.declaredElement!), () => typeAnnotation?.accept(this)); var hint = getPrefixHint(node.firstTokenAfterCommentAndMetadata); if (hint != null && hint.kind == HintCommentKind.late_) { @@ -663,8 +657,7 @@ class NodeBuilder extends GeneralizingAstVisitor var declaredElement = variable.declaredElement; var type = declaredType; if (type == null) { - var target = - NullabilityNodeTarget.element(declaredElement!, _getLineInfo); + var target = NullabilityNodeTarget.element(declaredElement!); type = DecoratedType.forImplicitType( _typeProvider, declaredElement.type, _graph, target); instrumentation?.implicitType(source, node, type); @@ -747,7 +740,7 @@ class NodeBuilder extends GeneralizingAstVisitor } var functionType = declaredElement.type; DecoratedType? decoratedReturnType; - var target = NullabilityNodeTarget.element(declaredElement, _getLineInfo); + var target = NullabilityNodeTarget.element(declaredElement); if (returnType != null) { _pushNullabilityNodeTarget(target.returnType(), () { decoratedReturnType = returnType.accept(this); @@ -931,8 +924,7 @@ class NodeBuilder extends GeneralizingAstVisitor } var decoratedSupertypes = {}; _pushNullabilityNodeTarget( - NullabilityNodeTarget.element(declaredElement, _getLineInfo).supertype, - () { + NullabilityNodeTarget.element(declaredElement).supertype, () { for (var supertype in supertypes) { DecoratedType? decoratedSupertype; if (supertype == null) { diff --git a/pkg/nnbd_migration/lib/src/nullability_migration_impl.dart b/pkg/nnbd_migration/lib/src/nullability_migration_impl.dart index a9d155eaf24..c0f6603eb6e 100644 --- a/pkg/nnbd_migration/lib/src/nullability_migration_impl.dart +++ b/pkg/nnbd_migration/lib/src/nullability_migration_impl.dart @@ -49,8 +49,6 @@ class NullabilityMigrationImpl implements NullabilityMigration { final _decoratedTypeParameterBounds = DecoratedTypeParameterBounds(); - final LineInfo Function(String) _getLineInfo; - /// Map from [Source] object to a boolean indicating whether the source is /// opted in to null safety. final Map _libraryOptInStatus = {}; @@ -77,28 +75,27 @@ class NullabilityMigrationImpl implements NullabilityMigration { /// should be warned about or removed (in the way specified by /// [removeViaComments]). NullabilityMigrationImpl(NullabilityMigrationListener? listener, - LineInfo Function(String) getLineInfo, {bool? permissive = false, NullabilityMigrationInstrumentation? instrumentation, bool? removeViaComments = false, bool? warnOnWeakCode = true}) : this._( - listener, - NullabilityGraph(instrumentation: instrumentation), - permissive, - instrumentation, - removeViaComments, - warnOnWeakCode, - getLineInfo); + listener, + NullabilityGraph(instrumentation: instrumentation), + permissive, + instrumentation, + removeViaComments, + warnOnWeakCode, + ); NullabilityMigrationImpl._( - this.listener, - this._graph, - this._permissive, - this._instrumentation, - this.removeViaComments, - this.warnOnWeakCode, - this._getLineInfo) { + this.listener, + this._graph, + this._permissive, + this._instrumentation, + this.removeViaComments, + this.warnOnWeakCode, + ) { _instrumentation?.immutableNodes(_graph.never, _graph.always); } @@ -199,20 +196,15 @@ class NullabilityMigrationImpl implements NullabilityMigration { _recordTransitiveImportExportOptInStatus( result.libraryElement.exportedLibraries); if (_variables == null) { - _variables = Variables(_graph, result.typeProvider, _getLineInfo, + _variables = Variables(_graph, result.typeProvider, instrumentation: _instrumentation); _decoratedClassHierarchy = DecoratedClassHierarchy(_variables, _graph); } var unit = result.unit; try { DecoratedTypeParameterBounds.current = _decoratedTypeParameterBounds; - unit.accept(NodeBuilder( - _variables, - unit.declaredElement!.source, - _permissive! ? listener : null, - _graph, - result.typeProvider, - _getLineInfo, + unit.accept(NodeBuilder(_variables, unit.declaredElement!.source, + _permissive! ? listener : null, _graph, result.typeProvider, instrumentation: _instrumentation)); } finally { DecoratedTypeParameterBounds.current = null; diff --git a/pkg/nnbd_migration/lib/src/nullability_node_target.dart b/pkg/nnbd_migration/lib/src/nullability_node_target.dart index da43dbd5a41..38833b971d8 100644 --- a/pkg/nnbd_migration/lib/src/nullability_node_target.dart +++ b/pkg/nnbd_migration/lib/src/nullability_node_target.dart @@ -4,7 +4,6 @@ import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/element/element.dart'; -import 'package:analyzer/source/line_info.dart'; import 'package:nnbd_migration/instrumentation.dart'; String _computeElementName(Element? element) { @@ -29,8 +28,7 @@ String _computeElementName(Element? element) { /// code is referenced by a given nullability node. abstract class NullabilityNodeTarget { /// Creates a [NullabilityNodeTarget] referring to a particular element. - factory NullabilityNodeTarget.element( - Element element, LineInfo Function(String) getLineInfo) = + factory NullabilityNodeTarget.element(Element element) = _NullabilityNodeTarget_Element; /// Creates a [NullabilityNodeTarget] with a simple text description. @@ -111,10 +109,9 @@ class _NullabilityNodeTarget_Element extends NullabilityNodeTarget { final CodeReference codeReference; - _NullabilityNodeTarget_Element( - Element element, LineInfo Function(String) getLineInfo) + _NullabilityNodeTarget_Element(Element element) : name = _computeElementName(element), - codeReference = CodeReference.fromElement(element, getLineInfo), + codeReference = CodeReference.fromElement(element), super._(); @override diff --git a/pkg/nnbd_migration/lib/src/variables.dart b/pkg/nnbd_migration/lib/src/variables.dart index 7222753d3b5..8246f1402de 100644 --- a/pkg/nnbd_migration/lib/src/variables.dart +++ b/pkg/nnbd_migration/lib/src/variables.dart @@ -69,12 +69,9 @@ class Variables { final NullabilityMigrationInstrumentation? instrumentation; - final LineInfo Function(String) _getLineInfo; - - Variables(this._graph, this._typeProvider, this._getLineInfo, - {this.instrumentation}) + Variables(this._graph, this._typeProvider, {this.instrumentation}) : _alreadyMigratedCodeDecorator = - AlreadyMigratedCodeDecorator(_graph, _typeProvider, _getLineInfo); + AlreadyMigratedCodeDecorator(_graph, _typeProvider); /// Given a [class_], gets the decorated type information for the superclasses /// it directly implements/extends/etc. @@ -400,7 +397,7 @@ class Variables { element = element.aliasedElement!; } - var target = NullabilityNodeTarget.element(element, _getLineInfo); + var target = NullabilityNodeTarget.element(element); if (element is FunctionTypedElement) { decoratedType = _alreadyMigratedCodeDecorator.decorate( element.preMigrationType, element, target); diff --git a/pkg/nnbd_migration/test/abstract_context.dart b/pkg/nnbd_migration/test/abstract_context.dart index 51c7632ba47..2965a8aa404 100644 --- a/pkg/nnbd_migration/test/abstract_context.dart +++ b/pkg/nnbd_migration/test/abstract_context.dart @@ -5,7 +5,6 @@ import 'dart:convert'; import 'package:analyzer/dart/analysis/analysis_context.dart'; -import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/analysis/session.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/file_system/overlay_file_system.dart'; @@ -165,9 +164,6 @@ export 'package:test_core/test_core.dart'; return _getContext(path).driver; } - LineInfo getLineInfo(String path) => - (session.getFile(path) as FileResult).lineInfo; - void setUp() { setupResourceProvider(); overlayResourceProvider = OverlayResourceProvider(resourceProvider); diff --git a/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart b/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart index 7eeea96a725..dcc89c4f717 100644 --- a/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart +++ b/pkg/nnbd_migration/test/already_migrated_code_decorator_test.dart @@ -10,7 +10,6 @@ import 'package:analyzer/dart/element/type.dart'; import 'package:analyzer/dart/element/type_provider.dart'; import 'package:analyzer/src/dart/element/element.dart'; import 'package:analyzer/src/dart/element/type.dart'; -import 'package:analyzer/src/generated/source.dart'; import 'package:analyzer/src/generated/utilities_dart.dart'; import 'package:analyzer/src/test_utilities/find_element.dart'; import 'package:analyzer/src/test_utilities/find_node.dart'; @@ -353,7 +352,7 @@ class _AlreadyMigratedCodeDecoratorTestBase { expect(decoratedSupertypes, hasLength(2)); // TODO(scheglov) Use location matcher. withElement.checkObject(decoratedSupertypes[0], - withElement.checkExplicitlyNonNullable, 'Future (async.dart:1:79)'); + withElement.checkExplicitlyNonNullable, 'Future (async.dart:7:16)'); // Since Future is a subtype of FutureOr, we consider FutureOr to // be an immediate supertype, even though the class declaration for Future // doesn't mention FutureOr. @@ -363,7 +362,7 @@ class _AlreadyMigratedCodeDecoratorTestBase { withElement.checkExplicitlyNonNullable, (t, displayName) => withElement.checkTypeParameter( t!, withElement.checkExplicitlyNonNullable, typeParam, displayName), - 'Future (async.dart:1:79)'); + 'Future (async.dart:7:16)'); } Future test_getImmediateSupertypes_generic() async { @@ -492,8 +491,7 @@ class _ContextWithElement with EdgeTester { NullabilityNode get always => graph.always; AlreadyMigratedCodeDecorator get decorator { - return AlreadyMigratedCodeDecorator( - graph, typeProvider, (_) => LineInfo([0])); + return AlreadyMigratedCodeDecorator(graph, typeProvider); } NullabilityNode get never => graph.never; diff --git a/pkg/nnbd_migration/test/api_test.dart b/pkg/nnbd_migration/test/api_test.dart index e2799e871aa..c88be9a3445 100644 --- a/pkg/nnbd_migration/test/api_test.dart +++ b/pkg/nnbd_migration/test/api_test.dart @@ -60,7 +60,7 @@ abstract class _ProvisionalApiTestBase extends AbstractContextTest { newFile(path, content: input[path]!); } var listener = TestMigrationListener(); - var migration = NullabilityMigration(listener, getLineInfo, + var migration = NullabilityMigration(listener, permissive: _usePermissiveMode, removeViaComments: removeViaComments, warnOnWeakCode: warnOnWeakCode); diff --git a/pkg/nnbd_migration/test/decorated_type_test.dart b/pkg/nnbd_migration/test/decorated_type_test.dart index 3f28996704c..0ca6fe80d26 100644 --- a/pkg/nnbd_migration/test/decorated_type_test.dart +++ b/pkg/nnbd_migration/test/decorated_type_test.dart @@ -5,7 +5,6 @@ import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/type.dart'; import 'package:analyzer/dart/element/type_provider.dart'; -import 'package:analyzer/source/line_info.dart'; import 'package:analyzer/src/dart/element/type.dart'; import 'package:analyzer/src/generated/element_type_provider.dart'; import 'package:analyzer/src/generated/testing/test_type_provider.dart'; @@ -41,7 +40,7 @@ class DecoratedTypeTest extends Object factory DecoratedTypeTest() { var typeProvider = TestTypeProvider(); var graph = NullabilityGraph(); - var variables = Variables(graph, typeProvider, _getLineInfo); + var variables = Variables(graph, typeProvider); return DecoratedTypeTest._(graph, typeProvider, variables); } @@ -616,8 +615,6 @@ class DecoratedTypeTest extends Object var decoratedType = function(dynamic_, positional: [xType], node: always); expect(decoratedType.toString(), 'dynamic Function([$xType])?'); } - - static LineInfo _getLineInfo(String path) => LineInfo([0]); } class _ElementTypeProvider extends ElementTypeProvider { diff --git a/pkg/nnbd_migration/test/front_end/nnbd_migration_test_base.dart b/pkg/nnbd_migration/test/front_end/nnbd_migration_test_base.dart index 451a1d79942..047149fba37 100644 --- a/pkg/nnbd_migration/test/front_end/nnbd_migration_test_base.dart +++ b/pkg/nnbd_migration/test/front_end/nnbd_migration_test_base.dart @@ -228,7 +228,7 @@ class NnbdMigrationTestBase extends AbstractAnalysisTest { var listener = DartFixListener(server, ListenerClient()); var instrumentationListener = InstrumentationListener(); var adapter = NullabilityMigrationAdapter(listener); - var migration = NullabilityMigration(adapter, getLineInfo, + var migration = NullabilityMigration(adapter, permissive: false, instrumentation: instrumentationListener, removeViaComments: removeViaComments, diff --git a/pkg/nnbd_migration/test/instrumentation_test.dart b/pkg/nnbd_migration/test/instrumentation_test.dart index 821b21cc3b5..f9a413115d8 100644 --- a/pkg/nnbd_migration/test/instrumentation_test.dart +++ b/pkg/nnbd_migration/test/instrumentation_test.dart @@ -144,7 +144,7 @@ abstract class _InstrumentationTestBase extends AbstractContextTest { var sourcePath = convertPath('$testsPath/lib/test.dart'); newFile(sourcePath, content: content); var listener = TestMigrationListener(); - var migration = NullabilityMigration(listener, getLineInfo, + var migration = NullabilityMigration(listener, instrumentation: _InstrumentationClient(this), removeViaComments: removeViaComments, warnOnWeakCode: warnOnWeakCode); diff --git a/pkg/nnbd_migration/test/migration_cli_test.dart b/pkg/nnbd_migration/test/migration_cli_test.dart index c0523f6d6c5..0d289f8ad0d 100644 --- a/pkg/nnbd_migration/test/migration_cli_test.dart +++ b/pkg/nnbd_migration/test/migration_cli_test.dart @@ -11,7 +11,6 @@ import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/file_system/file_system.dart' show ResourceProvider; import 'package:analyzer/file_system/memory_file_system.dart'; import 'package:analyzer/file_system/physical_file_system.dart'; -import 'package:analyzer/source/line_info.dart'; import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart'; import 'package:analyzer/src/test_utilities/mock_sdk.dart' as mock_sdk; import 'package:args/args.dart'; @@ -63,17 +62,13 @@ class _ExceptionGeneratingInstrumentationListener /// Specialization of [NonNullableFix] that generates artificial exceptions, so /// that we can test they are properly propagated to top level. class _ExceptionGeneratingNonNullableFix extends NonNullableFix { - _ExceptionGeneratingNonNullableFix( - DartFixListener listener, - ResourceProvider resourceProvider, - LineInfo Function(String) getLineInfo, - Object? bindAddress, - Logger logger, + _ExceptionGeneratingNonNullableFix(DartFixListener listener, + ResourceProvider resourceProvider, Object? bindAddress, Logger logger, {List included = const [], int? preferredPort, String? summaryPath, required String sdkPath}) - : super(listener, resourceProvider, getLineInfo, bindAddress, logger, + : super(listener, resourceProvider, bindAddress, logger, (String? path) => true, included: included, preferredPort: preferredPort, @@ -141,25 +136,21 @@ class _MigrationCliRunner extends MigrationCliRunner { _sortPaths(super.computePathsToProcess(context)); @override - NonNullableFix createNonNullableFix( - DartFixListener listener, - ResourceProvider resourceProvider, - LineInfo Function(String path) getLineInfo, - Object? bindAddress, + NonNullableFix createNonNullableFix(DartFixListener listener, + ResourceProvider resourceProvider, Object? bindAddress, {List included = const [], int? preferredPort, String? summaryPath, required String sdkPath}) { if (cli._test.injectArtificialException) { return _ExceptionGeneratingNonNullableFix( - listener, resourceProvider, getLineInfo, bindAddress, logger, + listener, resourceProvider, bindAddress, logger, included: included, preferredPort: preferredPort, summaryPath: summaryPath, sdkPath: sdkPath); } else { - return super.createNonNullableFix( - listener, resourceProvider, getLineInfo, bindAddress, + return super.createNonNullableFix(listener, resourceProvider, bindAddress, included: included, preferredPort: preferredPort, summaryPath: summaryPath, diff --git a/pkg/nnbd_migration/test/migration_visitor_test_base.dart b/pkg/nnbd_migration/test/migration_visitor_test_base.dart index 85448d00cdc..3f57caae3e0 100644 --- a/pkg/nnbd_migration/test/migration_visitor_test_base.dart +++ b/pkg/nnbd_migration/test/migration_visitor_test_base.dart @@ -304,9 +304,8 @@ class InstrumentedVariables extends Variables { final _expressionChecks = {}; - InstrumentedVariables(NullabilityGraph graph, TypeProvider typeProvider, - LineInfo Function(String) getLineInfo) - : super(graph, typeProvider, getLineInfo); + InstrumentedVariables(NullabilityGraph graph, TypeProvider typeProvider) + : super(graph, typeProvider); /// Gets the [ExpressionChecks] associated with the given [expression]. ExpressionChecksOrigin? checkExpression(Expression expression) => @@ -370,9 +369,9 @@ class MigrationVisitorTestBase extends AbstractSingleUnitTest with EdgeTester { Future analyze(String code) async { await resolveTestUnit(code); - variables = InstrumentedVariables(graph, typeProvider, getLineInfo); - testUnit!.accept(NodeBuilder( - variables, testSource, null, graph, typeProvider, getLineInfo)); + variables = InstrumentedVariables(graph, typeProvider); + testUnit! + .accept(NodeBuilder(variables, testSource, null, graph, typeProvider)); return testUnit!; } diff --git a/pkg/nnbd_migration/tool/trial_migration.dart b/pkg/nnbd_migration/tool/trial_migration.dart index 982cbf797e3..d4f9d61e630 100644 --- a/pkg/nnbd_migration/tool/trial_migration.dart +++ b/pkg/nnbd_migration/tool/trial_migration.dart @@ -66,10 +66,7 @@ void main(List args) async { context.contextRoot.analyzedFiles().where((s) => s.endsWith('.dart')); files.addAll(localFiles); var session = context.currentSession; - LineInfo getLineInfo(String path) => - (session.getFile(path) as FileResult).lineInfo; - var migration = - NullabilityMigration(listener, getLineInfo, permissive: true); + var migration = NullabilityMigration(listener, permissive: true); for (var file in localFiles) { var resolvedUnit = await session.getResolvedUnit(file) as ResolvedUnitResult;