1 21 22 package org.armedbear.lisp; 23 24 public class PackageError extends LispError 25 { 26 private final LispObject pkg; 27 28 public PackageError(LispObject initArgs) throws ConditionThrowable 29 { 30 LispObject pkg = NIL; 31 LispObject first, second; 32 while (initArgs != NIL) { 33 first = initArgs.car(); 34 initArgs = initArgs.cdr(); 35 second = initArgs.car(); 36 initArgs = initArgs.cdr(); 37 if (first == Keyword.PACKAGE) 38 pkg = second; 39 } 40 this.pkg = pkg; 41 } 42 43 public PackageError(String message) 44 { 45 super(message); 46 pkg = NIL; 47 } 48 49 public LispObject typeOf() 50 { 51 return Symbol.PACKAGE_ERROR; 52 } 53 54 public LispClass classOf() 55 { 56 return BuiltInClass.PACKAGE_ERROR; 57 } 58 59 public LispObject typep(LispObject type) throws ConditionThrowable 60 { 61 if (type == Symbol.PACKAGE_ERROR) 62 return T; 63 if (type == BuiltInClass.PACKAGE_ERROR) 64 return T; 65 return super.typep(type); 66 } 67 68 private static final Primitive1 PACKAGE_ERROR_PACKAGE = 70 new Primitive1("package-error-package", "condition") 71 { 72 public LispObject execute(LispObject arg) throws ConditionThrowable 73 { 74 try { 75 return ((PackageError)arg).pkg; 76 } 77 catch (ClassCastException e) { 78 return signal(new TypeError(arg, Symbol.PACKAGE_ERROR)); 79 } 80 } 81 }; 82 } 83 | Popular Tags |