Skip to content

Commit d0bd50c

Browse files
scheglovCommit Bot
authored and
Commit Bot
committed
Make super-formal parameters visible only in the initializers scope.
Bug: dart-lang/language#2056 (comment) Change-Id: I155c576f28f1f0ff851772723e7bd01ff062f651 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/227901 Reviewed-by: Phil Quitslund <[email protected]> Reviewed-by: Samuel Rawlins <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 0a9fb17 commit d0bd50c

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ class FormalParameterScope extends EnclosedScope {
8383
List<ParameterElement> elements,
8484
) : super(parent) {
8585
for (var parameter in elements) {
86-
if (parameter is! FieldFormalParameterElement) {
86+
if (parameter is! FieldFormalParameterElement &&
87+
parameter is! SuperFormalParameterElement) {
8788
_addGetter(parameter);
8889
}
8990
}

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

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,4 +130,42 @@ class B extends A {
130130
findElement.unnamedConstructor('B').superFormalParameter('a'),
131131
);
132132
}
133+
134+
test_scoping_inBody() async {
135+
await assertNoErrorsInCode(r'''
136+
class A {
137+
final int a;
138+
A(this.a);
139+
}
140+
141+
class B extends A {
142+
B(super.a) {
143+
a; // ref
144+
}
145+
}
146+
''');
147+
148+
assertElement(
149+
findNode.simple('a; // ref'),
150+
findElement.getter('a', of: 'A'),
151+
);
152+
}
153+
154+
test_scoping_inInitializer() async {
155+
await assertNoErrorsInCode(r'''
156+
class A {
157+
A(int a);
158+
}
159+
160+
class B extends A {
161+
var f;
162+
B(super.a) : f = ((){ a; });
163+
}
164+
''');
165+
166+
assertElement(
167+
findNode.simple('a; }'),
168+
findElement.unnamedConstructor('B').superFormalParameter('a'),
169+
);
170+
}
133171
}

0 commit comments

Comments
 (0)