Handle folding for function expression invocations
Change-Id: Id93004c1ea218b1768d649a2a806ce58a9d7f0a5
Reviewed-on: https://dart-review.googlesource.com/59061
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Danny Tuppeny <dantup@google.com>
diff --git a/pkg/analysis_server/lib/src/computer/computer_folding.dart b/pkg/analysis_server/lib/src/computer/computer_folding.dart
index b05e670..1a5a5c3 100644
--- a/pkg/analysis_server/lib/src/computer/computer_folding.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_folding.dart
@@ -158,6 +158,13 @@
}
@override
+ Object visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
+ _computer._addRegion(node.argumentList.leftParenthesis.end,
+ node.argumentList.rightParenthesis.offset, FoldingKind.INVOCATION);
+ return super.visitFunctionExpressionInvocation(node);
+ }
+
+ @override
visitImportDirective(ImportDirective node) {
_computer._recordDirective(node);
return super.visitImportDirective(node);
diff --git a/pkg/analysis_server/test/src/computer/folding_computer_test.dart b/pkg/analysis_server/test/src/computer/folding_computer_test.dart
index 9372adc..c301f7f 100644
--- a/pkg/analysis_server/test/src/computer/folding_computer_test.dart
+++ b/pkg/analysis_server/test/src/computer/folding_computer_test.dart
@@ -123,6 +123,28 @@
_compareRegions(regions, content);
}
+ test_function_expression_invocation() async {
+ String content = """
+// Content before
+
+getFunc() => (String a, String b) {/*1:INC*/
+ print(a);
+/*1:INC:FUNCTION_BODY*/};
+
+main2() {/*2:INC*/
+ getFunc()(/*3:INC*/
+ "one",
+ "two"
+ /*3:INC:INVOCATION*/);
+/*2:INC:FUNCTION_BODY*/}
+
+// Content after
+""";
+
+ final regions = await _computeRegions(content);
+ _compareRegions(regions, content);
+ }
+
test_constructor_invocations() async {
String content = """
// Content before