Flow analysis: Remove unnecessary argument from tryFinallyStatement_end.
Flow analysis stopped using this argument (the AST node for the
finally block) some time ago, but I kept it around so I could assert
that clients didn't unnecessarily store assigned variables info for
it. It's been long enough now that we can eliminate this code
entirely.
Change-Id: I8c64e2b4fc5b154f441ec2d057637f3dc9ced277
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190060
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
diff --git a/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart b/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
index fe7cfc1..6c06628 100644
--- a/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart
@@ -232,11 +232,6 @@
'{${_info.keys.map((k) => '$k (${k.hashCode})').join(',')}}'));
}
- /// Indicates whether information is stored for the given [node].
- bool _hasInfoForNode(Node node) {
- return _info[node] != null;
- }
-
void _printOn(StringBuffer sb) {
sb.write('_info=$_info,');
sb.write('_stack=$_stack,');
@@ -894,11 +889,7 @@
/// Call this method just after visiting a "try/finally" statement.
/// See [tryFinallyStatement_bodyBegin] for details.
- ///
- /// [finallyBlock] should be the same node that was passed to
- /// [AssignedVariables.endNode] for the "finally" part of the try/finally
- /// statement.
- void tryFinallyStatement_end(Node finallyBlock);
+ void tryFinallyStatement_end();
/// Call this method just before visiting the finally block of a "try/finally"
/// statement. See [tryFinallyStatement_bodyBegin] for details.
@@ -1439,9 +1430,9 @@
}
@override
- void tryFinallyStatement_end(Node finallyBlock) {
- return _wrap('tryFinallyStatement_end($finallyBlock)',
- () => _wrapped.tryFinallyStatement_end(finallyBlock));
+ void tryFinallyStatement_end() {
+ return _wrap(
+ 'tryFinallyStatement_end()', () => _wrapped.tryFinallyStatement_end());
}
@override
@@ -4095,10 +4086,7 @@
}
@override
- void tryFinallyStatement_end(Node finallyBlock) {
- // We used to need info for `finally` blocks but we don't anymore.
- assert(!_assignedVariables._hasInfoForNode(finallyBlock),
- 'No assigned variables info should have been stored for $finallyBlock');
+ void tryFinallyStatement_end() {
_TryFinallyContext<Variable, Type> context =
_stack.removeLast() as _TryFinallyContext<Variable, Type>;
_current = context._afterBodyAndCatches!
@@ -4741,7 +4729,7 @@
void tryFinallyStatement_bodyBegin() {}
@override
- void tryFinallyStatement_end(Node finallyBlock) {}
+ void tryFinallyStatement_end() {}
@override
void tryFinallyStatement_finallyBegin(Node body) {}
diff --git a/pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_mini_ast.dart b/pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_mini_ast.dart
index 024a4c6..afd3020 100644
--- a/pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_mini_ast.dart
+++ b/pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_mini_ast.dart
@@ -1640,7 +1640,6 @@
final List<Statement> body;
final List<Statement> finally_;
final Node _bodyNode = Node._();
- final Node _finallyNode = Node._();
_TryFinally(this.body, this.finally_) : super._();
@@ -1662,7 +1661,7 @@
body._visit(h, flow);
flow.tryFinallyStatement_finallyBegin(_bodyNode);
finally_._visit(h, flow);
- flow.tryFinallyStatement_end(_finallyNode);
+ flow.tryFinallyStatement_end();
}
}
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index b061fe0..e7dd7cf 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -2055,7 +2055,7 @@
flow.tryFinallyStatement_finallyBegin(
catchClauses.isNotEmpty ? node : body);
finallyBlock.accept(this);
- flow.tryFinallyStatement_end(finallyBlock);
+ flow.tryFinallyStatement_end();
}
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
index 3b061ee..05af526 100644
--- a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
@@ -6325,7 +6325,7 @@
inferrer.flowAnalysis.tryFinallyStatement_finallyBegin(
node.catchBlocks.isNotEmpty ? node : tryBodyWithAssignedInfo);
finalizerResult = inferrer.inferStatement(node.finallyBlock);
- inferrer.flowAnalysis.tryFinallyStatement_end(node.finallyBlock);
+ inferrer.flowAnalysis.tryFinallyStatement_end();
}
Statement result =
tryBlockResult.hasChanged ? tryBlockResult.statement : node.tryBlock;
diff --git a/pkg/nnbd_migration/lib/src/edge_builder.dart b/pkg/nnbd_migration/lib/src/edge_builder.dart
index 850669e..5b97ce5 100644
--- a/pkg/nnbd_migration/lib/src/edge_builder.dart
+++ b/pkg/nnbd_migration/lib/src/edge_builder.dart
@@ -1776,7 +1776,7 @@
_flowAnalysis.tryFinallyStatement_finallyBegin(
catchClauses.isNotEmpty ? node : body);
_dispatch(finallyBlock);
- _flowAnalysis.tryFinallyStatement_end(finallyBlock);
+ _flowAnalysis.tryFinallyStatement_end();
}
return null;
}