diff --git a/asdf.asd b/asdf.asd
index 5e307f508dde429e010a740e33637931ec10708f..8a13fd3aef63c500a410e996cb12c704c19b6564 100644
--- a/asdf.asd
+++ b/asdf.asd
@@ -74,7 +74,7 @@
   :licence "MIT"
   :description "Another System Definition Facility"
   :long-description "ASDF builds Common Lisp software organized into defined systems."
-  :version "2.32.33" ;; to be automatically updated by make bump-version
+  :version "2.32.34" ;; to be automatically updated by make bump-version
   :depends-on ()
   #+asdf3 :encoding #+asdf3 :utf-8
   ;; For most purposes, asdf itself specially counts as a builtin system.
diff --git a/defsystem.lisp b/defsystem.lisp
index 87506eec13012e957ed76e2fc0a983eeda08b2bf..06a69170e2402f4da0ee9cc7b8c0ab2264629be1 100644
--- a/defsystem.lisp
+++ b/defsystem.lisp
@@ -11,7 +11,7 @@
    #:defsystem #:register-system-definition
    #:class-for-type #:*default-component-class*
    #:determine-system-directory #:parse-component-form
-   #:duplicate-names #:sysdef-error-component #:check-component-input))
+   #:duplicate-names #:non-toplevel-system #:sysdef-error-component #:check-component-input))
 (in-package :asdf/defsystem)
 
 ;;; Pathname
@@ -71,6 +71,13 @@
                (format s (compatfmt "~@<Error while defining system: multiple components are given same name ~S~@:>")
                        (duplicate-names-name c)))))
 
+  (define-condition non-toplevel-system (system-definition-error)
+    ((parent :initarg :parent :reader non-toplevel-system-parent)
+     (name :initarg :name :reader non-toplevel-system-name))
+    (:report (lambda (c s)
+               (format s (compatfmt "~@<Error while defining system: component ~S claims to have a system ~S as a child~@:>")
+                       (non-toplevel-system-parent c) (non-toplevel-system-name c)))))
+
   (defun sysdef-error-component (msg type name value)
     (sysdef-error (strcat msg (compatfmt "~&~@<The value specified for ~(~A~) ~A is ~S~@:>"))
                   type name value))
@@ -140,7 +147,8 @@
                          (class-for-type parent type))))
         (error 'duplicate-names :name name))
       (when do-first (error "DO-FIRST is not supported anymore as of ASDF 3"))
-      (let* ((args `(:name ,(coerce-name name)
+      (let* ((name (coerce-name name))
+             (args `(:name ,name
                      :pathname ,pathname
                      ,@(when parent `(:parent ,parent))
                      ,@(remove-plist-keys
@@ -148,16 +156,13 @@
                           :perform :explain :output-files :operation-done-p
                           :weakly-depends-on :depends-on :serial)
                         rest)))
-             (component (find-component parent name)))
-        (when weakly-depends-on
-          ;; ASDF4: deprecate this feature and remove it.
-          (appendf depends-on
-                   (remove-if (complement #'(lambda (x) (find-system x nil))) weakly-depends-on)))
-        (when previous-serial-component
-          (push previous-serial-component depends-on))
+             (component (find-component parent name))
+             (class (class-for-type parent type)))
+        (when (and parent (subtypep class 'system))
+          (error 'non-toplevel-system :parent parent :name name))
         (if component ; preserve identity
             (apply 'reinitialize-instance component args)
-            (setf component (apply 'make-instance (class-for-type parent type) args)))
+            (setf component (apply 'make-instance class args)))
         (component-pathname component) ; eagerly compute the absolute pathname
         (let ((sysfile (system-source-file (component-system component)))) ;; requires the previous
           (when (and (typep component 'system) (not bspp))
@@ -177,6 +182,12 @@
                   :collect c
                   :when serial :do (setf previous-component name)))
           (compute-children-by-name component))
+        (when previous-serial-component
+          (push previous-serial-component depends-on))
+        (when weakly-depends-on
+          ;; ASDF4: deprecate this feature and remove it.
+          (appendf depends-on
+                   (remove-if (complement #'(lambda (x) (find-system x nil))) weakly-depends-on)))
         ;; Used by POIU. ASDF4: rename to component-depends-on?
         (setf (component-sideway-dependencies component) depends-on)
         (%refresh-component-inline-methods component rest)
diff --git a/header.lisp b/header.lisp
index bd1d42872295db41469365abbb10fcb3d0c0d36f..0729a2213d1473e3918886b627bdd4f41ce6d6d0 100644
--- a/header.lisp
+++ b/header.lisp
@@ -1,5 +1,5 @@
 ;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
-;;; This is ASDF 2.32.33: Another System Definition Facility.
+;;; This is ASDF 2.32.34: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
diff --git a/interface.lisp b/interface.lisp
index 2aeed021f2a9bc8701bf047d00aaffb95a4ef69c..2939381bfc14c98e1c8e1d91ed3c117d93fa98e5 100644
--- a/interface.lisp
+++ b/interface.lisp
@@ -116,7 +116,7 @@
    #:missing-dependency
    #:missing-dependency-of-version
    #:circular-dependency        ; errors
-   #:duplicate-names
+   #:duplicate-names #:non-toplevel-system
 
    #:try-recompiling
    #:retry
diff --git a/upgrade.lisp b/upgrade.lisp
index 8ca3e1ff7b72bfe7958e3221abd8f60dec8e0ab9..b0ea15b4804c32e5d9097cb755780c2dd6ff9fc5 100644
--- a/upgrade.lisp
+++ b/upgrade.lisp
@@ -52,7 +52,7 @@ You can compare this string with e.g.: (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSIO
          ;; "3.4.5.67" would be a development version in the official upstream of 3.4.5.
          ;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5
          ;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67
-         (asdf-version "2.32.33")
+         (asdf-version "2.32.34")
          (existing-version (asdf-version)))
     (setf *asdf-version* asdf-version)
     (when (and existing-version (not (equal asdf-version existing-version)))
diff --git a/version.lisp-expr b/version.lisp-expr
index e40db9d5d68306a7e4e63218e33aeb4a5da83380..60a2c3b4803691358d514757d3e39b575fe11ec6 100644
--- a/version.lisp-expr
+++ b/version.lisp-expr
@@ -1 +1 @@
-"2.32.33"
+"2.32.34"