Skip to content

Commit 24261bd

Browse files
scheglovCommit Queue
authored andcommitted
Look into the interface for a getter / setter only if necessary.
Change-Id: Id586108c8dcd55180b87519565cfc7f9ddf258cf Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/426280 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Paul Berry <[email protected]>
1 parent 6127d6c commit 24261bd

13 files changed

+101
-84
lines changed

pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,8 @@ class AssignmentExpressionResolver {
265265
receiver: left,
266266
receiverType: leftType,
267267
name: methodName,
268+
hasRead: operatorType != TokenType.EQ,
269+
hasWrite: true,
268270
propertyErrorEntity: operator,
269271
nameErrorEntity: operator,
270272
);

pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,8 @@ class BinaryExpressionResolver {
431431
receiver: leftOperand,
432432
receiverType: leftType,
433433
name: methodName,
434+
hasRead: true,
435+
hasWrite: false,
434436
propertyErrorEntity: node.operator,
435437
nameErrorEntity: node,
436438
);

pkg/analyzer/lib/src/dart/resolver/comment_reference_resolver.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,8 @@ class CommentReferenceResolver {
185185
receiver: null,
186186
receiverType: enclosingType,
187187
name: identifier.name,
188+
hasRead: true,
189+
hasWrite: true,
188190
propertyErrorEntity: identifier,
189191
nameErrorEntity: identifier,
190192
);

pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ class FunctionExpressionInvocationResolver {
9292
receiver: function,
9393
receiverType: receiverType,
9494
name: MethodElement.CALL_METHOD_NAME,
95+
hasRead: true,
96+
hasWrite: false,
9597
propertyErrorEntity: function,
9698
nameErrorEntity: function,
9799
);

pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,8 @@ class FunctionReferenceResolver {
420420
receiver: receiver,
421421
receiverType: receiverType,
422422
name: methodName.name,
423+
hasRead: true,
424+
hasWrite: false,
423425
propertyErrorEntity: methodName,
424426
nameErrorEntity: methodName,
425427
)
@@ -603,6 +605,8 @@ class FunctionReferenceResolver {
603605
receiver: function.realTarget,
604606
receiverType: targetType,
605607
name: function.propertyName.name,
608+
hasRead: true,
609+
hasWrite: false,
606610
propertyErrorEntity: function.propertyName,
607611
nameErrorEntity: function,
608612
)
@@ -721,6 +725,8 @@ class FunctionReferenceResolver {
721725
receiver: null,
722726
receiverType: receiverType,
723727
name: function.name,
728+
hasRead: true,
729+
hasWrite: false,
724730
propertyErrorEntity: function,
725731
nameErrorEntity: function,
726732
);
@@ -950,6 +956,8 @@ class FunctionReferenceResolver {
950956
receiver: receiver,
951957
receiverType: receiverType,
952958
name: name.name,
959+
hasRead: true,
960+
hasWrite: false,
953961
propertyErrorEntity: name,
954962
nameErrorEntity: nameErrorEntity,
955963
)

pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,6 +1069,8 @@ class MethodInvocationResolver with ScopeHelpers {
10691069
receiver: receiver,
10701070
receiverType: receiverType,
10711071
name: name,
1072+
hasRead: true,
1073+
hasWrite: false,
10721074
propertyErrorEntity: nameNode,
10731075
nameErrorEntity: nameNode,
10741076
);

pkg/analyzer/lib/src/dart/resolver/postfix_expression_resolver.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,8 @@ class PostfixExpressionResolver {
143143
receiver: operand,
144144
receiverType: receiverType,
145145
name: methodName,
146+
hasRead: true,
147+
hasWrite: false,
146148
propertyErrorEntity: node.operator,
147149
nameErrorEntity: operand,
148150
);

pkg/analyzer/lib/src/dart/resolver/prefix_expression_resolver.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,8 @@ class PrefixExpressionResolver {
186186
receiver: operand,
187187
receiverType: readType,
188188
name: methodName,
189+
hasRead: true,
190+
hasWrite: false,
189191
propertyErrorEntity: node.operator,
190192
nameErrorEntity: operand,
191193
);

pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,8 @@ class PropertyElementResolver with ScopeHelpers {
167167
receiver: target,
168168
receiverType: targetType,
169169
name: '[]',
170+
hasRead: hasRead,
171+
hasWrite: hasWrite,
170172
propertyErrorEntity: node.leftBracket,
171173
nameErrorEntity: target,
172174
);
@@ -540,6 +542,8 @@ class PropertyElementResolver with ScopeHelpers {
540542
receiver: target,
541543
receiverType: targetType,
542544
name: propertyName.name,
545+
hasRead: hasRead,
546+
hasWrite: hasWrite,
543547
propertyErrorEntity: propertyName,
544548
nameErrorEntity: propertyName,
545549
);
@@ -579,10 +583,20 @@ class PropertyElementResolver with ScopeHelpers {
579583
if (hasWrite) {
580584
_checkForStaticMember(target, propertyName, result.setter2);
581585
if (result.needsSetterError) {
586+
var readResult = _resolver.typePropertyResolver.resolve(
587+
receiver: target,
588+
receiverType: targetType,
589+
name: propertyName.name,
590+
hasRead: true,
591+
hasWrite: false,
592+
propertyErrorEntity: propertyName,
593+
nameErrorEntity: propertyName,
594+
);
595+
582596
AssignmentVerifier(errorReporter).verify(
583597
node: propertyName,
584598
requested: null,
585-
recovery: result.getter2,
599+
recovery: readResult.getter2,
586600
receiverType: targetType,
587601
);
588602
}

pkg/analyzer/lib/src/dart/resolver/this_lookup.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ class ThisLookup {
3333
receiver: null,
3434
receiverType: thisType,
3535
name: id,
36+
hasRead: true,
37+
hasWrite: false,
3638
propertyErrorEntity: node,
3739
nameErrorEntity: node,
3840
);
@@ -74,6 +76,8 @@ class ThisLookup {
7476
receiver: null,
7577
receiverType: thisType,
7678
name: id,
79+
hasRead: false,
80+
hasWrite: true,
7781
propertyErrorEntity: node,
7882
nameErrorEntity: node,
7983
);

0 commit comments

Comments
 (0)