Skip to content

Commit f9ca69a

Browse files
scheglovCommit Queue
authored andcommitted
Issue 60683. Fix for UnimplementedError from ElementImpl2.enclosingElement2, when GenericFunctionTypeElementImpl2.
Bug: #60683 Change-Id: I122eed163c8f713ca1dd416c194eb432f23802de Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/427300 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent a296c7c commit f9ca69a

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

pkg/analyzer/lib/src/dart/element/element.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1947,10 +1947,6 @@ abstract class ElementImpl2 implements Element {
19471947
@override
19481948
String get displayName => name3 ?? '<unnamed>';
19491949

1950-
@override
1951-
// TODO(augmentations): implement enclosingElement2
1952-
Element? get enclosingElement2 => throw UnimplementedError();
1953-
19541950
@override
19551951
List<Fragment> get fragments {
19561952
return [
@@ -4075,6 +4071,9 @@ class GenericFunctionTypeElementImpl2 extends FunctionTypedElementImpl2
40754071
@override
40764072
String? get documentationComment => _wrappedElement.documentationComment;
40774073

4074+
@override
4075+
Element? get enclosingElement2 => firstFragment.enclosingFragment?.element;
4076+
40784077
@override
40794078
GenericFunctionTypeFragmentImpl get firstFragment => _wrappedElement;
40804079

pkg/analyzer/lib/src/test_utilities/find_node.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ class FindNode {
101101
FunctionTypedFormalParameter get singleFunctionTypedFormalParameter =>
102102
_single();
103103

104+
GenericFunctionType get singleGenericFunctionType => _single();
105+
104106
GenericTypeAlias get singleGenericTypeAlias => _single();
105107

106108
GuardedPattern get singleGuardedPattern => _single();

pkg/analyzer/test/src/dart/resolution/generic_function_type_test.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:analyzer/dart/ast/ast.dart';
6+
import 'package:test/expect.dart';
67
import 'package:test_reflective_loader/test_reflective_loader.dart';
78

89
import 'context_collection_resolution.dart';
@@ -47,6 +48,18 @@ int Function(int a)? y;
4748
''');
4849
}
4950

51+
test_element_enclosingElement2() async {
52+
await assertNoErrorsInCode('''
53+
void f(
54+
void Function() a,
55+
) {}
56+
''');
57+
58+
var node = findNode.singleGenericFunctionType;
59+
var element = node.declaredFragment!.element;
60+
expect(element.enclosingElement2, same(result.libraryElement2));
61+
}
62+
5063
test_metadata_typeParameter() async {
5164
await assertNoErrorsInCode(r'''
5265
const a = 42;

0 commit comments

Comments
 (0)