Version 2.17.0-280.0.dev

Merge commit 'd162c637d6ac34043a9f1d88919bd10d6c71bdfc' into 'dev'
diff --git a/pkg/dart2wasm/lib/code_generator.dart b/pkg/dart2wasm/lib/code_generator.dart
index b88ee02..f086339 100644
--- a/pkg/dart2wasm/lib/code_generator.dart
+++ b/pkg/dart2wasm/lib/code_generator.dart
@@ -1660,8 +1660,8 @@
   @override
   w.ValueType visitFunctionInvocation(
       FunctionInvocation node, w.ValueType expectedType) {
-    FunctionType functionType = node.functionType!;
-    int parameterCount = functionType.requiredParameterCount;
+    int parameterCount = node.functionType?.requiredParameterCount ??
+        node.arguments.positional.length;
     return _functionCall(parameterCount, node.receiver, node.arguments);
   }
 
@@ -2057,7 +2057,10 @@
         .getSubtypesOf(type.classNode)
         .where((c) => !c.isAbstract)
         .toList();
-    if (concrete.isEmpty) {
+    if (type.classNode == translator.coreTypes.functionClass) {
+      ClassInfo functionInfo = translator.classInfo[translator.functionClass]!;
+      translator.ref_test(b, functionInfo);
+    } else if (concrete.isEmpty) {
       b.drop();
       b.i32_const(0);
     } else if (concrete.length == 1) {
diff --git a/sdk/lib/_internal/wasm/lib/class_id.dart b/sdk/lib/_internal/wasm/lib/class_id.dart
index e650509..be91738 100644
--- a/sdk/lib/_internal/wasm/lib/class_id.dart
+++ b/sdk/lib/_internal/wasm/lib/class_id.dart
@@ -6,7 +6,7 @@
 
 @pragma("wasm:entry-point")
 class ClassID {
-  external static int getID(Object value);
+  external static int getID(Object? value);
 
   @pragma("wasm:class-id", "dart.typed_data#_ExternalUint8Array")
   external static int get cidExternalUint8Array;
diff --git a/tools/VERSION b/tools/VERSION
index 6dd49ee..1aa8a5e 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 279
+PRERELEASE 280
 PRERELEASE_PATCH 0
\ No newline at end of file