update ElementResolver postfix NNBD bang processing
Change-Id: I700bedc55c42da914fab6d25f4f3620a6ce0b022
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97266
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
diff --git a/pkg/analyzer/lib/src/generated/element_resolver.dart b/pkg/analyzer/lib/src/generated/element_resolver.dart
index 9a99f54..75910f9 100644
--- a/pkg/analyzer/lib/src/generated/element_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/element_resolver.dart
@@ -953,10 +953,15 @@
/**
* Return the name of the method invoked by the given postfix [expression].
*/
- String _getPostfixOperator(PostfixExpression expression) =>
- (expression.operator.type == TokenType.PLUS_PLUS)
- ? TokenType.PLUS.lexeme
- : TokenType.MINUS.lexeme;
+ String _getPostfixOperator(PostfixExpression expression) {
+ if (expression.operator.type == TokenType.PLUS_PLUS) {
+ return TokenType.PLUS.lexeme;
+ } else if (expression.operator.type == TokenType.MINUS_MINUS) {
+ return TokenType.MINUS.lexeme;
+ } else {
+ return expression.operator.lexeme;
+ }
+ }
/**
* Return the name of the method invoked by the given postfix [expression].
diff --git a/pkg/analyzer/test/generated/element_resolver_test.dart b/pkg/analyzer/test/generated/element_resolver_test.dart
index 4808365..5e4abef 100644
--- a/pkg/analyzer/test/generated/element_resolver_test.dart
+++ b/pkg/analyzer/test/generated/element_resolver_test.dart
@@ -12,6 +12,7 @@
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/inheritance_manager2.dart';
+import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/element_resolver.dart';
import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/resolver.dart';
@@ -838,6 +839,29 @@
_listener.assertNoErrors();
}
+ test_visitPostfixExpression_bang() async {
+ InterfaceType numType = _typeProvider.numType;
+ SimpleIdentifier operand = AstTestFactory.identifier3("i");
+ operand.staticType = numType;
+ PostfixExpression expression =
+ AstTestFactory.postfixExpression(operand, TokenType.BANG);
+ _resolveNode(expression);
+ _listener.assertErrorsWithCodes([StaticTypeWarningCode.UNDEFINED_OPERATOR]);
+ }
+
+ fail_test_visitPostfixExpression_bang_NNBD() async {
+ // TODO(danrubel): enable NNBD
+ InterfaceType numType = _typeProvider.numType;
+ SimpleIdentifier operand = AstTestFactory.identifier3("i");
+ operand.staticType = numType;
+ PostfixExpression expression =
+ AstTestFactory.postfixExpression(operand, TokenType.BANG);
+ _resolveNode(expression);
+ // TODO(danrubel): getMethod fails "Could not find method named ! in num"
+ expect(expression.staticElement, getMethod(numType, "!"));
+ _listener.assertNoErrors();
+ }
+
test_visitPrefixedIdentifier_dynamic() async {
DartType dynamicType = _typeProvider.dynamicType;
SimpleIdentifier target = AstTestFactory.identifier3("a");