MCPcopy Index your code
hub / github.com/clojure/clojure / AssignExpr

Class AssignExpr

src/jvm/clojure/lang/Compiler.java:595–631  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

593}
594
595public static class AssignExpr implements Expr{
596 public final AssignableExpr target;
597 public final Expr val;
598
599 public AssignExpr(AssignableExpr target, Expr val){
600 this.target = target;
601 this.val = val;
602 }
603
604 public Object eval() {
605 return target.evalAssign(val);
606 }
607
608 public void emit(C context, ObjExpr objx, GeneratorAdapter gen){
609 target.emitAssign(context, objx, gen, val);
610 }
611
612 public boolean hasJavaClass() {
613 return val.hasJavaClass();
614 }
615
616 public Class getJavaClass() {
617 return val.getJavaClass();
618 }
619
620 static class Parser implements IParser{
621 public Expr parse(C context, Object frm) {
622 ISeq form = (ISeq) frm;
623 if(RT.length(form) != 3)
624 throw new IllegalArgumentException("Malformed assignment, expecting (set! target val)");
625 Expr target = analyze(C.EXPRESSION, RT.second(form));
626 if(!(target instanceof AssignableExpr))
627 throw new IllegalArgumentException("Invalid assignment target");
628 return new AssignExpr((AssignableExpr) target, analyze(C.EXPRESSION, RT.third(form)));
629 }
630 }
631}
632
633public static class VarExpr implements Expr, AssignableExpr{
634 public final Var var;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected