1. 19 Apr, 2020 13 commits
  2. 18 Apr, 2020 3 commits
  3. 12 Apr, 2020 1 commit
  4. 11 Apr, 2020 2 commits
  5. 09 Apr, 2020 2 commits
  6. 08 Apr, 2020 5 commits
    • Daniel Kochmański's avatar
    • Daniel Kochmański's avatar
      congruent-lambda-p: be more permissive with the congruency test · 896e7c58
      Daniel Kochmański authored
      Lambda list congruency is described here:
      
      - 7.6.4 Congruent Lambda-lists for all Methods of a Generic Function
      - 7.6.5 Keyword Arguments in Generic Functions and Methods
      
      Previously we have tested conformingly for the fourth point:
      
        4. If the generic function lambda list mentions &key, each method
        must accept all of the keyword names mentioned after &key, either by
        accepting them explicitly, by specifying &allow-other-keys, or by
        specifying &rest but not &key. Each method can accept additional
        keyword arguments of its own. The checking of the validity of
        keyword names is done in the generic function, not in each method. A
        method is invoked as if the keyword argument pair whose name is
        :allow-other-keys and whose value is true were supplied, though no
        such argument pair will be passed.
      
      The fifth point mentions that if either the generic function or any
      applicable method has &allow-other-keys, then function may be called
      with extra keyword arguments:
      
        5. The use of &allow-other-keys need not be consistent across lambda
        lists. If &allow-other-keys is mentioned in the lambda list of any
        applicable method or of the generic function, any keyword arguments
        may be mentioned in the call to the generic function.
      
      This change makes the fourth point more consistent with the fifth,
      however it is *not* conformant when it is read literally. Reasons for
      this change:
      
      - this behavior is exhibited at least by SBCL and CCL, so we'll be
        more compatible with a non-conformant code tested on them
      
      - the change won't impact results of a correct program unless it
        depends on the defmethod signaling an error condition
      896e7c58
    • Daniel Kochmański's avatar
      tests: add a regression test for #571 · b41b60e7
      Daniel Kochmański authored
      b41b60e7
    • Daniel Kochmański's avatar
      d7694946
    • Daniel Kochmański's avatar
      compiler: rewrite clos::need-to-make-load-form-p · aa34ab71
      Daniel Kochmański authored
      Function is rewritten in C in compiler.d to remove a dependency
      between the bytecodes compiler and the clos module. It may be more
      performant thanks to more precise type handing, however we use a list
      instead of a hashtable, so it may be slower with lookup. To assess
      that we should run some benchmarks against real code -- rewriting C
      code to work with a hash table should be trivial.
      
      clos::need-to-make-load-form-p is now si::need-to-make-load-form-p and
      may be called from C code as si_need_to_make_load_form_p.
      aa34ab71
  7. 06 Apr, 2020 1 commit
  8. 05 Apr, 2020 3 commits
    • Daniel Kochmański's avatar
      tests: add a regression test for the issue #568 · cdf55007
      Daniel Kochmański authored
      - also fix test which assumed constant unreadable representation of
        the object of class compiler-test-class
      cdf55007
    • Daniel Kochmański's avatar
      finalize-inheritance: do not refinalize when already finalized · 49b244db
      Daniel Kochmański authored
      We've reinitialized the class even when it was already finalized and
      none of its parents has changed with the recomputed information.
      
      That leads to replacing the class slots with a result of COMPUTE-SLOTS
      and in effect changing the INSTANCE-SIG (see src/clos/change.lsp).
      Next time when ENSURE-UP-TO-DATE-INSTANCE is called (i.e from the
      STANDARD-INSTANCE-ACCESS), then the instance is reinitalized.
      
      Behavior was the most notable when we had tried to re-finalize the
      STANDARD-EFFECTIVE-SLOT-DEFINITION class, because then /its new/ slots
      were by definition obsolete after calling setf on this class and
      unbound, what leads to an infinite recursion when we try to signal
      unbound-slot condition.
      
      Fixes #568.
      49b244db
    • Daniel Kochmański's avatar
      print-object: when printing the standard object print its address · f532057a
      Daniel Kochmański authored
      Now instead of a default printer #<a foo> we have the identity
      information #<a foo 0x56123571d240>. That is certainly useful for
      printing when we have lists of instances of the same class.
      f532057a
  9. 28 Mar, 2020 2 commits
  10. 27 Mar, 2020 8 commits