diff --git a/core/lib/Drupal/Core/Config/Schema/SchemaCheckTrait.php b/core/lib/Drupal/Core/Config/Schema/SchemaCheckTrait.php
index 5127adc..7af4863 100644
--- a/core/lib/Drupal/Core/Config/Schema/SchemaCheckTrait.php
+++ b/core/lib/Drupal/Core/Config/Schema/SchemaCheckTrait.php
@@ -57,9 +57,20 @@ public function checkConfigSchema(TypedConfigManagerInterface $typed_config, $co
     $data_definition = $typed_config->buildDataDefinition($definition, $config_data);
     $this->schema = $typed_config->create($data_definition, $config_data);
     $errors = array();
+    // Verify that all of the config values are the right types.
     foreach ($config_data as $key => $value) {
       $errors = array_merge($errors, $this->checkValue($key, $value));
     }
+    // We'd like to verify that the top-level type is either config_base,
+    // config_entity, or a derivative. The only thing we can really test though
+    // is that it has a langcode element.
+    $error_key = $this->configName . ':langcode';
+    if (!isset($errors[$error_key])) {
+      $element = $this->schema->get('langcode');
+      if ($element instanceof Undefined) {
+        $errors[$error_key] => 'missing langcode';
+      }
+    }
     if (empty($errors)) {
       return TRUE;
     }
diff --git a/core/modules/menu_ui/config/schema/menu_ui.schema.yml b/core/modules/menu_ui/config/schema/menu_ui.schema.yml
index 19d3efc..69af435 100644
--- a/core/modules/menu_ui/config/schema/menu_ui.schema.yml
+++ b/core/modules/menu_ui/config/schema/menu_ui.schema.yml
@@ -1,7 +1,7 @@
 # Schema for configuration files of the Menu UI module.
 
 menu_ui.settings:
-  type: mapping
+  type: config_object
   label: 'Menu settings'
   mapping:
     override_parent_selector:
