| commit | 57e5b2895f95d45da3ba29a22ab6928d79930aed | [log] [tgz] |
|---|---|---|
| author | Chloe Stefantsova <cstefantsova@google.com> | Thu Feb 20 23:32:01 2025 -0800 |
| committer | Commit Queue <dart-scoped@luci-project-accounts.iam.gserviceaccount.com> | Thu Feb 20 23:32:01 2025 -0800 |
| tree | 1ba415b9e2cbeb3bcd2610afc19e3b9c769a3e4a | |
| parent | b2c8b31af3eaa80916dca8fae4a3fe91173b0be6 [diff] |
[analyzer] Handle NullAwareElements in Flutter outlines Part of https://github.com/dart-lang/sdk/issues/56989 Change-Id: I32557d994d16b97b8f3b40bb3d654a657338b83e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/411020 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
diff --git a/pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart b/pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart index a9de2ea..a82421d 100644 --- a/pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart +++ b/pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart
@@ -170,6 +170,8 @@ // Ignored. It's possible that we might be able to extract // some information from some spread expressions, but it seems // unlikely enough that we're not handling it at the moment. + } else if (element is NullAwareElement) { + addChildrenFrom(element.value); } }
diff --git a/pkg/analysis_server/test/src/flutter/flutter_outline_computer_test.dart b/pkg/analysis_server/test/src/flutter/flutter_outline_computer_test.dart index d4bb23b..07f77b5 100644 --- a/pkg/analysis_server/test/src/flutter/flutter_outline_computer_test.dart +++ b/pkg/analysis_server/test/src/flutter/flutter_outline_computer_test.dart
@@ -355,6 +355,30 @@ '''); } + Future<void> test_children_withNullAwareElements() async { + var unitOutline = await _computeOutline(''' +import 'package:flutter/widgets.dart'; + +class MyWidget extends StatelessWidget { + @override + Widget build(BuildContext context) { + return new Column(children: [ + const Text('aaa'), + ?const Text('bbb'), + ]); + } +} +'''); + + expect(_toText(unitOutline), r''' +(D) MyWidget + (D) build + Column + Text + Text +'''); + } + Future<void> test_codeOffsetLength() async { var unitOutline = await _computeOutline(''' import 'package:flutter/widgets.dart';