diff --git a/swank.lisp b/swank.lisp
index 2cdaef0..b1ef074 100644
--- a/swank.lisp
+++ b/swank.lisp
@@ -2368,13 +2368,16 @@ and no continue restart available.")))))
 
 ;;;; Compilation Commands.
 
-(defstruct (:compilation-result
-             (:type list) :named)
-  notes
-  (successp nil :type boolean)
-  (duration 0.0 :type float)
-  (loadp nil :type boolean)
-  (faslfile nil :type (or null string)))
+(defun make-compilation-result (&key notes
+                                     (successp nil)
+                                     (duration 0.0)
+                                     (loadp nil)
+                                     (faslfile nil))
+  (check-type successp boolean)
+  (check-type duration float)
+  (check-type loadp boolean)
+  (check-type faslfile (or null string))
+  `(:compilation-result ,notes ,successp ,duration ,loadp ,faslfile))
 
 (defun measure-time-interval (fun)
   "Call FUN and return the first return value and the elapsed time.
