Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 14518)
+++ wp-includes/post.php	(working copy)
@@ -681,23 +681,30 @@
 }
 
 /**
- * Checks if a post type is registered. Can also check if the current or specified post is of a post type.
+ * Check if a post type is registered.
  *
  * @since 3.0.0
+ * @uses get_post_type_object()
+ *
+ * @param string $types Type to check.
+ * @return bool
+ */
+function is_post_type( $type ) {
+	return (bool) get_post_type_object($type);
+}
+
+/**
+ * Check if the current or specified post is of a given post type.
+ *
+ * @since 3.0.0
  * @uses get_post_type()
  *
- * @param string|array $types Type or types to check. Defaults to all post types.
+ * @param string|array $types Type or types to check.
  * @param int $id Post ID. Defaults to current ID.
  * @return bool
  */
-function is_post_type( $types = false, $id = false ) {
-	if ( $id ) {
-		$types = ( $types === false ) ? get_post_types() : (array) $types;
-
-		return in_array( get_post_type( $id ), $types );
-	}
-
-	return (bool) get_post_type_object($types);
+function is_post_of_type( $types, $id = false ) {
+	return in_array( get_post_type( $id ), (array) $types );
 }
 
 /**
Index: wp-includes/query.php
===================================================================
--- wp-includes/query.php	(revision 14518)
+++ wp-includes/query.php	(working copy)
@@ -134,7 +134,7 @@
  * @param string|int $author Optional. Is current page this author.
  * @return bool True if page is author or $author (if set).
  */
-function is_author ($author = '') {
+function is_author($author = '') {
 	global $wp_query;
 
 	if ( !$wp_query->is_author )
@@ -169,7 +169,7 @@
  * @param string|array $category Optional.
  * @return bool
  */
-function is_category ($category = '') {
+function is_category($category = '') {
 	global $wp_query;
 
 	if ( !$wp_query->is_category )
@@ -398,7 +398,7 @@
  * @param mixed $page Either page or list of pages to test against.
  * @return bool
  */
-function is_page ($page = '') {
+function is_page($page = '') {
 	global $wp_query;
 
 	if ( !$wp_query->is_page )
@@ -518,7 +518,7 @@
 	if ( !$wp_query->is_single )
 		return false;
 
-	if ( empty( $post) )
+	if ( empty($post) )
 		return true;
 
 	$post_obj = $wp_query->get_queried_object();
@@ -541,12 +541,21 @@
  * @since 1.5.0
  * @uses $wp_query
  *
+ * @param string|array $post_types Optional. Post type slug or slugs to check in current query.
  * @return bool
  */
-function is_singular() {
+function is_singular($post_types = '') {
 	global $wp_query;
 
-	return $wp_query->is_singular;
+	if ( !$wp_query->is_singular )
+		return false;
+
+	if ( empty($post_types) )
+		return true;
+
+	$post_obj = $wp_query->get_queried_object();
+
+	return in_array($post_obj->post_type, (array) $post_types);
 }
 
 /**
@@ -1226,7 +1235,7 @@
 	 *
 	 * @param string|array $query
 	 */
-	function parse_query($query ) {
+	function parse_query($query) {
 		if ( !empty($query) || !isset($this->query) ) {
 			$this->init();
 			if ( is_array($query) )
