1. 10 May, 2021 1 commit
  2. 07 May, 2021 3 commits
  3. 09 Apr, 2021 2 commits
  4. 01 Apr, 2021 1 commit
  5. 31 Mar, 2021 3 commits
    • Marius Gerbershagen's avatar
      clos: replace macros by functions in with-early-accessors · 9e204464
      Marius Gerbershagen authored
      Accessors are fuctions not macros. While using macros is fine in most
      cases, we can't use them for example in higher-order functions. The
      only reason this worked in the first place is due to our compiler
      allowing expressions such as
      
      `(macrolet ((x (...) ...)) (funcall #'x ...))
      
      even though this is invalid.
      9e204464
    • Marius Gerbershagen's avatar
      cmp: fix evaluation order of sequence compiler macros · 62d1bb12
      Marius Gerbershagen authored
      Minor improvements to define-compiler-macro* (bail out if we detect
      :allow-other-keys arguments, define a named block such that
      return-from works as expected).
      
      Major refactor of sequence compiler-macros: use define-compiler-macro*
      which handles correct evaluation order, define new macro to handle
      common stuff for all sequences compiler-macros (e.g. inline policy
      checking, check that test and test-not are not both given). The main
      expansion logic in the compiler macros is unchanged although the code
      had to be slightly rewritten to accomodate the new macros.
      
      Remove the now superfluous seq-opt-parse-args function.
      62d1bb12
    • Marius Gerbershagen's avatar
      cmp: fix let bindings with initforms which are lists with QUOTE symbol as first element · dd5c372f
      Marius Gerbershagen authored
      Example:
      
      (let ((x '(quote ...))) ...)
      
      We really have to quote the value in all cases, si::maybe-quote would
      strip away one level of quotation leaving only the equivalent
      of (let ((x (quote ...))) ...) which of course is incorrect.
      dd5c372f
  6. 29 Mar, 2021 1 commit
    • Marius Gerbershagen's avatar
      cmp: fix compiler macro for make-array · 23dde962
      Marius Gerbershagen authored
      The previous version had several problems: argument evaluation order
      was not handled correctly and the compiler-macro produced an error for
      valid code like
      
      (let ((etype :element-type))
        (make-array 10 etype 'character))
      
      Introduce a new generally applicable macro define-compiler-macro*
      which fixes these issues.
      23dde962
  7. 25 Mar, 2021 2 commits
    • Marius Gerbershagen's avatar
      cmp: fix bad warnings for type declarations inside locally · d54c1103
      Marius Gerbershagen authored
      Also search lexical environment for variables instead of only the
      list of variables being established by the current form (which is nil
      anyway in the case of locally; only let or multiple-value-bind
      statements create new variables).
      
      The declaration is still ignored, but fixing that would require a much
      larger refactor because currently variable types are associated to the
      variable itself. Thus the type can only be set for the full scope in
      which the variable is active and not locally in some subscope.
      d54c1103
    • Marius Gerbershagen's avatar
      cmp: fix inlining of functions with &key and &aux arguments · 977e2fab
      Marius Gerbershagen authored
      &aux arguments come after &key ones.
      
      Fixes #633.
      977e2fab
  8. 24 Mar, 2021 1 commit
  9. 21 Mar, 2021 5 commits
  10. 20 Mar, 2021 3 commits
  11. 18 Mar, 2021 2 commits
    • Marius Gerbershagen's avatar
      cmp: fix evaluation order of multiple-value-setq with symbol-macrolet · b1ea49e1
      Marius Gerbershagen authored
      If a variable which is set with multiple-value-setq is bound to a
      symbol-macro, we need to handle the order of side-effects as in setf.
      
      Previously, we were first evaluating the value generating form
      of the multiple-value-setq before setting the places from the
      symbol-macro. The correct order is to first evaluate the forms from
      the symbol macro giving the places to set, then evaluate the value
      generating form from the multiple-value-setq and then set the places
      to the generated values.
      b1ea49e1
    • Marius Gerbershagen's avatar
      cmp: fix (values (values)) · 80c53f0e
      Marius Gerbershagen authored
      This must return nil as a single value while we were returning no
      values.
      80c53f0e
  12. 12 Mar, 2021 2 commits
  13. 11 Mar, 2021 1 commit
    • Marius Gerbershagen's avatar
      cmp: be more strict with symbol-macrolet · e466823a
      Marius Gerbershagen authored
      The ansi standard specifies that declaring symbols bound with
      symbol-macrolet to be special or binding symbols that are defined as
      global variables must signal a program-error. Previously, we simply
      ignored this issues.
      
      Also fix an issue with cmp-env-search-variables which would wrongly
      return variables when searching for symbol macros. This allows us to
      remove another check in symbol-macro-declaration-p.
      e466823a
  14. 10 Mar, 2021 3 commits
  15. 07 Mar, 2021 2 commits
    • Marius Gerbershagen's avatar
      cl_parse_key: correctly handle literal allow-other-keys keyword arguments · a7e1bf6c
      Marius Gerbershagen authored
      When parsing keyword arguments of functions like
      
      (defun f (&key allow-other-keys) allow-other-keys)
      
      (note that `&key allow-other-keys` is not `&allow-other-keys`!), we
      were incorrectly handling the case in which this function was called
      like
      
      (f :some-unknown-keyword x :allow-other-keys non-nil-value)
      
      In this case, the spec (CLHS 3.4.1.4) says that the function has to
      ignore the unknown keyword and return the non-nil-value, while we were
      signaling an "unknown keyword" error.
      a7e1bf6c
    • Marius Gerbershagen's avatar
      interpreter: simplify handling of :allow-other-keys parsing a bit · 3ec1ed2c
      Marius Gerbershagen authored
      Get rid of the unnecessary mask (which wouldn't have worked correctly
      anyway if somebody passed more than 32 :allow-other-keys arguments).
      3ec1ed2c
  16. 05 Mar, 2021 1 commit
  17. 04 Mar, 2021 2 commits
  18. 03 Mar, 2021 2 commits
  19. 27 Feb, 2021 1 commit
  20. 23 Feb, 2021 1 commit
  21. 15 Feb, 2021 1 commit