diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index 7766952..79865c1 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -2005,6 +2005,7 @@ function theme_mark($variables) {
  *     - children: A list of nested child items to render that behave
  *       identically to 'items', but any non-numeric string keys are treated as
  *       HTML attributes for the child list that wraps 'children'.
+ *     - type: The type of list to return (e.g. "ul", "ol").
  *     Any other key/value pairs are used as HTML attributes for the list item
  *     in 'data'.
  *   - title: The title of the list.
@@ -2032,7 +2033,7 @@ function theme_item_list($variables) {
         if (isset($item['data'])) {
           $value .= $item['data'];
         }
-        $attributes = array_diff_key($item, array('data' => 0, 'children' => 0));
+        $attributes = array_diff_key($item, array('data' => 0, 'children' => 0, 'type' => 0));
 
         // Append nested child list, if any.
         if (isset($item['children'])) {
@@ -2048,7 +2049,7 @@ function theme_item_list($variables) {
           }
           $value .= theme('item_list', array(
             'items' => $item['children'],
-            'type' => $type,
+            'type' => (isset($item['type']) ? $item['type'] : $type),
             'attributes' => $child_list_attributes,
           ));
         }
diff --git a/core/modules/system/lib/Drupal/system/Tests/Theme/FunctionsTest.php b/core/modules/system/lib/Drupal/system/Tests/Theme/FunctionsTest.php
index 4e94e37..0e33ef2 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Theme/FunctionsTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Theme/FunctionsTest.php
@@ -58,16 +58,17 @@ class FunctionsTest extends WebTestBase {
         ),
         // Any other keys are treated as item attributes.
         'id' => 'bee',
+        'type' => 'ol',
       ),
       array(
         'data' => 'e',
         'id' => 'E',
       ),
     );
-    $inner = '<div class="item-list"><ul id="childlist">';
+    $inner = '<div class="item-list"><ol id="childlist">';
     $inner .= '<li class="odd first">c</li>';
     $inner .= '<li class="dee even last">d</li>';
-    $inner .= '</ul></div>';
+    $inner .= '</ol></div>';
 
     $expected = '<div class="item-list">';
     $expected .= '<h3>Some title</h3>';
