Revert "Re-land "Add a generic return type for js_util functions""

This reverts commit 66cbeb67188c69c340bcafd5f454608f693fea96.

Reason for revert: Causes dart analyzer and dart linter to find
issues within google3 and flutter, causing breakages and blocking
the roll.

Original change's description:
> Re-land "Add a generic return type for js_util functions"
>
> This relands commit 46486cf260a7aee968514fa2eac44c361cfbf8ac.
>
> The differences from the original commit:
>   - jsify is no longer being made generic
>   - Updated the CHANGELOG
>
> Change-Id: Ibc3402833cce2babbec9a57ad73963d7b9442ed8
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/216920
> Commit-Queue: Riley Porter <rileyporter@google.com>
> Reviewed-by: Sigmund Cherem <sigmund@google.com>

TBR=sigmund@google.com,srujzs@google.com,rileyporter@google.com

Change-Id: Ic2ff63bc9658ccafcab3db75bdd06814d2f17b76
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/216963
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f851818..1ed45f0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -421,12 +421,6 @@
 - Add `RawSocket.sendMessage`, `RawSocket.receiveMessage` that allow passing of
   file handle references via Unix domain sockets.
 
-#### `dart:js_util`
-
-- The `js_util` methods `getProperty`, `setProperty`, `callMethod`,
-  `callConstructor`, and `newObject` now support a generic type argument
-  to specify the return type.
-
 ### Tools
 
 #### Dart command line
