[cl-walker-devel] CL-Walker changes
Alexander Gavrilov
angavrilov at gmail.com
Wed Nov 4 14:42:53 UTC 2009
> as i've checked your changes, unfortunately we seem to have done/fixed
> similar things as you... could you please port your stuff to the
> hu.dwim.walker repo?
>
> due to Levy's work on hu.dwim.partial-eval, the walker gets many new
> features nowadays.
>
> also, it would be a big help if you could use darcs. if you can deal
> with git, then darcs should be really simple. just a darcs record, and
> an ssh account somewhere for the darcs push. or even simpler, just use
> your local repo and a darcs send to package a binary file that we can
> apply using darcs apply -i /tmp/file, including all metainformation of
> your record.
So here is a first bunch of changes...
Alexander
-------------- next part --------------
Wed Nov 4 16:41:20 MSK 2009 Alexander Gavrilov <angavrilov at gmail.com>
* Remove the seemingly unused dependency on asdf-install.
Also add guards on the use of asdf-system-connections,
to avoid triggering a bug in ECL's compiler when the
referenced classes are not defined.
New patches:
[Remove the seemingly unused dependency on asdf-install.
Alexander Gavrilov <angavrilov at gmail.com>**20091104134120
Ignore-this: 7e4124b715c8dce2ba55af836ad5d944
Also add guards on the use of asdf-system-connections,
to avoid triggering a bug in ECL's compiler when the
referenced classes are not defined.
] hunk ./source/package.lisp 11
(defpackage :hu.dwim.asdf
(:use :asdf
- :asdf-install
:common-lisp)
(:export #:hu.dwim.system
hunk ./source/system.lisp 24
(defclass system-with-readtable (system readtable-function-mixin)
())
+#+asdf-system-connections
(defclass system-connection-with-readtable (system-connection readtable-function-mixin)
())
hunk ./source/system.lisp 31
(defmethod asdf::module-default-component-class ((class system-with-readtable))
'cl-source-file-with-readtable)
+#+asdf-system-connections
(defmethod asdf::module-default-component-class ((class system-connection-with-readtable))
'cl-source-file-with-readtable)
hunk ./source/system.lisp 114
(defclass hu.dwim.documentation-system (system-with-readtable+package)
())
+#+asdf-system-connections
(defclass hu.dwim.system-connection (system-connection-with-readtable)
())
hunk ./source/system.lisp 130
(defmethod asdf::module-default-component-class ((class hu.dwim.system))
'hu.dwim.source-file)
+#+asdf-system-connections
(defmethod asdf::module-default-component-class ((class hu.dwim.system-connection))
'hu.dwim.source-file)
Context:
[Fix docu.
levente.meszaros at gmail.com**20091020163221
Ignore-this: 7bb313b4eee28778891f0b89a2c77a20
]
[Follow hu.dwim.common-lisp renaming.
levente.meszaros at gmail.com**20091020140847
Ignore-this: d5eca57032981ddad8d75ae336db433b
]
[Documentation.
levente.meszaros at gmail.com**20091020123301
Ignore-this: 8290a5c91271324544dbda37dfbce10f
]
[Remove operation-done-p, that is already part of asdf.
levente.meszaros at gmail.com**20091009161311
Ignore-this: c1699015ff5d8eb2c32eb00b4db6be0d
]
[Moved build-image into a separate project.
levente.meszaros at gmail.com**20090924110305
Ignore-this: bb86d3c147ba40f8d4620c1803d46bf2
]
[Removed swank-sprof.lisp loading, because that is already part of slime.
levente.meszaros at gmail.com**20090922094743
Ignore-this: 768e19b41f5bd00577c941c766dab9c9
]
[change system load order: files in global/ are added at the end of the list
attila.lendvai at gmail.com**20090921133615
Ignore-this: 7c3a740477662e903ceb57b197de30d5
]
[develop-op needs an operation-done-p that constantly returns #f
attila.lendvai at gmail.com**20090921133546
Ignore-this: 18789f0d4d6bf84756eb60bb6fcb2800
]
[no default binding for *development-package*
attila.lendvai at gmail.com**20090921132317
Ignore-this: a1de60e2972c817f5b295f924f09e8de
]
[Moved stuff from environment.lisp into this system.
levente.meszaros at gmail.com**20090920120738
Ignore-this: 779e857cb9b2817c456b342d56395344
]
[export *workspace-directory*
attila.lendvai at gmail.com**20090918153237
Ignore-this: 354ce2f61f7891b45f56b13ee1cf5c8b
]
[muffle boring compiler notes when building
attila.lendvai at gmail.com**20090917161205
Ignore-this: f4085bc8407d359bd4880aa6526a602
]
[*workspace-directory* was moved to hu.dwim.asdf
attila.lendvai at gmail.com**20090917161140
Ignore-this: bbaf85df936d792251fb492731fe7d56
]
[store swank fasl's in the same location as the others
attila.lendvai at gmail.com**20090917161042
Ignore-this: 7b829ce69d22eb09cedc6e5da0f63d7b
]
[added with-muffled-boring-compiler-warnings
attila.lendvai at gmail.com**20090917123224
Ignore-this: dea6dc6a6d23e63e8fb7fae6af33e604
]
[Fix.
levente.meszaros at gmail.com**20090911125700
Ignore-this: e8e7816760531bb00d6708b285ca7116
]
[Fix development image suffix.
levente.meszaros at gmail.com**20090911123228
Ignore-this: 372b9e10832823cf048b827d22fa8e3f
]
[Save executable for production.
levente.meszaros at gmail.com**20090911122700
Ignore-this: 634993d3af1c263c1ce718efcb4caf37
]
[Decrease the number of different fasls directory names by one.
levente.meszaros at gmail.com**20090908131919
Ignore-this: bb21bd57cf2f1290d66a32af9da25fbc
]
[Refactor for build-image.
levente.meszaros at gmail.com**20090908101358
Ignore-this: aa1aa7d6f26c4e575f724feaab049acb
]
[Exports.
levente.meszaros at gmail.com**20090825112258
Ignore-this: f3367798916fc942ecbee4ef90f7b571
]
[Muffle undefined alien style warnings.
levente.meszaros at gmail.com**20090825112159
Ignore-this: 20dc2bdd00dd62f69026321915576e33
]
[Muffle optimization warnings by default.
levente.meszaros at gmail.com**20090823164710
Ignore-this: f8ec75d4352dd59b23e4cb54fb35db7
]
[Initial.
levente.meszaros at gmail.com**20090814155225
Ignore-this: 3c38ff458eb374cacad57f425df54526
]
Patch bundle hash:
5fd2a84f530aef458fcad64ad0614aef6116fcde
-------------- next part --------------
Wed Nov 4 15:57:14 MSK 2009 Alexander Gavrilov <angavrilov at gmail.com>
* Allow loading the package with any encoding settings.
Use hex codes for unicode quote characters, so that
this package does not depend on the encoding used for
loading the source code.
New patches:
[Allow loading the package with any encoding settings.
Alexander Gavrilov <angavrilov at gmail.com>**20091104125714
Ignore-this: 37c7edd139f675ebe73e96d1a282ac3b
Use hex codes for unicode quote characters, so that
this package does not depend on the encoding used for
loading the source code.
] hunk ./source/string-quote.lisp 9
(in-package :hu.dwim.syntax-sugar)
-(define-syntax string-quote (&key (start-character #\?) (end-character #\?) transformer)
+(define-syntax string-quote (&key (start-character #.(code-char #xFF62)) (end-character #.(code-char #xFF63)) transformer)
"A simple string quote that unconditionally reads all characters until END-CHARACTER into a string."
(bind ((reader (make-string-quote-reader end-character transformer)))
(set-macro-character start-character reader t *readtable*)))
Context:
[follow walker refactor
attila.lendvai at gmail.com**20091027135536
Ignore-this: 2026416fddc472605e5db9cf1a2b38f5
]
[de-bitrot some tests
attila.lendvai at gmail.com**20091027135520
Ignore-this: 9c0450cffd179a9fe8994370b7b37e6
]
[Follow hu.dwim.common split
levente.meszaros at gmail.com**20091020163515
Ignore-this: 7ccc9ee2bd8080dd72ac996ffdf05a38
]
[Fix docu
levente.meszaros at gmail.com**20091020163420
Ignore-this: ab7a4d713e37c48f72fa78cf5f71838a
]
[Follow hu.dwim.common-lisp renaming.
levente.meszaros at gmail.com**20091020141008
Ignore-this: d47a594d488b88089c4c824059a8dabb
]
[Documentation.
levente.meszaros at gmail.com**20091020123311
Ignore-this: c14f693157c9de937641f536ddb3aa40
]
[Follow logger.
levente.meszaros at gmail.com**20091009161717
Ignore-this: 76f332455c03060cf66fb60a73662183
]
[Remove obsolete documentation code.
levente.meszaros at gmail.com**20090924121208
Ignore-this: 45efa47bee564fa02e2f7a25cb1c6ef9
]
[Eliminate some unused duplicates.
levente.meszaros at gmail.com**20090922131402
Ignore-this: 338fa7d5ee182897fa7a7fa916664795
]
[Get rid of aif, awhen, aprog1 we're using anaphora.
levente.meszaros at gmail.com**20090922125011
Ignore-this: cefe8fe754d8018c1b041ce5b63aa21a
]
[In package hu.dwim.asdf
levente.meszaros at gmail.com**20090908101942
Ignore-this: b068ecdad8d7b7db83f1c440c4b60028
]
[Refactor for dwim.hu
levente.meszaros at gmail.com**20090814092820
Ignore-this: d037e817fbd28d61f81efca35402900f
]
[qq reader returns (values result matched?) that can be used when customizing with the :toplevel-reader-wrapper
attila.lendvai at gmail.com**20090411180636
Ignore-this: 74490d2d2f0eda79f32c38ef212dc15d
]
[factor out maybe-funcall-setup-readtable-function
attila.lendvai at gmail.com**20090308205909
Ignore-this: c6598a853346f7af8086f57f2a800d77
]
[renamed to *quasi-quote-lexical-depth*
attila.lendvai at gmail.com**20090228153611
Ignore-this: 594e78376f907d81180dba62b0593d73
]
[follow cl-walker walk-ast rename
attila.lendvai at gmail.com**20081230135656
Ignore-this: e3f04766224260764759543ab206b5df
]
[fix qq reader thinko
attila.lendvai at gmail.com**20081229222531
Ignore-this: d2a54b3ab738bda5bcb17db8eb45ae6e
]
[fix nested qq reader bug and add log statements. the interesting change is small, getting the previous unquote reader in read-quasi-quote, the rest is logging and indenting
attila.lendvai at gmail.com**20081226180008
Ignore-this: 6fb58dad7a72583aa0171a3c31def381
]
[added :unquote-readtable-case to the qq syntax
attila.lendvai at gmail.com**20081214154547
Ignore-this: 9a22ab89a7c9f9ce1e85a8d3f5657dc9
]
[TAG 2008-11-27
attila.lendvai at gmail.com**20081127150509
Ignore-this: 130c861e19237f1634b690048054d730
]
Patch bundle hash:
a04b03b9ee300d067621e76419ea547eb428c2c8
-------------- next part --------------
Wed Nov 4 17:28:40 MSK 2009 Alexander Gavrilov <angavrilov at gmail.com>
* Allow Closer-MOP to shadow some standard names.
In most implementations Closer-MOP replaces some of
the system definitions with its own. This requires
using shadowing import, and ignoring import conflicts
in automated code.
New patches:
[Allow Closer-MOP to shadow some standard names.
Alexander Gavrilov <angavrilov at gmail.com>**20091104142840
Ignore-this: b8555383af7ac2ab66a0dfd836e2f512
In most implementations Closer-MOP replaces some of
the system definitions with its own. This requires
using shadowing import, and ignoring import conflicts
in automated code.
] hunk ./source/common.lisp 16
(funcall filter symbol))
;; do take care of the symbol nil: (list nil)!
(let ((symbol (or symbol (list nil))))
- (import symbol target-package)
- (export symbol target-package)))))
+ (ignore-errors
+ (import symbol target-package)
+ (export symbol target-package))))))
(defun export-external-symbols-of-used-packages (package &key filter)
(dolist (used-package (package-use-list (find-package package)))
hunk ./source/package.lisp 17
:iterate
:metabang-bind)
+ (:shadowing-import-from :closer-mop
+ #:standard-generic-function
+ #:defgeneric
+ #:ensure-generic-function
+ #:remove-method
+ #:find-method)
+
(:export #:export-external-symbols
#:export-external-symbols-of-used-packages))
Context:
[Initial.
levente.meszaros at gmail.com**20091020163606
Ignore-this: 59b607773dd7f62f847f4182a72d5bf3
]
Patch bundle hash:
47cf6f6c29b0806565daaf9009eaac5a8639dc09
-------------- next part --------------
Wed Nov 4 16:00:52 MSK 2009 Alexander Gavrilov <angavrilov at gmail.com>
* Reduce dependencies of the core package.
Separate a base package that does not have so many
dependencies; especially on iolib, since it appears
to have very limited OS portability.
Also note that the reader case macro does not quite
work if the body refers to symbols in non-existant
packages, hence the addition of an ordinary guard.
New patches:
[Reduce dependencies of the core package.
Alexander Gavrilov <angavrilov at gmail.com>**20091104130052
Ignore-this: d60010dfe92362b2bc4c69eab55b23cb
Separate a base package that does not have so many
dependencies; especially on iolib, since it appears
to have very limited OS portability.
Also note that the reader case macro does not quite
work if the body refers to symbols in non-existant
packages, hence the addition of an ordinary guard.
] addfile ./hu.dwim.util-base.asd
hunk ./hu.dwim.util-base.asd 1
+;;; -*- mode: Lisp; Syntax: Common-Lisp; -*-
+;;;
+;;; Copyright (c) 2009 by the authors.
+;;;
+;;; See LICENCE for details.
+
+(load-system :hu.dwim.asdf)
+
+(in-package :hu.dwim.asdf)
+
+(defsystem :hu.dwim.util-base
+ :class hu.dwim.system
+ :setup-readtable-function-name "hu.dwim.util::setup-readtable"
+ :author ("Attila Lendvai <attila.lendvai at gmail.com>"
+ "Tam?s Borb?ly <tomi.borbely at gmail.com>"
+ "Levente M?sz?ros <levente.meszaros at gmail.com>")
+ :licence "BSD / Public domain"
+ :description "Various utilities"
+ :depends-on (:cl-fad
+ :trivial-shell
+ :hu.dwim.common
+ :hu.dwim.def
+ :hu.dwim.defclass-star+hu.dwim.def
+ :hu.dwim.syntax-sugar
+ #+#.(cl:when (cl:find-package "SWANK") '(:and))
+ ;; TODO it should be :hu.dwim.syntax-sugar once the readtable supporting package definer is added
+ :hu.dwim.syntax-sugar+swank)
+ :components ((:module "source"
+ :components ((:file "configuration" :depends-on ("package"))
+ (:file "integer-to-string" :depends-on ("configuration"))
+ (:file "package")
+ (:file "string" :depends-on ("configuration"))
+ (:file "util" :depends-on ("configuration"))))))
hunk ./hu.dwim.util.asd 18
"Levente M?sz?ros <levente.meszaros at gmail.com>")
:licence "BSD / Public domain"
:description "Various utilities"
- :depends-on (:cl-fad
+ :depends-on (:hu.dwim.util-base
:command-line-arguments
hunk ./hu.dwim.util.asd 20
- :hu.dwim.common
- :hu.dwim.def
- :hu.dwim.defclass-star+hu.dwim.def
:hu.dwim.syntax-sugar+swank ; TODO it should be :hu.dwim.syntax-sugar once the readtable supporting package definer is added
hunk ./hu.dwim.util.asd 21
- :iolib.syscalls
- :trivial-shell)
+ :iolib.syscalls)
:components ((:module "source"
hunk ./hu.dwim.util.asd 23
- :components ((:file "command-line" :depends-on ("configuration"))
- (:file "configuration" :depends-on ("package"))
- (:file "dynamic-context" :depends-on ("util"))
- (:file "error-handling" :depends-on ("util"))
- (:file "integer-to-string" :depends-on ("configuration"))
- (:file "package")
- (:file "production" :depends-on ("util"))
- (:file "string" :depends-on ("configuration"))
- (:file "util" :depends-on ("configuration"))))
+ :components ((:file "command-line")
+ (:file "dynamic-context")
+ (:file "error-handling")
+ (:file "production")))
(:module "integration"
:depends-on ("source")
:components (#+sbcl (:file "sbcl")))))
hunk ./source/util.lisp 81
(def (macro e) with-thread-name (name &body body)
(declare (ignorable name))
- #*((:sbcl
+ #*(#+sbcl
+ (:sbcl
(with-unique-names (thread previous-name)
`(let* ((,thread sb-thread:*current-thread*)
(,previous-name (sb-thread:thread-name ,thread)))
Context:
[moved integer-to-string here from wui
attila.lendvai at gmail.com**20091101181205
Ignore-this: 6b4465f29b8b944bbf1ba30da25cb6c0
]
[smallies to production.lisp: reinstate logging through *debug-io*, etc
attila.lendvai at gmail.com**20091030161410
Ignore-this: 5b8817bddf63778e85009520a34b7c0
]
[def constant uses equal test by default
levente.meszaros at gmail.com**20091023134441
Ignore-this: 6250b49b54543b5bed105c9749e32ca
]
[Follow hu.dwim.common split
levente.meszaros at gmail.com**20091020163517
Ignore-this: fbde08fb6ee6282161f91475feaed825
]
[Fix docu
levente.meszaros at gmail.com**20091020163423
Ignore-this: 5b1ccd68686345903b4d186ed47dd3af
]
[Follow hu.dwim.common-lisp renaming.
levente.meszaros at gmail.com**20091020141010
Ignore-this: 3ecb0c8be921cfefe2fb0151d1ec920d
]
[Documentation.
levente.meszaros at gmail.com**20091020123312
Ignore-this: 86df050e391812a4afd391e5f9c60036
]
[Follow logger
levente.meszaros at gmail.com**20091009161733
Ignore-this: f6a3bbd95984b661cd4e46194735481
]
[Revive missing functions.
levente.meszaros at gmail.com**20090924215331
Ignore-this: 26e63c2c8515137623bdcbaebfd93481
]
[Remove unused code.
levente.meszaros at gmail.com**20090924110222
Ignore-this: 6417042d8d284b74900311be517a5ced
]
[Separate command line option support.
levente.meszaros at gmail.com**20090924110003
Ignore-this: e9b685df7154c853bc21ed5d9f97ce64
]
[housekeeping
attila.lendvai at gmail.com**20090921172520
Ignore-this: cdcef58013a1c1fdfb83673e503319d3
]
[Fix swank startup.
levente.meszaros at gmail.com**20090915115807
Ignore-this: 2c6e2cc9aa60b09cdd9b0b2bb54224f9
]
[Renames.
levente.meszaros at gmail.com**20090915115747
Ignore-this: 97fd3824aaad71fda11591013144fa9a
]
[asdf
levente.meszaros at gmail.com**20090914102313
Ignore-this: fa52da038a9ab58f3e6646b8cfa5d952
]
[Command line arguments.
levente.meszaros at gmail.com**20090911154124
Ignore-this: fd6c3076640fd10871374d96de89683a
]
[String+
levente.meszaros at gmail.com**20090911152730
Ignore-this: 2f8546d659de2bf131827254070f3929
]
[Some string utils.
levente.meszaros at gmail.com**20090910101557
Ignore-this: 6decea85c9e0f99d8fe0ce3ae356c990
]
[Build image.
levente.meszaros at gmail.com**20090908102300
Ignore-this: 637e1db1da91876c8bbc188e1768b1a3
]
[Added CV.
levente.meszaros at gmail.com**20090908102247
Ignore-this: c7e0038db278c6cdf6d56a25db1ea00c
]
[Fix asdf
levente.meszaros at gmail.com**20090908102143
Ignore-this: ea7c9171e3836932a4cf66b40bb46499
]
[In package hu.dwim.asdf
levente.meszaros at gmail.com**20090908101948
Ignore-this: 7b76fa53e5cf2f1d05c064d9d74bc540
]
[Added production support.
levente.meszaros at gmail.com**20090907163551
Ignore-this: 1a29621c942dc70ed2e0c1b2ff40afc5
]
[Fix asdf dependency.
levente.meszaros at gmail.com**20090825112231
Ignore-this: 784a7957979fdc95ecfb7bfa0ed5ed5c
]
[Copy dwim<>= from old dwim.
levente.meszaros at gmail.com**20090823204517
Ignore-this: c899d5c1676dd448692b8c3c413c9655
]
[Kill duplicates in dynamic-context implementation
levente.meszaros at gmail.com**20090823143745
Ignore-this: d89f346f79e582596192f36c00986c1
]
[Refactor for dwim.hu
levente.meszaros at gmail.com**20090814162656
Ignore-this: e0b1a500c0ebbda03b0280d763555512
]
[Depend on swank for readtable support.
levente.meszaros at gmail.com**20090718110713
Ignore-this: 4bb0ab3c8ae7bd5d2b495a82696c7964
]
[Rename asdf system connection.
levente.meszaros at gmail.com**20090709160741
Ignore-this: e1a165415f14b5c0079d455481e8bdfa
]
[error handling work, get rid of *debug-context*
attila.lendvai at gmail.com**20090709135712
Ignore-this: 7f51bb46e4c17b0d96555736ba97ea0e
]
[asd: follow :hu.dwim.util rename
attila.lendvai at gmail.com**20090709135646
Ignore-this: 144f835cbd975b2021029c23154137e8
]
[added ensure-sequence
attila.lendvai at gmail.com**20090709135632
Ignore-this: c6ea28e3abd89125f67d3c53f12a1217
]
[Fix integration.
levente.meszaros at gmail.com**20090707145809
Ignore-this: 1cdaec0d1dcea9be0f6929046a8cc31c
]
[factored out error handling from wui
attila.lendvai at gmail.com**20090706212508
Ignore-this: 6b7112c3285fd7b68fbcb2df8cce6f7a
]
[don't depend on cl-walker
attila.lendvai at gmail.com**20090703105222
Ignore-this: 72e73fbd07e702a4cc39a78a3e7499d
]
[Renamed system to hu.dwim.util.
levente.meszaros at gmail.com**20090707144856
Ignore-this: b05eb6d6baa4a61e1e8707974023bbfa
]
[Fix bang syntax.
levente.meszaros at gmail.com**20090630130914
Ignore-this: fefa0e55759b7a6bcd000880cfc163cf
]
[Initial.
levente.meszaros at gmail.com**20090630125600
Ignore-this: 8e816ff638ae6be1a3f22a362699f99
]
Patch bundle hash:
284c0c0226655b62728279cc6b85a78ac2f578f0
-------------- next part --------------
Wed Nov 4 15:55:23 MSK 2009 Alexander Gavrilov <angavrilov at gmail.com>
* Don't use nested reader conditions.
They break ClozureCL's parser for some reason,
so it reports a premature end of file.
New patches:
[Don't use nested reader conditions.
Alexander Gavrilov <angavrilov at gmail.com>**20091104125523
Ignore-this: 7c5c2e6a007952dd4fa24a392171861f
They break ClozureCL's parser for some reason,
so it reports a premature end of file.
] {
hunk ./source/configuration.lisp 15
(defun setup-readtable ()
(enable-sharp-boolean-syntax))
+#|
#+nil
#+#.(cl:when (cl:find-package "SWANK") '(:and))
(register-readtable-for-swank
hunk ./source/configuration.lisp 20
'(:hu.dwim.def) 'setup-readtable)
+|#
}
Context:
[added preliminary struct definer
attila.lendvai at gmail.com**20091029180028
Ignore-this: b0d5b458e65f7fada300aae7280e8932
]
[move with-class-definer-options
attila.lendvai at gmail.com**20091029180015
Ignore-this: 2874fc2b0a64b7b54263e01f828a6ef2
]
[export function-like-definer-declarations
attila.lendvai at gmail.com**20091028195754
Ignore-this: 760e679d6634d703819b8d1274852d
]
[Fix docu.
levente.meszaros at gmail.com**20091020163317
Ignore-this: ed0a508a5ab233596ff26e18fe50c7f2
]
[Follow hu.dwim.common-lisp renaming.
levente.meszaros at gmail.com**20091020140926
Ignore-this: db4896750e165d598d468e6f1bbe1109
]
[Documentation.
levente.meszaros at gmail.com**20091020123304
Ignore-this: 3f4b7f21e6667dcd854eb7ef268c3911
]
[Moved logger integration into logger.
levente.meszaros at gmail.com**20091009161426
Ignore-this: e691d5379b8a841c55f8c2c4e3900c7f
]
[added a with-macro test that tests the proper (-body- arg1 arg2) arg order
attila.lendvai at gmail.com**20090929124624
Ignore-this: 6633c7830997afc10ad7a434e5dfe424
]
[follow some changes in some tests
attila.lendvai at gmail.com**20090929124605
Ignore-this: 44f7ea5c8d4c66da277f8e351ef0bc6c
]
[fix with-macro: then using (-body- some local args) the order got reversed by some changes
attila.lendvai at gmail.com**20090929004017
Ignore-this: 2368d08fbb73e79e75f3a7fe8b0f1489
]
[Use equal as a test function in def constant by default.
levente.meszaros at gmail.com**20090924120741
Ignore-this: b28c43f55dad597f7eec65d35bc980d1
]
[Eliminate usused duplicates.
levente.meszaros at gmail.com**20090922125702
Ignore-this: 6c12d56e6c562a89e37e3cfdd7e7bc8b
]
[Get rid of aif, awhen, aprog1 we're using anaphora.
levente.meszaros at gmail.com**20090922124917
Ignore-this: 78fc3db26a748941e5feec6deb419816
]
[Bettern namespace definer.
levente.meszaros at gmail.com**20090917140251
Ignore-this: ad992ce7eeed63abf2e81741be417984
]
[In package hu.dwim.asdf
levente.meszaros at gmail.com**20090908101529
Ignore-this: 7f7f7117ce6e95efc97679e2c51ab8b9
]
[Added namespace definer.
levente.meszaros at gmail.com**20090826091023
Ignore-this: a862abf5075d40cf68954f50c78df1c8
]
[Tell swank about the readtable.
levente.meszaros at gmail.com**20090826091008
Ignore-this: 2880585bdac827d090f562955c3e5e3
]
[Refactor for dwim.hu
levente.meszaros at gmail.com**20090814155554
Ignore-this: 77d7142cb4f590bc2a94457108339b4b
]
[More liberal handling of literal AST nodes for qq in with-macros.
levente.meszaros at gmail.com**20090617181412
Ignore-this: 43e0583601bda91b130e2ad4c3793d5c
]
[Some more stefil integration.
levente.meszaros at gmail.com**20090617181400
Ignore-this: 79c30583a1db505fd46bb84563c09028
]
[Added cl-yalog integration.
levente.meszaros at gmail.com**20090617181345
Ignore-this: 19bce08db868adf61270de1dc7e52058
]
[Version 1.0.
levente.meszaros at gmail.com**20090617181307
Ignore-this: 595ffee31519f3eff463e0fd2e59cb14
]
[fix with-macro definer regression
attila.lendvai at gmail.com**20090226100840
Ignore-this: 94b19ed5b642b53af6b801474a70e5a2
]
[fix with-macro definer when passing values from the with-macro body to the user body
attila.lendvai at gmail.com**20090225172819
Ignore-this: cdf04043daef0c58819277333cf3b5ad
]
[in debug mode declaim notinline
attila.lendvai at gmail.com**20090225172805
Ignore-this: b592f3ee56d1059e4b78a877682c0c0c
]
[clearer error message for missing definers
attila.lendvai at gmail.com**20090130094101
Ignore-this: 24f72dda038f41765cdad00ee3b14106
]
[with-macro supports the "d" flag
attila.lendvai at gmail.com**20090117145910
Ignore-this: fc11051ee7ce406f0a1a8ed484c37311
]
[do the exporting in an eval-when
attila.lendvai at gmail.com**20090117145843
Ignore-this: 9efdcef6fa27e6ee81d74453351d3062
]
[be more tolerant to missing (-body-) in with-macro (cl-qq bodies may contain CLOS AST instances where it cannot descent)
attila.lendvai at gmail.com**20081214202116
Ignore-this: 95aa0f678f97ca08f68031a2c45520f1
]
[&rest support for with-macro
attila.lendvai at gmail.com**20081207153004
Ignore-this: afa27dcecc39d8e725b2eb364ba586ec
]
[test for &rest support of with-macro
attila.lendvai at gmail.com**20081207142100
Ignore-this: 5f7b92c1e83a786eb9612736c6b3c724
]
[with-macro: now supports (-body- (macro-body-variable-name fn-lexical-variable-name)) format. see tests for details in the following patch
attila.lendvai at gmail.com**20081207120639
Ignore-this: e1c110ea14a2eaee0885f0b5dd4ccb6c
]
[with-macro tests
attila.lendvai at gmail.com**20081207120617
Ignore-this: 56219f40bc8f8cd983b24c41ef6769f5
]
[TAG 2008-11-27
attila.lendvai at gmail.com**20081127150329
Ignore-this: 324fbf5b086987945987709499158ae3
]
Patch bundle hash:
3751cc274d38c1a085bbb85e8d0f9537d8d5c586
-------------- next part --------------
Wed Nov 4 16:49:15 MSK 2009 Alexander Gavrilov <angavrilov at gmail.com>
* Reduce dependencies by using a simpler version of util.
Wed Nov 4 16:51:27 MSK 2009 Alexander Gavrilov <angavrilov at gmail.com>
* Relax some of the lexenv test conditions.
- The order of some of the names is not important
and changes between implementations.
- ECL adds gensym-named blocks around the code.
Wed Nov 4 17:15:46 MSK 2009 Alexander Gavrilov <angavrilov at gmail.com>
* Reimplement support for OpenMCL aka Clozure CL.
The environment there does not contain information
about tags and blocks, so the relevant operations are
stubs. Also, during compilation special variable
proclamations are stored in a special definition
context, so special-variable-name? needs a lexenv
to be fully correct.
Wed Nov 4 17:21:24 MSK 2009 Alexander Gavrilov <angavrilov at gmail.com>
* Add support for ECL.
This implementation does not support the read-only
flag parameter of load-time-value.
New patches:
[Reduce dependencies by using a simpler version of util.
Alexander Gavrilov <angavrilov at gmail.com>**20091104134915
Ignore-this: 7404ba3233f8433067167d501db5eb2f
] hunk ./hu.dwim.walker.asd 23
:closer-mop
:hu.dwim.common-lisp
:hu.dwim.def+contextl
- :hu.dwim.defclass-star
- :hu.dwim.util
+ :hu.dwim.defclass-star+hu.dwim.def
+ :hu.dwim.util-base
:metabang-bind)
:components ((:file "package" :pathname "source/package")
(:module "integration"
[Relax some of the lexenv test conditions.
Alexander Gavrilov <angavrilov at gmail.com>**20091104135127
Ignore-this: ec59f362290b3a38bec8ef863ad0a2d3
- The order of some of the names is not important
and changes between implementations.
- ECL adds gensym-named blocks around the code.
] {
hunk ./test/lexenv.lisp 11
(defsuite* (test/lexenv :in test))
+(defun equal-any (item &rest args)
+ (some (lambda (a) (equal item a)) args))
+
;; TODO would be better to use macroexpand-all for this, because stefil's errors get to compile
;; which aborts at the first failure and skips the other assertions
(defun compile* (form)
hunk ./test/lexenv.lisp 103
(z 3))
(declare (ignore z))
(macrolet ((dummy (&environment env)
- (is (equal '(dummy m1 m2)
- (collect-macros-in-lexenv env)))
+ (is (equal-any (collect-macros-in-lexenv env)
+ '(dummy m1 m2) '(dummy m2 m1)))
(bind ((macros 0))
(do-macros-in-lexenv (env name fn)
(is (and (symbolp name)
hunk ./test/lexenv.lisp 132
(z 3))
(declare (ignore z))
(macrolet ((dummy (&environment env)
- (is (equal '(a b)
- (collect-symbol-macros-in-lexenv env)))
+ (is (equal-any (collect-symbol-macros-in-lexenv env)
+ '(a b) '(b a)))
(bind ((symbol-macros 0))
(do-symbol-macros-in-lexenv (env name definition)
(is (and (symbolp name)
hunk ./test/lexenv.lisp 160
(declare (ignore z))
(macrolet ((dummy (&environment env)
(is (equal '(b2 b1)
- (collect-blocks-in-lexenv env)))
+ (remove-if-not #'symbol-package
+ (collect-blocks-in-lexenv env))))
(bind ((blocks 0))
(do-blocks-in-lexenv (env name)
hunk ./test/lexenv.lisp 164
- (is (and (symbolp name)
- (eq (symbol-package name) ,*package*)))
- (incf blocks))
+ (when (symbol-package name)
+ (is (and (symbolp name)
+ (eq (symbol-package name) ,*package*)))
+ (incf blocks)))
(is (= blocks 2)))
(is (find-block-in-lexenv 'b1 env))
(is (not (find-block-in-lexenv 'dummy env)))
hunk ./test/lexenv.lisp 189
t22
(block b2
(macrolet ((dummy (&environment env)
- (is (equal '(t21 t22 t1 t2)
- (collect-tags-in-lexenv env)))
+ (is (equal-any (collect-tags-in-lexenv env)
+ '(t21 t22 t1 t2) '(t22 t21 t2 t1)))
(bind ((tags 0))
(do-tags-in-lexenv (env name)
(is (and (symbolp name)
}
[Reimplement support for OpenMCL aka Clozure CL.
Alexander Gavrilov <angavrilov at gmail.com>**20091104141546
Ignore-this: 5cd52ba31db5635e3297c7a38208bc9
The environment there does not contain information
about tags and blocks, so the relevant operations are
stubs. Also, during compilation special variable
proclamations are stored in a special definition
context, so special-variable-name? needs a lexenv
to be fully correct.
] {
hunk ./integration/openmcl.lisp 9
(in-package :hu.dwim.walker)
-#|
+;;;
+;;; Clozure CL
+;;;
hunk ./integration/openmcl.lisp 13
-TODO provide the new api based on this old code. see lexenv-sbcl.lisp for an example.
+(defun make-empty-lexical-environment ()
+ (ccl::new-lexical-environment))
hunk ./integration/openmcl.lisp 16
-(defmethod lexical-variables ((environment ccl::lexical-environment))
- (loop
- for env = environment
- then (ccl::lexenv.parent-env env)
- while (and env
- (not (ccl::istruct-typep env 'ccl::definition-environment)))
- for vars = (ccl::lexenv.variables env)
- when (listp vars)
- ;; we now weed out all symbol-macros and ignored variables
- append (remove-if (lambda (var-name)
- (let ((decs (assoc var-name (ccl::lexenv.vdecls env))))
- (and decs
- (eql 'cl:ignore (second decs))
- (eql 'cl:t (cddr decs)))))
- (mapcar (lambda (var)
- ;; ccl::var-name is a macro, se we can't do #'ccl::var-name directly
- (ccl::var-name var))
- (remove-if (lambda (var-spec)
- (and (ccl::var-ea var-spec)
- (consp (ccl::var-ea var-spec))
- (eql :symbol-macro (car (ccl::var-ea var-spec)))))
- vars)))))
+;;;
+;;; utilities
+;;;
+
+(defun ccl-defenv-p (env)
+ (ccl::istruct-typep env 'ccl::definition-environment))
+
+(defmacro do-ccl-env-chain ((env-var env-item &key with-defenv) &body code)
+ `(do ((,env-var ,env-item (ccl::lexenv.parent-env ,env-var)))
+ ((or (null ,env-var)
+ ,(if with-defenv
+ `(consp ,env-var)
+ `(ccl-defenv-p ,env-var))))
+ , at code))
hunk ./integration/openmcl.lisp 31
-(defmethod lexical-functions ((environment ccl::lexical-environment))
+(defun ccl-get-var-decls (var-name env)
(loop
hunk ./integration/openmcl.lisp 33
- for env = environment
- then (ccl::lexenv.parent-env env)
- while (and env
- (not (ccl::istruct-typep env 'ccl::definition-environment)))
- for funs = (ccl::lexenv.functions env)
- when (listp funs)
- ;; we now weed out all symbol-macros and ignored variables
- append (mapcar (lambda (func-spec)
- ;; convert the function name to a "real" function name
- (let ((name (first func-spec)))
- (if (eql (symbol-package (first func-spec))
- (find-package :SETF))
- (list 'cl:setf (read-from-string (symbol-name name)))
- name)))
- (remove-if (lambda (func-spec)
- ;; weed out all the macrolets
- (eql 'ccl::macro (second func-spec)))
- funs))))
-|#
+ for dec in (ccl::lexenv.vdecls env)
+ when (eq (car dec) var-name)
+ collect (cdr dec)))
+
+(defun ccl-get-env-vars (env)
+ ;; The variable list field may contain a special
+ ;; barrier sentinel. Ignore it.
+ (let ((lst (ccl::lexenv.variables env)))
+ (if (listp lst) lst)))
+
+(defun ccl-proclaimed-special-p (name &optional lexenv)
+ ;; During compilation the special proclamations are
+ ;; collected in the definition environment.
+ (let* ((defenv (ccl::definition-environment lexenv))
+ (specials (if defenv (ccl::defenv.specials defenv))))
+ (or (ccl::assq name specials)
+ (ccl:proclaimed-special-p name))))
+
+(defun ccl-defined-const-p (name &optional lexenv)
+ (let* ((defenv (ccl::definition-environment lexenv))
+ (consts (if defenv (ccl::defenv.constants defenv))))
+ (ccl::assq name consts)))
+
+(defun ccl-ignored-decl-p (decls)
+ (cdr (ccl::assq 'ignore decls)))
+
+(defun ccl-special-decl-p (decls)
+ (cdr (ccl::assq 'special decls)))
+
+(defun ccl-symbol-macro-p (var-spec)
+ (let ((exp (ccl::var-expansion var-spec)))
+ (and (consp exp)
+ (eql :symbol-macro (car exp)))))
+
+;;;
+;;; iteration
+;;;
+
+(defun iterate-variables-in-lexenv (visitor lexenv
+ &key include-ignored? include-specials?
+ &aux hide-list)
+ (do-ccl-env-chain (env lexenv)
+ ;; Local functions spawn temporaries; hide them
+ (dolist (func-spec (ccl::lexenv.functions env))
+ (when (eql 'ccl::function (cadr func-spec))
+ (push (cdddr func-spec) hide-list)))
+ ;; Enumerate vars
+ (dolist (var-spec (ccl-get-env-vars env))
+ (let* ((name (ccl::var-name var-spec))
+ (var-decls (ccl-get-var-decls name env))
+ (macro? (ccl-symbol-macro-p var-spec))
+ (ignored? (ccl-ignored-decl-p var-decls))
+ (special? (ccl-special-decl-p var-decls)))
+ (when (and (not macro?)
+ (or (not ignored?)
+ include-ignored?)
+ (or (not special?)
+ include-specials?)
+ (not (member name hide-list)))
+ (funcall visitor name :ignored? ignored? :special? special?))))))
+
+(defun iterate-symbol-macros-in-lexenv (visitor lexenv)
+ (do-ccl-env-chain (env lexenv :with-defenv t)
+ (if (ccl-defenv-p env)
+ (dolist (cell (ccl::defenv.symbol-macros env))
+ (funcall visitor (car cell) (cdr cell)))
+ (dolist (var-spec (ccl-get-env-vars env))
+ (let* ((name (ccl::var-name var-spec))
+ (macro? (ccl-symbol-macro-p var-spec)))
+ (when macro?
+ (funcall visitor name
+ (cdr (ccl::var-expansion var-spec)))))))))
+
+(defun iterate-functions-in-lexenv (visitor lexenv)
+ (do-ccl-env-chain (env lexenv)
+ (dolist (func-spec (ccl::lexenv.functions env))
+ (let* ((name (ccl::maybe-setf-name (first func-spec)))
+ (function? (eql 'ccl::function (second func-spec))))
+ (when function?
+ (funcall visitor name))))))
+
+(defun iterate-macros-in-lexenv (visitor lexenv)
+ (do-ccl-env-chain (env lexenv :with-defenv t)
+ ;; lexenv.functions can operate on a defenv
+ (dolist (func-spec (ccl::lexenv.functions env))
+ (let* ((name (first func-spec))
+ (macro? (eql 'ccl::macro (second func-spec))))
+ (when macro?
+ (assert (functionp (cddr func-spec)))
+ (funcall visitor name (cddr func-spec)))))))
+
+(defun iterate-blocks-in-lexenv (visitor lexenv)
+ (declare (ignore visitor lexenv))
+ (cerror "ignore and do nothing"
+ "The lexical environment does not contain blocks in Clozure CL"))
+
+(defun iterate-tags-in-lexenv (visitor lexenv)
+ (declare (ignore visitor lexenv))
+ (cerror "ignore and do nothing"
+ "The lexical environment does not contain tags in Clozure CL"))
+
+;;;
+;;; augmentation
+;;;
+
+(defun augment-lexenv-with-variable (name lexenv &key special ignored)
+ (let* ((decls (if special `(special ,name)))
+ (env (ccl:augment-environment lexenv :variable (list name) :declare decls)))
+ ;; augment-environment does not understand ignore decls
+ (when ignored
+ (push (list* name 'ignore t) (ccl::lexenv.vdecls env)))
+ env))
+
+(defun augment-lexenv-with-function (name lexenv)
+ (ccl:augment-environment lexenv :function (list name)))
+
+(defun augment-lexenv-with-macro (name def lexenv)
+ (ccl:augment-environment lexenv :macro (list (list name def))))
+
+(defun augment-lexenv-with-symbol-macro (name def lexenv)
+ (ccl:augment-environment lexenv :symbol-macro (list (list name def))))
+
+(defun augment-lexenv-with-block (name lexenv)
+ (declare (ignore name))
+ ;; Do nothing
+ lexenv)
+
+(defun augment-lexenv-with-tag (name lexenv)
+ (declare (ignore name))
+ ;; Do nothing
+ lexenv)
+
hunk ./source/handler.lisp 77
(recurse (walker-macroexpand-1 -form- lexenv)))
;; FIXME special variable handling is most probably not good as it is:
;; check proper behavior regarding the lexenv nesting and the parent walking below for (DECLARE (SPECIAL ...)) entries
- ((or (special-variable-name? -form-)
+ ((or (special-variable-name? -form- lexenv)
(loop
:for node = -parent- :then (parent-of node)
:while node
hunk ./source/handler.lisp 231
(loop
:for binding :in (bindings-of let)
:for name = (name-of binding)
- :do (when (and (not (special-variable-name? name))
+ :for lexenv = (env/lexical-environment -environment-)
+ :do (when (and (not (special-variable-name? name lexenv))
(not (find-if (lambda (declaration)
(and (typep declaration 'special-variable-declaration-form)
(eq name (name-of declaration))))
hunk ./source/handler.lisp 264
(setf (bindings-of let*-form)
(loop
:for entry :in (second -form-)
+ :for lexenv = (env/lexical-environment -environment-)
:collect (bind (((name &optional initial-value) (ensure-list entry)))
(with-form-object (binding 'lexical-variable-binding-form let*-form :name name)
(setf (initial-value-of binding) (recurse initial-value binding))
hunk ./source/handler.lisp 268
- (when (and (not (special-variable-name? name))
+ (when (and (not (special-variable-name? name lexenv))
(not (find-if (lambda (declaration)
(and (typep declaration 'special-variable-declaration-form)
(eq name (name-of declaration))))
hunk ./source/infrastructure.lisp 61
(bind (#+sbcl(sb-ext:*evaluator-mode* :interpret))
(common-lisp:eval form)))
-(def function special-variable-name? (name)
+(def function special-variable-name? (name &optional lexenv)
+ (declare (ignorable lexenv))
(and (symbolp name)
(not (keywordp name))
(not (member name '(t nil) :test #'eq))
hunk ./source/infrastructure.lisp 69
(or (boundp name)
#+sbcl(eq (sb-int:info :variable :kind name) :special)
#+lispworks(eq (common-lisp::variable-information name) :special)
+ #+openmcl (or (ccl-proclaimed-special-p name lexenv)
+ (ccl-defined-const-p name lexenv))
;; This is the only portable way to check if a symbol is
;; declared special, without being boundp, i.e. (defvar 'foo).
;; Maybe we should make it optional with a compile-time flag?
hunk ./test/lexenv.lisp 148
nil))
(dummy))))))))
+#-openmcl
(deftest test/lexenv/query/blocks ()
(compile*
`(block b1
hunk ./test/lexenv.lisp 177
nil))
(dummy))))))))
+#-openmcl
(deftest test/lexenv/query/tags ()
(compile*
`(block b1
}
[Add support for ECL.
Alexander Gavrilov <angavrilov at gmail.com>**20091104142124
Ignore-this: aa0be664c72e4dacbcf932403e57c594
This implementation does not support the read-only
flag parameter of load-time-value.
] {
addfile ./integration/ecl.lisp
hunk ./hu.dwim.walker.asd 34
#+cmu(:file "cmucl")
#+lispworks(:file "lispworks")
#+openmcl(:file "openmcl")
+ #+ecl(:file "ecl")
#+sbcl(:file "sbcl")))
(:module "source"
:depends-on ("integration")
hunk ./integration/ecl.lisp 1
+;;; -*- mode: Lisp; Syntax: Common-Lisp; -*-
+;;;
+;;; Copyright (c) 2008 by the authors.
+;;;
+;;; See LICENSE for details.
+
+(in-package :hu.dwim.walker)
+
+;;;
+;;; ECL
+;;;
+
+(defun make-empty-lexical-environment ()
+ (c::cmp-env-new))
+
+;;;
+;;; utilities
+;;;
+
+(defun ecl-variable-spec-p (spec)
+ (and (listp spec)
+ (member (second spec) '(:special t))))
+
+(defun ecl-symbol-macro-spec-p (spec)
+ (and (listp spec)
+ (eql (second spec) 'si::symbol-macro)))
+
+(defun ecl-macro-spec-p (spec)
+ (and (listp spec)
+ (eql (second spec) 'si::macro)))
+
+(defun ecl-function-spec-p (spec)
+ (and (listp spec)
+ (eql (second spec) 'c::function)))
+
+(defun ecl-block-spec-p (spec)
+ (and (listp spec)
+ (eql (first spec) :block)))
+
+(defun ecl-tag-spec-p (spec)
+ (and (listp spec)
+ (eql (first spec) :tag)))
+
+(defun ecl-special-var-p (spec)
+ (eql (second spec) :special))
+
+(defun ecl-ignored-var-p (spec)
+ (< (c::var-ref (fourth spec)) 0))
+
+;;;
+;;; iteration
+;;;
+
+(defun iterate-variables-in-lexenv (visitor lexenv
+ &key include-ignored? include-specials?)
+ (dolist (spec (c::cmp-env-variables lexenv))
+ (when (ecl-variable-spec-p spec)
+ (let* ((name (first spec))
+ (special? (ecl-special-var-p spec))
+ (ignored? (ecl-ignored-var-p spec)))
+ (when (and (or (not special?)
+ include-specials?)
+ (or (not ignored?)
+ include-ignored?))
+ (funcall visitor name :ignored? ignored? :special? special?))))))
+
+(defun iterate-symbol-macros-in-lexenv (visitor lexenv)
+ (dolist (spec (c::cmp-env-variables lexenv))
+ (when (ecl-symbol-macro-spec-p spec)
+ (funcall visitor (first spec) (funcall (third spec) nil nil)))))
+
+(defun iterate-functions-in-lexenv (visitor lexenv)
+ (dolist (spec (c::cmp-env-functions lexenv))
+ (when (ecl-function-spec-p spec)
+ (funcall visitor (first spec)))))
+
+(defun iterate-macros-in-lexenv (visitor lexenv)
+ (dolist (spec (c::cmp-env-functions lexenv))
+ (when (ecl-macro-spec-p spec)
+ (assert (functionp (third spec)))
+ (funcall visitor (first spec) (third spec)))))
+
+(defun iterate-blocks-in-lexenv (visitor lexenv)
+ (dolist (spec (c::cmp-env-variables lexenv))
+ (when (ecl-block-spec-p spec)
+ (funcall visitor (second spec)))))
+
+(defun iterate-tags-in-lexenv (visitor lexenv)
+ (dolist (spec (c::cmp-env-variables lexenv))
+ (when (ecl-tag-spec-p spec)
+ (dolist (name (second spec))
+ (funcall visitor name)))))
+
+;;;
+;;; augmentation
+;;;
+
+(defun augment-lexenv-with-variable (name lexenv &key special ignored)
+ (let* ((env (c::cmp-env-copy lexenv))
+ (var (if special
+ (c::c1make-global-variable name :warn nil :kind 'c::special)
+ (c::%make-var :name name :kind 'c::lexical
+ :ref (if ignored -1 0)))))
+ ;; cmp-env-register-var has a bug and would
+ ;; update the wrong environment
+ (push (list (c::var-name var)
+ (if special :special t)
+ t var)
+ (c::cmp-env-variables env))
+ env))
+
+(defun augment-lexenv-with-function (name lexenv)
+ (let* ((env (c::cmp-env-copy lexenv))
+ (fun (c::make-fun :name name)))
+ (c::cmp-env-register-function fun env)
+ env))
+
+(defun augment-lexenv-with-macro (name def lexenv)
+ (let* ((env (c::cmp-env-copy lexenv)))
+ (c::cmp-env-register-macro name def env)
+ env))
+
+(defun augment-lexenv-with-symbol-macro (name def lexenv)
+ (let* ((env (c::cmp-env-copy lexenv)))
+ (c::cmp-env-register-symbol-macro name def env)
+ env))
+
+(defun augment-lexenv-with-block (name lexenv)
+ (let* ((env (c::cmp-env-copy lexenv)))
+ (c::cmp-env-register-block (c::make-blk :name name))
+ env))
+
+(defun augment-lexenv-with-tag (name lexenv)
+ (let* ((env (c::cmp-env-copy lexenv)))
+ (c::cmp-env-register-tag (c::make-tag :name name))
+ env))
+
hunk ./source/handler.lisp 559
nil))))
(def unwalker load-time-value-form (body read-only)
- `(load-time-value ,(recurse body) ,read-only))
+ `(load-time-value ,(recurse body) ,@(if read-only '(t))))
hunk ./source/infrastructure.lisp 71
#+lispworks(eq (common-lisp::variable-information name) :special)
#+openmcl (or (ccl-proclaimed-special-p name lexenv)
(ccl-defined-const-p name lexenv))
+ #+ecl (sys:specialp name)
;; This is the only portable way to check if a symbol is
;; declared special, without being boundp, i.e. (defvar 'foo).
;; Maybe we should make it optional with a compile-time flag?
hunk ./test/walk-unwalk.lisp 207
(let* ((a b) (b a)) (equal a b)))
(define-walk-unwalk-test test/walk-unwalk/load-time-value
- (load-time-value *load-pathname* nil))
+ (load-time-value *load-pathname* #-ecl t))
(define-walk-unwalk-test test/walk-unwalk/locally
(locally (setq *global* (whoops))))
}
Context:
[doc
attila.lendvai at gmail.com**20091102104931
Ignore-this: 5598c43a8c733b4d62b12fe6ee683ed1
]
[readme
attila.lendvai at gmail.com**20091102104916
Ignore-this: 5207aa11486a04f410844a77a99294a7
]
[housekeeping, plus some tests
attila.lendvai at gmail.com**20091031022142
Ignore-this: f9963ef516739e19c3206be99ddcf0a9
]
[don't store the macro expander lambda's, so that the walked form remains fasl savable
attila.lendvai at gmail.com**20091031021923
Ignore-this: d38a60fd37a52746b055a88fb32b32ab
]
[fix lambda list parsing, augment the walkenv in parallel with walking
attila.lendvai at gmail.com**20091031021824
Ignore-this: b95ab70a4d35ce897f2800de70fa2d55
]
[tests
attila.lendvai at gmail.com**20091030190650
Ignore-this: 3ae45a5b32e50c47f355dcd058605e8b
]
[fix: :in ignore-undefined-references should be in an :around method, because layers are the least important in the dispatch
attila.lendvai at gmail.com**20091030190604
Ignore-this: 45cf2777b02d06543c350300c93bcc05
]
[fix: lambda list walking did not update the env (thinko in recent refactorings)
attila.lendvai at gmail.com**20091030190528
Ignore-this: 6a927a7bc776ea4035c354763563e48b
]
[tests
attila.lendvai at gmail.com**20091030135348
Ignore-this: 6bab04690f3c6323058530245d4ad563
]
[fix in walk-implict-progn
attila.lendvai at gmail.com**20091030130333
Ignore-this: 8b416e88b644e95b35b32b88ca261a62
]
[fix eval-when walking: declarations are not allowed there
attila.lendvai at gmail.com**20091030124532
Ignore-this: 47cef19ab50a8bd60a1348d11f8e6d14
]
[smarter let/let* walking, introduced lexical-variable-binding-form and lexical-variable-binder-form
attila.lendvai at gmail.com**20091030124403
Ignore-this: f100acb10ed293c9d0a63a09f69bb917
]
[housekeeping
attila.lendvai at gmail.com**20091030112516
Ignore-this: b974817ecc8b64bafc5c87b70488fbde
]
[renamed to lexical-variable-bindings-form
attila.lendvai at gmail.com**20091030112453
Ignore-this: 4bf2ef25ef69d6ec2c5da3a9ce050296
]
[no need for :dummy in the walkenv anymore
attila.lendvai at gmail.com**20091030110033
Ignore-this: 88d13836c61de6ce8345e6895fe02b1d
]
[some flet tests
attila.lendvai at gmail.com**20091029160036
Ignore-this: 9166b3c7d0af6801b521543abf268f4d
]
[clean up flet/labels code
attila.lendvai at gmail.com**20091029155935
Ignore-this: 438c8c4343a09efa0b0d48694ed04745
]
[rename code slot of lexical-application-form to definition to follow convention
attila.lendvai at gmail.com**20091029155914
Ignore-this: 44cd295c9fedf6b1ccc8ec6b095c1c0
]
[fix a bug that cleared the walkenv
attila.lendvai at gmail.com**20091029144230
Ignore-this: 7082009ac5ad5439b04dd72ad6d56ba7
]
[clean up walkenv naming, use a typed struct for walk-environmnet instead of a cons
attila.lendvai at gmail.com**20091029144010
Ignore-this: 230bc7a52eda708879b839a31a2681a0
]
[added some tests
attila.lendvai at gmail.com**20091028204112
Ignore-this: 18f3b73ed19165620ec93d38e958f07e
]
[fix: declarations are allowed in flet bodies
attila.lendvai at gmail.com**20091028203955
Ignore-this: 853cfeda0462de156186215bda9744ff
]
[definition slot for walked-lexical-function-object-form pointing to the walked lambda in the flet
attila.lendvai at gmail.com**20091028202150
Ignore-this: 6fd71f912a0b86bd9cb739e0dbd00279
]
[housekeeping
attila.lendvai at gmail.com**20091028195140
Ignore-this: 4840658ae38297e362a3ab90fc30f9aa
]
[a bit of factoring on function arguments
attila.lendvai at gmail.com**20091028195018
Ignore-this: 14902eb6c3b86d887e6b0f14937c5505
]
[housekeeping
attila.lendvai at gmail.com**20091026153641
Ignore-this: f144c172a8381edff02858c5a5d1a4f1
]
[some renames
attila.lendvai at gmail.com**20091026153552
Ignore-this: 93f06b116ce1eff8ebe452e6fbc3887d
]
[renamed to implicit-progn-with-declarations-mixin
attila.lendvai at gmail.com**20091026151254
Ignore-this: a482e1361b41c3f2f34b1f3fb51ceb95
]
[drop split-body
attila.lendvai at gmail.com**20091026150844
Ignore-this: 799721cb4003ef6df1352bec4e53d439
]
[clean up lambda walking, fix defun docstring bug
attila.lendvai at gmail.com**20091026143148
Ignore-this: d5cfb9b0ec57235d7bb8d786c8c55a10
]
[fix &aux walking
attila.lendvai at gmail.com**20091026101726
Ignore-this: 4a8349a76aec0312e2e08a9b543c7ee6
]
[point out that the lambda parsing in dubplicates.lisp should be dropped
attila.lendvai at gmail.com**20091026101649
Ignore-this: 282236eaf73e96b54f7032775df105b1
]
[follow grand-refactor in tests
attila.lendvai at gmail.com**20091022174346
Ignore-this: dfaf13525db5aa95ed2111e2ce9eabee
]
[grand refactor: bring in bind, def and contextl
attila.lendvai at gmail.com**20091022174248
Ignore-this: a1e9aa9fdec19d1f223e8e85ffd0d141
]
[TAG Before ContextL refactor
attila.lendvai at gmail.com**20091016115207
Ignore-this: ef2b8b67be8887fa820635144915e541
]
[Follow hu.dwim.common split
levente.meszaros at gmail.com**20091020163518
Ignore-this: 4f52830db0877ed30bd0a1e28f306dd7
]
[Fix docu
levente.meszaros at gmail.com**20091020163427
Ignore-this: 5872b2a17244e5ecb3de1f44cb6fcb96
]
[Follow hu.dwim.common-lisp renaming.
levente.meszaros at gmail.com**20091020141013
Ignore-this: 7cedbb0bd5b69709fbafef6c4699c3
]
[asd: record a dependency
attila.lendvai at gmail.com**20091016114010
Ignore-this: 92034585d84064f4c975ecba4b722814
]
[Documentation.
levente.meszaros at gmail.com**20091020123312
Ignore-this: 152972bd74c48a5447ef20eab03fee55
]
[Fix optional parameter handing when supplied-p-parameter is there.
levente.meszaros at gmail.com**20091013212023
Ignore-this: 2c81a00d280986822ab44bf965c71d7c
]
[Add failed test.
levente.meszaros at gmail.com**20091013210323
Ignore-this: c1fece1cca52612250b6b9ef3e81a460
]
[Record failed test for defun.
levente.meszaros at gmail.com**20091013193155
Ignore-this: a4d09bb1c7c3f9c6bbffaa8db4e14efb
]
[Fix asdf dependency.
levente.meszaros at gmail.com**20090928205824
Ignore-this: 6bbdadb3a080f6199be1b1ce943c46dc
]
[fix: bug with clashing declare/lexical variable lookup
attila.lendvai at gmail.com**20091001194500
Ignore-this: bb8acbc5bce1d086d97e730b69f6f336
]
[extend lookup so that the type filter can be a list of types
attila.lendvai at gmail.com**20091001192215
Ignore-this: 7e9e0c338e76bc9d62fca69aaf4d5d9f
]
[added failing test
attila.lendvai at gmail.com**20090930204914
Ignore-this: 1b0300c4c8195d7caa2aa4dec8bd6ff0
]
[record failing &aux test, thanks to Stanislaw Halik
attila.lendvai at gmail.com**20090928195337
Ignore-this: a97f3b9816928d1ea89572aab2e63fcb
]
[Eliminate some duplicates.
levente.meszaros at gmail.com**20090922131452
Ignore-this: 4ca9d180faf8cb533d08257b322b50a7
]
[Get rid of aif, awhen, aprog1 we're using anaphora.
levente.meszaros at gmail.com**20090922125016
Ignore-this: 2e5128c64f997bbf680abd6aa4ce3d59
]
[fix labels and flet walking and unwalking when the body is empty
attila.lendvai at gmail.com**20090914160244
Ignore-this: 5dd4c3f95f152ce14dfc414e822893fe
]
[fix: load-time-value's body didn't have its parent slot properly set up
attila.lendvai at gmail.com**20090914155652
Ignore-this: fef4137677b25f6d6f042111813a7754
]
[fix test/walk-unwalk/macrolet-over-flet (or some of those)
attila.lendvai at gmail.com**20090914154705
Ignore-this: a6287c53282394be4a1ec42d8036acbc
based on the fix by Nikolaus Demmel sent to bese-devel at 2009-aug-10.
]
[tests
attila.lendvai at gmail.com**20090914152612
Ignore-this: 61de8afe7a20034412f3e77ce09b49cd
]
[lookup-in-walkenv can be called with NIL as type to look up the innermost definition with the given name
attila.lendvai at gmail.com**20090914152241
Ignore-this: 7f1b02e6f8faa43d8dbd83c1742fd264
]
[a walk-unwalk test
attila.lendvai at gmail.com**20090912235252
Ignore-this: 5fab232e5954e1d27f5806ece149f39
]
[Generalize form concept in walker to support reader+walker integration.
levente.meszaros at gmail.com**20090908102306
Ignore-this: 1ed98665b699855d06dd6e59e79aca62
]
[File header comment.
levente.meszaros at gmail.com**20090908102154
Ignore-this: 4dfe9efaa2576086705e2649584b7037
]
[In package hu.dwim.asdf
levente.meszaros at gmail.com**20090908102019
Ignore-this: e80bc46495c78afb3b7e5a7a5f079322
]
[Refactor for dwim.hu.
levente.meszaros at gmail.com**20090813152126
Ignore-this: f616f3e832f660601361811a38466c66
]
[bah, unsaved file
attila.lendvai at gmail.com**20090717181436
Ignore-this: 1f6d0a8683f9cf2a14de61b036367249
]
[fix something with a kludge, comment added
attila.lendvai at gmail.com**20090717175903
Ignore-this: 79465fd00b92593aacc11d40a026e902
]
[some print-object stuff
attila.lendvai at gmail.com**20090717174753
Ignore-this: cd4fce7d684d8c72b3e797c3ecb16c43
]
[fix (unwalk-form (walk-form :foo)) being walked into a constant-form
attila.lendvai at gmail.com**20090717173602
Ignore-this: a53e9c438fbef049d43885f2995afe0a
]
[record some failing tests
attila.lendvai at gmail.com**20090717173548
Ignore-this: 9ab7f217a29d59bbfa11bae92955a0ba
]
[added function-definition-form (it's a bit kludgy in that it most probably needs a generic solution)
attila.lendvai at gmail.com**20090713154654
Ignore-this: 97d380256eee5afd3cb5bf0b3107ff72
]
[housekeeping
attila.lendvai at gmail.com**20090625164517
Ignore-this: 427b139cfaf9408705db39f2dd398b9b
]
[Better printing.
levente.meszaros at gmail.com**20090717172503
Ignore-this: ed5cbfc353fea006927c7c869315e371
]
[Version
levente.meszaros at gmail.com**20090717172455
Ignore-this: fd4deeaf5a222d109ce14c3265190c5f
]
[hack in another customizable hook for cl-quasi-quote/js: walk-lambda-like (also add a comment about the code quality)
attila.lendvai at gmail.com**20090404214814
Ignore-this: e8669923337421c84a4dc4baaf8dfefb
]
[fix let walking (with zero bindings?)
attila.lendvai at gmail.com**20090404202542
Ignore-this: b3e8358c65bce83e06aeff320bef1350
]
[fix special-variable-name? for :foo wrongly returning T
attila.lendvai at gmail.com**20090404201340
Ignore-this: 75cd2f14bd694e62020917a69d6228f1
]
[only walk &key and &optional default values if it's actually provided
attila.lendvai at gmail.com**20090404201254
Ignore-this: c7094811ad25588832300e12b98e851d
]
[fix flet walking, make it less hostile to walker customizations
attila.lendvai at gmail.com**20090112004737
Ignore-this: fecc2acf329a35230880a7e2bb56461b
]
[renamed walk-ast to map-ast, visitor at first arg to follow the map-* conventions
attila.lendvai at gmail.com**20081230135718
Ignore-this: 34836b4cd9a5dced11583d5808df7e5a
]
[added failing test
attila.lendvai at gmail.com**20081214125815
Ignore-this: 2b4f1d4f5b02caf0af401a315d892d13
]
[TAG 2008-11-27
attila.lendvai at gmail.com**20081127150529
Ignore-this: bfdfabc47b4b3482a6bea05102942a04
]
Patch bundle hash:
72698296519ef25621493954ca9747f6d93eec0b
More information about the cl-walker-devel
mailing list