diff --git a/src/wp-includes/theme.php b/src/wp-includes/theme.php
index 5fa7a23146..0866dfc5b4 100644
--- a/src/wp-includes/theme.php
+++ b/src/wp-includes/theme.php
@@ -2475,6 +2475,7 @@ function get_theme_starter_content() {
  *              by adding it to the function signature.
  * @since 5.5.0 The `core-block-patterns` feature was added and is enabled by default.
  * @since 5.5.0 The `custom-logo` feature now also accepts 'unlink-homepage-logo'.
+ * @since 5.6.0 The `post-formats` feature now returns doing it wrong if no array is passed
  *
  * @global array $_wp_theme_features
  *
@@ -2517,6 +2518,9 @@ function add_theme_support( $feature, ...$args ) {
 				unset( $post_formats['standard'] );
 
 				$args[0] = array_intersect( $args[0], array_keys( $post_formats ) );
+			} else {
+				_doing_it_wrong( "add_theme_support( 'post-formats' )", __( 'You need to pass an array of types.' ), '5.6.0' );
+				return false;
 			}
 			break;
 
diff --git a/tests/phpunit/tests/post/formats.php b/tests/phpunit/tests/post/formats.php
index 44cedfc9a6..cd4acdcaba 100644
--- a/tests/phpunit/tests/post/formats.php
+++ b/tests/phpunit/tests/post/formats.php
@@ -8,6 +8,16 @@ class Tests_Post_Formats extends WP_UnitTestCase {
 		parent::setUp();
 	}
 
+	/**
+	 * @ticket 51390
+	 */
+	function test_post_format_doing_it_wrong() {
+		$this->setExpectedIncorrectUsage( "add_theme_support( 'post-formats' )" );
+
+		// The second parameter should be an array
+		$this->assertFalse( add_theme_support( 'post-formats' ) );
+	}
+
 	function test_set_get_post_format_for_post() {
 		$post_id = self::factory()->post->create();
 
