The test code: ---------------- (let ((test (let ((after-make-frame-functions nil)) (make-frame `((parent-frame . ,(window-frame)) (width . 10) (height . 10)))))) (set-frame-parameter test 'parent-frame (window-frame))) ---------- The error: ------- Debugger entered--Lisp error: (error "Invalid specification of ¡®parent-frame¡¯") modify-frame-parameters(# ((parent-frame . #))) set-frame-parameter(# parent-frame #) (let ((test (let ((after-make-frame-functions nil)) (make-frame (cons (cons 'parent-frame (window-frame)) '((width . 10) (height . 10))))))) (set-frame-parameter test 'parent-frame (window-frame))) eval((let ((test (let ((after-make-frame-functions nil)) (make-frame (cons (cons 'parent-frame (window-frame)) '((width . 10) (height . 10))))))) (set-frame-parameter test 'parent-frame (window-frame))) nil) elisp--eval-last-sexp(nil) #f(compiled-function (eval-last-sexp-arg-internal) "Evaluate sexp before point; print value in the echo area.\nInteractively, with a non `-' prefix argument, print output into\ncurrent buffer.\n\nNormally, this function truncates long output according to the\nvalue of the variables `eval-expression-print-length' and\n`eval-expression-print-level'. With a prefix argument of zero,\nhowever, there is no such truncation. Such a prefix argument\nalso causes integers to be printed in several additional formats\n(octal, hexadecimal, and character when the prefix argument is\n-1 or the integer is `eval-expression-print-maximum-character' or\nless).\n\nIf `eval-expression-debug-on-error' is non-nil, which is the default,\nthis command arranges for all errors to enter the debugger." (interactive "P") #)(nil) #f(compiled-function (&rest _it) #)() eval-sexp-fu-flash-doit-simple(#f(compiled-function (&rest _it) #) #f(compiled-function (&rest args2) #) #f(compiled-function (&rest args2) #)) eval-sexp-fu-flash-doit(#f(compiled-function (&rest _it) #) #f(compiled-function (&rest args2) #) #f(compiled-function (&rest args2) #)) esf-flash-doit(#f(compiled-function (&rest _it) #) #f(compiled-function (&rest args2) #) #f(compiled-function (&rest args2) #) #f(compiled-function (&rest args2) #)) ad-Advice-eval-last-sexp(#f(compiled-function (eval-last-sexp-arg-internal) "Evaluate sexp before point; print value in the echo area.\nInteractively, with a non `-' prefix argument, print output into\ncurrent buffer.\n\nNormally, this function truncates long output according to the\nvalue of the variables `eval-expression-print-length' and\n`eval-expression-print-level'. With a prefix argument of zero,\nhowever, there is no such truncation. Such a prefix argument\nalso causes integers to be printed in several additional formats\n(octal, hexadecimal, and character when the prefix argument is\n-1 or the integer is `eval-expression-print-maximum-character' or\nless).\n\nIf `eval-expression-debug-on-error' is non-nil, which is the default,\nthis command arranges for all errors to enter the debugger." (interactive "P") #) nil) apply(ad-Advice-eval-last-sexp #f(compiled-function (eval-last-sexp-arg-internal) "Evaluate sexp before point; print value in the echo area.\nInteractively, with a non `-' prefix argument, print output into\ncurrent buffer.\n\nNormally, this function truncates long output according to the\nvalue of the variables `eval-expression-print-length' and\n`eval-expression-print-level'. With a prefix argument of zero,\nhowever, there is no such truncation. Such a prefix argument\nalso causes integers to be printed in several additional formats\n(octal, hexadecimal, and character when the prefix argument is\n-1 or the integer is `eval-expression-print-maximum-character' or\nless).\n\nIf `eval-expression-debug-on-error' is non-nil, which is the default,\nthis command arranges for all errors to enter the debugger." (interactive "P") #) nil) eval-last-sexp(nil) eros-eval-last-sexp(nil) funcall-interactively(eros-eval-last-sexp nil) call-interactively(eros-eval-last-sexp nil nil) command-execute(eros-eval-last-sexp) -------