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");