Changeset 15560


Ignore:
Timestamp:
02/27/22 10:40:12 (2 years ago)
Author:
Mark Evenson
Message:

Support for catch tags in slime

Location:
trunk/abcl
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/contrib/abcl-introspect/abcl-introspect.lisp

    r15558 r15560  
    379379         for value = (jss:get-java-field binding "value" t)
    380380         for special = (jss:get-java-field binding "specialp" t)
     381         if (member symbol '(:catch))
     382           collect `(,symbol ,value) into them
     383         else
    381384         unless (find symbol them :key 'second)
    382385           collect (list (if special
  • trunk/abcl/src/org/armedbear/lisp/Keyword.java

    r15357 r15560  
    5252        CAPITALIZE_FIRST    = internKeyword("CAPITALIZE-FIRST"),
    5353        CASE                = internKeyword("CASE"),
     54        CATCH               = internKeyword("CATCH"),
    5455        CAUSE               = internKeyword("CAUSE"),
    5556        CHAR                = internKeyword("CHAR"),
  • trunk/abcl/src/org/armedbear/lisp/Primitives.java

    r15554 r15560  
    38063806            LispObject body = args.cdr();
    38073807            LispObject result = NIL;
     3808            Environment ext = new Environment(env,Keyword.CATCH,tag);
    38083809            try {
     3810                thread.envStack.push(ext);
    38093811                return progn(body, env, thread);
    38103812            } catch (Throw t) {
     
    38173819            }
    38183820            finally {
     3821                while (thread.envStack.pop() != ext) {};
    38193822                thread.popCatchTag();
    38203823            }
Note: See TracChangeset for help on using the changeset viewer.