Commit Graph

84 Commits

Author SHA1 Message Date
Abdulaziz Ghuloum f8b0e949d9 - syntax-case now raises a syntax violation when _ appears in the
literals
- syntax-rules points to the invalid literal when raising an
  exception.
2008-05-10 19:05:40 -04:00
Abdulaziz Ghuloum 5c21f9995e source annotations for r6rs-script and r6rs-libraries are now in
chars instead of bytes.
2008-05-06 15:38:05 -04:00
Abdulaziz Ghuloum b5fc5624ec Fixed a bug in enum-set-universe not returning an enum type. 2008-05-05 23:53:48 -04:00
Abdulaziz Ghuloum c3b8e50b23 Fixed a minor exposure of annotation records. 2008-05-03 06:49:36 -04:00
Abdulaziz Ghuloum 3f9b567a5b with-syntax now gives more informative error messages:
> (with-syntax ([(x y) #'(a 1)] [(q) #'(a b c)]) 12)
Unhandled exception
 Condition components:
   1. &assertion
   2. &who: with-syntax
   3. &message: "pattern does not match value"
   4. &irritants: ((q) #<syntax (a b c)>)

instead of the previous behavior:

> (with-syntax ([(x y) #'(a 1)] [(q) #'(a b c)]) 12)
Unhandled exception
 Condition components:
    1. &message: "invalid syntax"
    2. &syntax:
        form: ((a 1) (a b c))
        subform: #f
2008-05-03 06:23:35 -04:00
Abdulaziz Ghuloum 7e5d053fb2 Fixed a bug causing syntax-error traces to print as
#[annotation ---]
instead of
  #<syntax --- [position ---]>
2008-05-02 14:34:03 -04:00
Abdulaziz Ghuloum b56b0fbd85 fixed a problem causing free-id=? to intern unbound identifiers
into the interaction environment.
2008-05-01 15:04:43 -04:00
Abdulaziz Ghuloum d49aed209a Added (interaction-environment). 2008-05-01 06:02:36 -04:00
Abdulaziz Ghuloum e7386cd7d7 Major changes to the interactive repl:
- We can now redefine imported identifiers.
- We can now use let-syntax, letrec-syntax, and modules at
  top-level.

Hand-wavey Repl Semantics:
- Imported identifiers mean what they meant previously.  In
  particular, you cannot set! imported identifiers.
- An imported identifier may be redefined using define.  Once
  something is defined at the top-level, a specific location for it
  is created, and all definitions, references, and set!s to that
  variable go through the top-level location.
- Re-importing an identifier shadows the top-level location.
- Redefining re-exposes the top-level location.
- and do on.
- A reference to an unbound variable also fabricates a top-level
  location for that variable.

Let's see how this goes.
2008-05-01 04:21:07 -04:00
Abdulaziz Ghuloum 89def78c3c Fixed the definition of identifier? and id? in expander so that only
top-make-wrapped (possibly annotated) symbols are identifiers.  It
used to be that symbols were considered identifiers by the previous
definition.
2008-04-28 14:01:49 -04:00
Abdulaziz Ghuloum 3ce6d037e4 Fixed a bug in module imports where some marks were missing in action.
(Note from Kent, extracted from chez scheme release notes, follows)

This always worked:

(let ()
  (define-syntax from
    (syntax-rules ()
      [(_ m v) (let () (import m) v)]))
  (module a (x) (define x 'x-of-a))
  (from a x))

Didn't work before this change:

(let ()
  (define-syntax x-from-a
    (syntax-rules ()
      [(_) (let () (import a) x)]))
  (module a (x) (define x 'x-of-a))
  (x-from-a))
2008-04-19 17:55:30 -04:00
Abdulaziz Ghuloum c01f3049e4 Fixes bug 206842: syntax tracing not working by default when
syntax-case fenders fail
2008-03-25 21:23:23 -04:00
Abdulaziz Ghuloum 48f7c88e2d made time macro not depend on format. 2008-03-24 21:50:37 -04:00
Abdulaziz Ghuloum 81c17da20b Fixes bug 190373: `time' macro's "running stats for" can be misleading 2008-03-24 21:45:36 -04:00
Abdulaziz Ghuloum d35566081b import now recognizes and ignore ``for'' spec. 2008-03-15 21:00:16 -04:00
Abdulaziz Ghuloum a3f6e3e039 Cut down bootstrap time by 10% by caching the values of scheme-stx.
Macroexpansion time is reduced by 25%.
2008-03-12 18:12:57 -04:00
Abdulaziz Ghuloum c8f9b1dc3d Added fluid-let-syntax.
See http://www.scheme.com/csug7/syntax.html#./syntax:s15
for details.
2008-02-25 02:15:51 -05:00
Abdulaziz Ghuloum e751c15bc4 library record now contains original file name for libraries loaded
from files.
2008-02-18 20:39:42 -05:00
Abdulaziz Ghuloum c430a91bb8 more preparations for separate compilation 2008-02-18 20:28:54 -05:00
Abdulaziz Ghuloum fa08c543bb library records now cache expanded code. 2008-02-18 19:15:47 -05:00
Abdulaziz Ghuloum 314f80eee9 include now attached annotations to read files (using read-annotated
instead of read).
2008-02-17 02:29:36 -05:00
Abdulaziz Ghuloum 19e5d2bacd Fixes bug 192222: Quasiquote broken 2008-02-15 15:25:20 -05:00
Abdulaziz Ghuloum f4fb08adba Added an experimental macro expansion stack trace that looks like:
Unhandled exception:
 Condition components:
    1. &who: let
    2. &message: "not an identifier"
    3. &syntax:
        form: (let ((12 a)) (printf "a=~s\n" a)) 
        subform: 12
    4. &trace: #<syntax (let ((12 a)) (printf "a=~s\n" a))>
    5. &trace: #<syntax (right 12 a (printf "a=~s\n" a))> 
    6. &trace: #<syntax (wrong a 12 (printf "a=~s\n" a)) [byte 216 of test.ss]>


For a file containing:

(define-syntax right
  (syntax-rules ()
    [(_ a b c) (let ([a b]) c)]))
 
(define-syntax wrong
  (syntax-rules ()
    [(_ a b c) (right b a c)]))

(right x 17 (wrong a 12 (printf "a=~s\n" a)))
2008-02-14 04:01:09 -05:00
Abdulaziz Ghuloum a43177d399 Fixed some of bug 186155: Incorrect syntax errors for define 2008-01-27 19:12:20 -05:00
Abdulaziz Ghuloum 6018e2200d Made (define foo) expand to (define foo (void)). 2008-01-18 22:18:26 -05:00
Abdulaziz Ghuloum 4444496609 Fixes bug 181105: syntax pattern variable list length mismatch error
is obscure
2008-01-09 08:47:48 -05:00
Abdulaziz Ghuloum 62765c2885 Fixes bug 180895: letrec error message not as helpful as let 2008-01-09 08:37:46 -05:00
Abdulaziz Ghuloum 797897cc01 Fixes bug 180455: raw symbols in output of macro are not detected 2008-01-04 20:53:59 -05:00
Abdulaziz Ghuloum 1786677c73 * made unbound variable violations have &undefined condition type. 2007-12-23 19:52:18 -05:00
Abdulaziz Ghuloum 2e7faf85c7 Fixes bug 178334: annotation structs being revealed 2007-12-23 16:23:20 -05:00
Abdulaziz Ghuloum 097ca03e47 Fixes bug 177638: keyword argument in syntax-rules should not be
used in substitutions
2007-12-20 06:36:00 -05:00
Abdulaziz Ghuloum b915854677 enhanced printing of annotated syntax objects. 2007-12-20 00:31:49 -05:00
Abdulaziz Ghuloum 2c31b5bf51 replaced some calls to assertion-violation with calls to
syntax-violation for better syntactic error reporting.
2007-12-19 23:42:27 -05:00
Abdulaziz Ghuloum 917754e28e syntax-errors now give source information in their error message. 2007-12-19 19:05:23 -05:00
Abdulaziz Ghuloum bbe388656c fixes bug 176756: define-condition-type does not work in repl 2007-12-17 11:37:10 -05:00
Abdulaziz Ghuloum 8c0563b2d3 fixes bug 173369: errors are supposed to be &assertion 2007-12-15 08:22:49 -05:00
Abdulaziz Ghuloum 4e66fe76e8 Fixes bug 176207: macros cannot be redefined. 2007-12-14 03:23:47 -05:00
Abdulaziz Ghuloum fa27b7e9cd Fixes 1/2 of bug 176207: identifier-syntax second case broken 2007-12-14 01:58:55 -05:00
Abdulaziz Ghuloum 75f2d78678 more cleanup in expander. 2007-12-13 06:41:44 -05:00
Abdulaziz Ghuloum 112e00a6e6 get-import-spec* now uses an eq-hash-table to detect most dups. 2007-12-13 06:15:21 -05:00
Abdulaziz Ghuloum c181838f48 changed "parse-import-spec*" in psyntax.expander to return two
vectors (names and labels) instead of an a-list subst.
2007-12-13 05:57:15 -05:00
Abdulaziz Ghuloum 54f683f0e0 Ported match.ss to ikarus. 2007-12-11 17:41:48 -05:00
Abdulaziz Ghuloum 3562a736c5 Fixes bug 175117: Named let violates scoping rules 2007-12-09 12:20:13 -05:00
Abdulaziz Ghuloum 1d5c069273 Fixes bug 175057: Added time-gmt-offset procedure that takes a time
object and returns the offset from gmt in seconds.
2007-12-09 07:20:49 -05:00
Abdulaziz Ghuloum efd233ad0e Fixes bugs 175025 and 175026: let-values and let*-values are fixed/added 2007-12-09 02:53:12 -05:00
Abdulaziz Ghuloum cf82981383 Fixes bug 174497: syntax-error should not be in (rnrs) and
syntax-violation not completed
2007-12-07 03:00:25 -05:00
Abdulaziz Ghuloum e874d2d0a0 Added "include-into" macro.
(include-into ctxt "filename") included the contents of the file
  as if they were present in the context ctxt (which must be an
  identifier).  
  (include-into here "filename") would do the same thing as
  (include "filename")
2007-12-05 03:26:56 -05:00
Abdulaziz Ghuloum bd06d39220 Fixes bug 173165 and bug 173162: opaque and sealed for record types
are not being enforced.
2007-12-01 01:52:34 -05:00
Abdulaziz Ghuloum 9d6f8511c8 Fixes bug 173169: Mutator names on define-record-type are wrong 2007-12-01 01:46:58 -05:00
Abdulaziz Ghuloum 2d55282789 Fixes bug 165133: Bodies of internal definitions should be expanded
before right-hand-side expressions
2007-11-30 06:31:07 -05:00