Skip to content

Simplify Inheritable.computeCanonicalEnclosingContainer. #4047

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

srawlins
Copy link
Member

@srawlins srawlins commented May 6, 2025

This method is very complicated, so any simplification is handy.

  • It used to start with a very long if-then body, and the else body was rather lost far below. Instead we can implement some simple short circuiting, if we're not dealing with an inherited element.
  • It used to carry around a found variable, breaking the loop when it found a container. But it's simpler to just return at that point.
  • The final return value is always null, representing a state where no canonical enclosing container is found. Just return null to simplify understandability.

Otherwise this is a no-op.

This method is very complicated, so any simplification is handy.

* It used to start with a very long if-then body, and the else body was rather
  lost far below. Instead we can implement some simple short circuiting, if
  we're not dealing with an inherited element.
* It used to carry around a `found` variable, breaking the loop when it found a
  container. But it's simpler to just return at that point.
* The final return value is always `null`, representing a state where no
  canonical enclosing container is found. Just return `null` to simplify
  understandability.

Otherwise this is a no-op.
@srawlins srawlins requested a review from szakarias May 6, 2025 05:57
Copy link
Contributor

@szakarias szakarias left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool, thanks!

@srawlins srawlins merged commit 95f4208 into dart-lang:main May 12, 2025
9 checks passed
@srawlins srawlins deleted the simplify-computeCanonicalEnclosingContainer branch May 12, 2025 15:44
copybara-service bot pushed a commit to dart-lang/sdk that referenced this pull request May 12, 2025
Revisions updated by `dart tools/rev_sdk_deps.dart`.

dartdoc (https://github.com/dart-lang/dartdoc/compare/e4f9451..95f4208):
  95f4208e  2025-05-12  Sam Rawlins  Simplify Inheritable.computeCanonicalEnclosingContainer. (dart-lang/dartdoc#4047)

http (https://github.com/dart-lang/http/compare/78d6114..e70a41b):
  e70a41b  2025-05-09  Brian Quinlan  Clarify that some headers may not be sent/received (dart-lang/http#1768)
  d99cc3c  2025-05-07  Brian Quinlan  Return a customized `StreamedResponse` from `CronetClient.send` (dart-lang/http#1769)
  6b92d99  2025-05-07  JohnettJobben1  [web_socket_channel] Shorten library description for pub score improvement (dart-lang/http#1737)
  31da355  2025-05-05  Brian Quinlan  Prepare cronet_http/cupertino_http/http/web_socket for release (dart-lang/http#1767)
  dfbe73d  2025-05-05  Brian Quinlan  Ignore received data after the response stream has been closed (dart-lang/http#1766)

protobuf (https://github.com/dart-lang/protobuf/compare/1aaa332..7d2e615):
  7d2e615  2025-05-12  Agam Agarwal  Add fromDart() and toDart() methods to convert between $core.Duration and proto Duration (google/protobuf.dart#986)
  e4fca16  2025-05-12  Ömer Sinan Ağacan  Add sparse enum decoding benchmarks (google/protobuf.dart#984)
  006d3aa  2025-05-09  Ömer Sinan Ağacan  Update protoc_plugin pre-generated protos (google/protobuf.dart#982)
  4abee01  2025-05-09  Ömer Sinan Ağacan  Sort input proto files before processing (google/protobuf.dart#983)
  60e23f1  2025-05-07  Ömer Sinan Ağacan  Fix factory argument types for map fields (google/protobuf.dart#976)
  de6bcc2  2025-05-07  Ömer Sinan Ağacan  Fix packed enum decoding benchmark (google/protobuf.dart#979)
  9daf5ca  2025-05-06  Ömer Sinan Ağacan  Improve packed field decoding (google/protobuf.dart#959)

tools (https://github.com/dart-lang/tools/compare/92f10a9..36f5c9f):
  36f5c9f9  2025-05-05  Jacob MacDonald  broaden the publish tag regex to allow digits (dart-lang/tools#2085)
  c6a10613  2025-05-05  Goddchen  fix(clock): keep micros in monthsAgo, monthsFromNow and yearsAgo (dart-lang/tools#1202)
  f1f8ac18  2025-05-02  Liam Appelbe  [coverage] Fix another flaky lifecycle management error (dart-lang/tools#2082)

webdev (https://github.com/dart-lang/webdev/compare/5bf833d..1ea8462):
  1ea84624  2025-05-08  Nicholas Shahan  [gardening] Temporarily skip failing test case (dart-lang/webdev#2618)

Change-Id: I193c34b97e7acf1cf52c91240765344e47424b73
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/428100
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Auto-Submit: Devon Carew <devoncarew@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants