Skip to content

Commit a8b661f

Browse files
pqCommit Queue
authored and
Commit Queue
committed
[wildcards] extension type parameter scopes
Fixes: CompileTimeError -> Pass (expected Pass) co19/LanguageFeatures/Wildcards/binding_A02_t08 See: #55680 Change-Id: I5fffc47b52a2fa5d86e6be0b8a780bc3abcff1c7 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/380206 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Phil Quitslund <[email protected]>
1 parent b140970 commit a8b661f

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

pkg/analyzer/lib/src/generated/error_verifier.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2595,6 +2595,8 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
25952595
ExtensionTypeElementImpl element,
25962596
) {
25972597
for (var typeParameter in element.typeParameters) {
2598+
if (typeParameter.isWildcardVariable) continue;
2599+
25982600
var name = typeParameter.name;
25992601
// name is same as the name of the enclosing class
26002602
if (element.name == name) {

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

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,51 @@ ExtensionTypeDeclaration
332332
leftBracket: {
333333
rightBracket: }
334334
declaredElement: <testLibraryFragment>::@extensionType::A
335+
''');
336+
}
337+
338+
test_typeParameters_wildcards() async {
339+
await assertNoErrorsInCode(r'''
340+
extension type ET<_, _, _ extends num>(int _) {}
341+
''');
342+
343+
var node = findNode.singleExtensionTypeDeclaration;
344+
assertResolvedNodeText(node, r'''
345+
ExtensionTypeDeclaration
346+
extensionKeyword: extension
347+
typeKeyword: type
348+
name: ET
349+
typeParameters: TypeParameterList
350+
leftBracket: <
351+
typeParameters
352+
TypeParameter
353+
name: _
354+
declaredElement: _@18
355+
TypeParameter
356+
name: _
357+
declaredElement: _@21
358+
TypeParameter
359+
name: _
360+
extendsKeyword: extends
361+
bound: NamedType
362+
name: num
363+
element: dart:core::<fragment>::@class::num
364+
type: num
365+
declaredElement: _@24
366+
rightBracket: >
367+
representation: RepresentationDeclaration
368+
leftParenthesis: (
369+
fieldType: NamedType
370+
name: int
371+
element: dart:core::<fragment>::@class::int
372+
type: int
373+
fieldName: _
374+
rightParenthesis: )
375+
fieldElement: <testLibraryFragment>::@extensionType::ET::@field::_
376+
constructorElement: <testLibraryFragment>::@extensionType::ET::@constructor::new
377+
leftBracket: {
378+
rightBracket: }
379+
declaredElement: <testLibraryFragment>::@extensionType::ET
335380
''');
336381
}
337382
}

0 commit comments

Comments
 (0)