#421: Improve recording of source information for most kinds of definitions ------------------------------+-------------------------- Reporter: mevenson | Owner: Type: enhancement | Status: new Priority: major | Milestone: 1.5.0 Component: interpreter | Version: 1.5.0-dev Resolution: | Keywords: github-issue Parent Tickets: | ------------------------------+--------------------------
Comment (by mevenson):
@alanruttenberg: As I understand your intention after this patch is finished, we will have two properties on symbols with associated source: ||Symbol || Contents || ||SYSTEM::%SOURCE || (PATHNAME . SOURCE-LINE)|| ||SYSTEM::%SOURCE-BY-TYPE || ((KEYWORD-FOR-TYPE-OR-FUNCTION-INFO PATHNAME SOURCE-LINE) …)) ||
where KEYWORD-FOR-TYPE-OR-FUNCTION-INFO would be one of :CONDITION, :VARIABLE, :KEYWORD, :MACRO, :COMPILER-MACRO, :PACKAGE, :DEFSTRUCT, :SETF- EXPANDER, :CONSTANT, :SOURCE-TRANSFORM and for both functions and generic functions a list of the form (:FUNCTION name-of-function)
Once the code works well enough for SLIME, we would no longer need SYSTEM::%SOURCE (assuming that no one else consumes such symbol properties, which is a bit of a stretch, so I would go for an announced deprecation route for abcl-1.6.0 or something).
Shouldn't we take the opportunity to export and normalize the property list key we are using?
Instead of SYSTEM::%SOURCE-BY-TYPE let's move to SYSTEM:SOURCE, which will be the standard interface going forwards.
Uncomment code for arglist?
Why does your code comment out the call to SET-ARGLIST in the precompiler? Does this need additional work, or an oversight on your part?
Inconsistent KEYWORD-FOR-TYPE with DEFMETHOD
Why do functions need to record their names with a cons in place of a simple keyword (probably something basic than I am not getting)?
Shouldn't we distinguish between DEFUN, DEFMETHOD, and DEFGENERIC definitions for functions?
i.e. shouldn't we just replace the (:FUNCTION MOP:ADD-DIRECT-METHOD) with :GENERIC-FUNCTION?
(get 'mop:add-direct-method 'system::%source-by-type) (((:FUNCTION MOP:ADD-DIRECT-METHOD) "/Users/evenson/work/abcl.git/src/org/armedbear/lisp/clos.lisp" 100215))
If you agree on the symbol property key being 'SYSTEM:SOURCE', and can explain the bit about function source location using a cons to record its type, I'd go for merging this as a work in progress.
-- Ticket URL: http://abcl.org/trac/ticket/421#comment:1 armedbear http://abcl.org armedbear