1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-12 14:50:19 +02:00

remove `flet*' elisp special form

* module/language/elisp/compile-tree-il.scm (compile-flet*): Remove.
* module/language/elisp/runtime/function-slot.scm: Update module
  definition.
* test-suite/tests/elisp-compiler.test
  ("Lambda Expressions")["flet and flet*"]: Remove `flet*' test.
This commit is contained in:
BT Templeton 2011-07-10 17:14:32 -04:00
parent e5a361d1f9
commit 0a32abc462
3 changed files with 2 additions and 13 deletions

View file

@ -41,7 +41,6 @@
compile-flet compile-flet
compile-let* compile-let*
compile-lexical-let* compile-lexical-let*
compile-flet*
compile-guile-ref compile-guile-ref
compile-guile-primitive compile-guile-primitive
compile-while compile-while
@ -255,7 +254,7 @@
(iterate (cdr tail) lexical (cons (car tail) dynamic)))))) (iterate (cdr tail) lexical (cons (car tail) dynamic))))))
;;; Compile let and let* expressions. The code here is used both for ;;; Compile let and let* expressions. The code here is used both for
;;; let/let* and flet/flet*, just with a different bindings module. ;;; let/let* and flet, just with a different bindings module.
;;; ;;;
;;; A special module value 'lexical means that we're doing a lexical-let ;;; A special module value 'lexical means that we're doing a lexical-let
;;; instead and the bindings should not be saved to globals at all but ;;; instead and the bindings should not be saved to globals at all but
@ -698,11 +697,6 @@
((,bindings . ,body) ((,bindings . ,body)
(generate-let* loc 'lexical bindings body)))) (generate-let* loc 'lexical bindings body))))
(defspecial flet* (loc args)
(pmatch args
((,bindings . ,body)
(generate-let* loc function-slot bindings body))))
;;; guile-ref allows building TreeIL's module references from within ;;; guile-ref allows building TreeIL's module references from within
;;; elisp as a way to access data within the Guile universe. The module ;;; elisp as a way to access data within the Guile universe. The module
;;; and symbol referenced are static values, just like (@ module symbol) ;;; and symbol referenced are static values, just like (@ module symbol)

View file

@ -32,7 +32,6 @@
(compile-flet . flet) (compile-flet . flet)
(compile-let* . let*) (compile-let* . let*)
(compile-lexical-let* . lexical-let*) (compile-lexical-let* . lexical-let*)
(compile-flet* . flet*)
(compile-guile-ref . guile-ref) (compile-guile-ref . guile-ref)
(compile-guile-primitive . guile-primitive) (compile-guile-primitive . guile-primitive)
(compile-while . while) (compile-while . while)
@ -56,7 +55,6 @@
flet flet
let* let*
lexical-let* lexical-let*
flet*
guile-ref guile-ref
guile-primitive guile-primitive
while while

View file

@ -413,7 +413,7 @@
(not (fboundp 'a)) (not (fboundp 'a))
(= a 1)))) (= a 1))))
(pass-if "flet and flet*" (pass-if "flet"
(progn (defun foobar () 42) (progn (defun foobar () 42)
(defun test () (foobar)) (defun test () (foobar))
(and (= (test) 42) (and (= (test) 42)
@ -421,9 +421,6 @@
(myfoo (symbol-function 'foobar))) (myfoo (symbol-function 'foobar)))
(and (= (myfoo) 42) (and (= (myfoo) 42)
(= (test) 42))) (= (test) 42)))
(flet* ((foobar (lambda () 0))
(myfoo (symbol-function 'foobar)))
(= (myfoo) 42))
(flet (foobar) (flet (foobar)
(defun foobar () 0) (defun foobar () 0)
(= (test) 42)) (= (test) 42))