diff --git a/pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart b/pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart
index 2e4f847..add033d 100644
--- a/pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart
+++ b/pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart
@@ -138,8 +138,6 @@
         Arguments([
           VariableGet(function.positionalParameters.first),
           StringLiteral(_getExtensionMemberName(node))
-        ], types: [
-          DynamicType()
         ]))
       ..fileOffset = node.fileOffset;
     return ReturnStatement(
@@ -159,8 +157,6 @@
           VariableGet(function.positionalParameters.first),
           StringLiteral(_getExtensionMemberName(node)),
           VariableGet(function.positionalParameters.last)
-        ], types: [
-          DynamicType()
         ]))
       ..fileOffset = node.fileOffset;
     return ReturnStatement(AsExpression(
@@ -182,8 +178,6 @@
               .sublist(1)
               .map((argument) => VariableGet(argument))
               .toList())
-        ], types: [
-          DynamicType()
         ]))
       ..fileOffset = node.fileOffset;
     return ReturnStatement(AsExpression(
@@ -230,6 +224,7 @@
   /// Removing the checks allows further inlining by the compilers.
   StaticInvocation _lowerSetProperty(StaticInvocation node) {
     Arguments arguments = node.arguments;
+    assert(arguments.types.isEmpty);
     assert(arguments.positional.length == 3);
     assert(arguments.named.isEmpty);
 
@@ -249,6 +244,7 @@
   /// Removing the checks allows further inlining by the compilers.
   StaticInvocation _lowerCallMethod(StaticInvocation node) {
     Arguments arguments = node.arguments;
+    assert(arguments.types.isEmpty);
     assert(arguments.positional.length == 3);
     assert(arguments.named.isEmpty);
 
@@ -264,6 +260,7 @@
   /// Removing the checks allows further inlining by the compilers.
   StaticInvocation _lowerCallConstructor(StaticInvocation node) {
     Arguments arguments = node.arguments;
+    assert(arguments.types.isEmpty);
     assert(arguments.positional.length == 2);
     assert(arguments.named.isEmpty);
 
@@ -286,13 +283,8 @@
     // Lower arguments in a List.empty factory call.
     if (argumentsList is StaticInvocation &&
         argumentsList.target == _listEmptyFactory) {
-      return _createCallUncheckedNode(
-          callUncheckedTargets,
-          node.arguments.types,
-          [],
-          originalArguments,
-          node.fileOffset,
-          node.arguments.fileOffset);
+      return _createCallUncheckedNode(callUncheckedTargets, [],
+          originalArguments, node.fileOffset, node.arguments.fileOffset);
     }
 
     // Lower arguments in other kinds of Lists.
@@ -331,7 +323,6 @@
 
     return _createCallUncheckedNode(
         callUncheckedTargets,
-        node.arguments.types,
         callUncheckedArguments,
         originalArguments,
         node.fileOffset,
@@ -342,7 +333,6 @@
   /// with the given 0-4 arguments.
   StaticInvocation _createCallUncheckedNode(
       List<Procedure> callUncheckedTargets,
-      List<DartType> callUncheckedTypes,
       List<Expression> callUncheckedArguments,
       List<Expression> originalArguments,
       int nodeFileOffset,
@@ -352,7 +342,7 @@
         callUncheckedTargets[callUncheckedArguments.length],
         Arguments(
           [...originalArguments, ...callUncheckedArguments],
-          types: callUncheckedTypes,
+          types: [],
         )..fileOffset = argumentsFileOffset)
       ..fileOffset = nodeFileOffset;
   }
diff --git a/sdk/lib/js_util/js_util.dart b/sdk/lib/js_util/js_util.dart
index 7842a32..db385b6 100644
--- a/sdk/lib/js_util/js_util.dart
+++ b/sdk/lib/js_util/js_util.dart
@@ -64,63 +64,65 @@
   return _convert(data)!;
 }
 
-T newObject<T>() => JS('=Object', '{}');
+dynamic newObject() => JS('=Object', '{}');
 
 bool hasProperty(Object o, Object name) => JS('bool', '# in #', name, o);
 
-T getProperty<T>(Object o, Object name) => JS('Object|Null', '#[#]', o, name);
+// A CFE transformation will optimize all calls to `getProperty`.
+dynamic getProperty(Object o, Object name) =>
+    JS('Object|Null', '#[#]', o, name);
 
 // A CFE transformation may optimize calls to `setProperty`, when [value] is
 // statically known to be a non-function.
-T setProperty<T>(Object o, Object name, T? value) {
+dynamic setProperty(Object o, Object name, Object? value) {
   assertInterop(value);
   return JS('', '#[#]=#', o, name, value);
 }
 
 /// Unchecked version of setProperty, only used in a CFE transformation.
 @pragma('dart2js:tryInline')
-T _setPropertyUnchecked<T>(Object o, Object name, T? value) {
+dynamic _setPropertyUnchecked(Object o, Object name, Object? value) {
   return JS('', '#[#]=#', o, name, value);
 }
 
 // A CFE transformation may optimize calls to `callMethod` when [args] is a
 // a list literal or const list containing at most 4 values, all of which are
 // statically known to be non-functions.
-T callMethod<T>(Object o, String method, List<Object?> args) {
+dynamic callMethod(Object o, String method, List<Object?> args) {
   assertInteropArgs(args);
   return JS('Object|Null', '#[#].apply(#, #)', o, method, o, args);
 }
 
 /// Unchecked version for 0 arguments, only used in a CFE transformation.
 @pragma('dart2js:tryInline')
-T _callMethodUnchecked0<T>(Object o, String method) {
+dynamic _callMethodUnchecked0(Object o, String method) {
   return JS('Object|Null', '#[#]()', o, method);
 }
 
 /// Unchecked version for 1 argument, only used in a CFE transformation.
 @pragma('dart2js:tryInline')
-T _callMethodUnchecked1<T>(Object o, String method, Object? arg1) {
+dynamic _callMethodUnchecked1(Object o, String method, Object? arg1) {
   return JS('Object|Null', '#[#](#)', o, method, arg1);
 }
 
 /// Unchecked version for 2 arguments, only used in a CFE transformation.
 @pragma('dart2js:tryInline')
-T _callMethodUnchecked2<T>(
+dynamic _callMethodUnchecked2(
     Object o, String method, Object? arg1, Object? arg2) {
   return JS('Object|Null', '#[#](#, #)', o, method, arg1, arg2);
 }
 
 /// Unchecked version for 3 arguments, only used in a CFE transformation.
 @pragma('dart2js:tryInline')
-T _callMethodUnchecked3<T>(
+dynamic _callMethodUnchecked3(
     Object o, String method, Object? arg1, Object? arg2, Object? arg3) {
   return JS('Object|Null', '#[#](#, #, #)', o, method, arg1, arg2, arg3);
 }
 
 /// Unchecked version for 4 arguments, only used in a CFE transformation.
 @pragma('dart2js:tryInline')
-T _callMethodUnchecked4<T>(Object o, String method, Object? arg1, Object? arg2,
-    Object? arg3, Object? arg4) {
+dynamic _callMethodUnchecked4(Object o, String method, Object? arg1,
+    Object? arg2, Object? arg3, Object? arg4) {
   return JS(
       'Object|Null', '#[#](#, #, #, #)', o, method, arg1, arg2, arg3, arg4);
 }
@@ -132,7 +134,7 @@
 bool instanceof(Object? o, Object type) =>
     JS('bool', '# instanceof #', o, type);
 
-T callConstructor<T>(Object constr, List<Object?>? arguments) {
+dynamic callConstructor(Object constr, List<Object?>? arguments) {
   if (arguments == null) {
     return JS('Object', 'new #()', constr);
   } else {
@@ -195,32 +197,32 @@
 
 /// Unchecked version for 0 arguments, only used in a CFE transformation.
 @pragma('dart2js:tryInline')
-T _callConstructorUnchecked0<T>(Object constr) {
+dynamic _callConstructorUnchecked0(Object constr) {
   return JS('Object', 'new #()', constr);
 }
 
 /// Unchecked version for 1 argument, only used in a CFE transformation.
 @pragma('dart2js:tryInline')
-T _callConstructorUnchecked1<T>(Object constr, Object? arg1) {
+dynamic _callConstructorUnchecked1(Object constr, Object? arg1) {
   return JS('Object', 'new #(#)', constr, arg1);
 }
 
 /// Unchecked version for 2 arguments, only used in a CFE transformation.
 @pragma('dart2js:tryInline')
-T _callConstructorUnchecked2<T>(Object constr, Object? arg1, Object? arg2) {
+dynamic _callConstructorUnchecked2(Object constr, Object? arg1, Object? arg2) {
   return JS('Object', 'new #(#, #)', constr, arg1, arg2);
 }
 
 /// Unchecked version for 3 arguments, only used in a CFE transformation.
 @pragma('dart2js:tryInline')
-T _callConstructorUnchecked3<T>(
+dynamic _callConstructorUnchecked3(
     Object constr, Object? arg1, Object? arg2, Object? arg3) {
   return JS('Object', 'new #(#, #, #)', constr, arg1, arg2, arg3);
 }
 
 /// Unchecked version for 4 arguments, only used in a CFE transformation.
 @pragma('dart2js:tryInline')
-T _callConstructorUnchecked4<T>(
+dynamic _callConstructorUnchecked4(
     Object constr, Object? arg1, Object? arg2, Object? arg3, Object? arg4) {
   return JS('Object', 'new #(#, #, #, #)', constr, arg1, arg2, arg3, arg4);
 }