Chromium Code Reviews| Index: pkg/analyzer/lib/src/generated/resolver.dart |
| diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart |
| index 2d5fac3269d04c5bcd01af8a8d70c3c9d7b6a13e..f1a4d5b3ce4de559b263349af1fc9d8a97baccb1 100644 |
| --- a/pkg/analyzer/lib/src/generated/resolver.dart |
| +++ b/pkg/analyzer/lib/src/generated/resolver.dart |
| @@ -218,6 +218,12 @@ class BestPracticesVerifier extends RecursiveAstVisitor<Object> { |
| } |
| @override |
| + Object visitMethodInvocation(MethodInvocation node) { |
| + _checkForCanBeNullAfterNullAware(node.realTarget); |
| + return super.visitMethodInvocation(node); |
| + } |
| + |
| + @override |
| Object visitPostfixExpression(PostfixExpression node) { |
| _checkForDeprecatedMemberUse(node.bestElement, node); |
| return super.visitPostfixExpression(node); |
| @@ -230,6 +236,12 @@ class BestPracticesVerifier extends RecursiveAstVisitor<Object> { |
| } |
| @override |
| + Object visitPropertyAccess(PropertyAccess node) { |
| + _checkForCanBeNullAfterNullAware(node.realTarget); |
| + return super.visitPropertyAccess(node); |
| + } |
| + |
| + @override |
| Object visitRedirectingConstructorInvocation( |
| RedirectingConstructorInvocation node) { |
| _checkForDeprecatedMemberUse(node.staticElement, node); |
| @@ -453,6 +465,25 @@ class BestPracticesVerifier extends RecursiveAstVisitor<Object> { |
| } |
| /** |
| + * Produce a hint if the given [expression] could have a value of `null`. |
| + */ |
| + void _checkForCanBeNullAfterNullAware(Expression expression) { |
| + if (expression is ParenthesizedExpression) { |
| + _checkForCanBeNullAfterNullAware(expression.expression); |
| + } else if (expression is MethodInvocation) { |
| + if (expression.operator?.type == TokenType.QUESTION_PERIOD) { |
| + _errorReporter.reportErrorForNode( |
| + HintCode.CAN_BE_NULL_AFTER_NULL_AWARE, expression); |
| + } |
| + } else if (expression is PropertyAccess) { |
| + if (expression.operator?.type == TokenType.QUESTION_PERIOD) { |
|
Brian Wilkerson
2015/10/28 22:09:11
I don't think the operator for a property access c
scheglov
2015/10/28 23:45:09
Acknowledged.
|
| + _errorReporter.reportErrorForNode( |
| + HintCode.CAN_BE_NULL_AFTER_NULL_AWARE, expression); |
| + } |
| + } |
| + } |
| + |
| + /** |
| * Given some [Element], look at the associated metadata and report the use of the member if |
| * it is declared as deprecated. |
| * |