diff --git a/core/modules/block/lib/Drupal/block/Plugin/PluginUI/BlockPluginUI.php b/core/modules/block/lib/Drupal/block/Plugin/PluginUI/BlockPluginUI.php
index de7e079..5b469e3 100644
--- a/core/modules/block/lib/Drupal/block/Plugin/PluginUI/BlockPluginUI.php
+++ b/core/modules/block/lib/Drupal/block/Plugin/PluginUI/BlockPluginUI.php
@@ -86,7 +86,7 @@ public function form($form, &$form_state, $facet = NULL) {
       );
       foreach ($facets as $group => $values) {
         $form['right'][$group] = array(
-          '#theme' => 'links',
+          '#type' => 'links',
           '#heading' => array(
             'text' => $plugin_definition['facets'][$group],
             'level' => 'h3',
diff --git a/core/modules/node/lib/Drupal/node/Plugin/views/area/ListingEmpty.php b/core/modules/node/lib/Drupal/node/Plugin/views/area/ListingEmpty.php
index 666cf26..933fc6d 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/views/area/ListingEmpty.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/views/area/ListingEmpty.php
@@ -25,7 +25,7 @@ class ListingEmpty extends AreaPluginBase {
   public function render($empty = FALSE) {
     if (!$empty || !empty($this->options['empty'])) {
       $element = array(
-        '#theme' => 'links',
+        '#type' => 'links',
         '#links' => array(
           array(
             'href' => 'node/add',
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 d8505bc..6839cd5 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Theme/FunctionsTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Theme/FunctionsTest.php
@@ -210,7 +210,7 @@ function testDrupalPreRenderLinks() {
     // Define the base array to be rendered, containing a variety of different
     // kinds of links.
     $base_array = array(
-      '#theme' => 'links',
+      '#type' => 'links',
       '#pre_render' => array('drupal_pre_render_links'),
       '#links' => array(
         'parent_link' => array(
@@ -219,7 +219,7 @@ function testDrupalPreRenderLinks() {
         ),
       ),
       'first_child' => array(
-        '#theme' => 'links',
+        '#type' => 'links',
         '#links' => array(
           // This should be rendered if 'first_child' is rendered separately,
           // but ignored if the parent is being rendered (since it duplicates
@@ -237,7 +237,7 @@ function testDrupalPreRenderLinks() {
       ),
       // This should always be rendered as part of the parent.
       'second_child' => array(
-        '#theme' => 'links',
+        '#type' => 'links',
         '#links' => array(
           'second_child_link' => array(
             'title' => 'Second child link',
@@ -248,7 +248,7 @@ function testDrupalPreRenderLinks() {
       // This should never be rendered, since the user does not have access to
       // it.
       'third_child' => array(
-        '#theme' => 'links',
+        '#type' => 'links',
         '#links' => array(
           'third_child_link' => array(
             'title' => 'Third child link',
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index a6a7786..a3e6e8f 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -536,6 +536,12 @@ function system_element_info() {
   $types['value'] = array(
     '#input' => TRUE,
   );
+  $types['links'] = array(
+    '#theme' => 'links',
+    '#links' => array(),
+    '#attributes' => array('class' => array('links')),
+    '#heading' => array(),
+  );
   $types['link'] = array(
     '#pre_render' => array('drupal_pre_render_link'),
   );
diff --git a/core/modules/system/tests/modules/ajax_test/ajax_test.module b/core/modules/system/tests/modules/ajax_test/ajax_test.module
index e358018..5deca92 100644
--- a/core/modules/system/tests/modules/ajax_test/ajax_test.module
+++ b/core/modules/system/tests/modules/ajax_test/ajax_test.module
@@ -128,7 +128,7 @@ function ajax_test_dialog() {
 
   // Dialog behavior applied to links rendered by theme_links().
   $build['links'] = array(
-    '#theme' => 'links',
+    '#type' => 'links',
     '#links' => array(
       'link2' => array(
         'title' => 'Link 2 (modal)',
diff --git a/core/update.php b/core/update.php
index b74e226..3079a74 100644
--- a/core/update.php
+++ b/core/update.php
@@ -130,7 +130,7 @@ function update_script_selection_form($form, &$form_state) {
     drupal_set_message(t('No pending updates.'));
     unset($form);
     $form['links'] = array(
-      '#theme' => 'links',
+      '#type' => 'links',
       '#links' => update_helpful_links(),
     );
 
