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. |
* |