aboutsummaryrefslogtreecommitdiff
path: root/clojurescript/clojurescript-compiler.patch
diff options
context:
space:
mode:
authorChouser <chouser@n01se.net>2008-09-12 04:08:22 +0000
committerChouser <chouser@n01se.net>2008-09-12 04:08:22 +0000
commit5d0db072443c34f3dbd45ae077260e270f53a65a (patch)
tree12b0bb13e6195aca0939f5add197555217c14ed0 /clojurescript/clojurescript-compiler.patch
parent0b0f94bc8258a31490092928b547614dcf25f722 (diff)
Initial preliminary checkin of ClojureScript -- very incomplete.
Diffstat (limited to 'clojurescript/clojurescript-compiler.patch')
-rw-r--r--clojurescript/clojurescript-compiler.patch434
1 files changed, 434 insertions, 0 deletions
diff --git a/clojurescript/clojurescript-compiler.patch b/clojurescript/clojurescript-compiler.patch
new file mode 100644
index 00000000..532c2646
--- /dev/null
+++ b/clojurescript/clojurescript-compiler.patch
@@ -0,0 +1,434 @@
+diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
+index afb25de..fd3cc49 100644
+--- a/src/jvm/clojure/lang/Compiler.java
++++ b/src/jvm/clojure/lang/Compiler.java
+@@ -195,7 +195,7 @@ static final public Var RET_LOCAL_NUM = Var.create();
+ //DynamicClassLoader
+ static final public Var LOADER = Var.create();
+
+-enum C{
++public enum C{
+ STATEMENT, //value ignored
+ EXPRESSION, //value required
+ RETURN, //tail position relative to enclosing recur frame
+@@ -212,7 +212,7 @@ interface Expr{
+ Class getJavaClass() throws Exception;
+ }
+
+-static abstract class UntypedExpr implements Expr{
++public static abstract class UntypedExpr implements Expr{
+
+ public Class getJavaClass(){
+ throw new IllegalArgumentException("Has no Java class");
+@@ -256,11 +256,11 @@ static Symbol resolveSymbol(Symbol sym){
+
+ }
+
+-static class DefExpr implements Expr{
+- final Var var;
+- final Expr init;
+- final Expr meta;
+- final boolean initProvided;
++public static class DefExpr implements Expr{
++ public final Var var;
++ public final Expr init;
++ public final Expr meta;
++ public final boolean initProvided;
+ final static Method bindRootMethod = Method.getMethod("void bindRoot(Object)");
+ final static Method setTagMethod = Method.getMethod("void setTag(clojure.lang.Symbol)");
+ final static Method setMetaMethod = Method.getMethod("void setMeta(clojure.lang.IPersistentMap)");
+@@ -341,10 +341,9 @@ static class DefExpr implements Expr{
+ }
+ }
+
+-static class AssignExpr implements Expr{
+- final AssignableExpr target;
+- final Expr val;
+-
++public static class AssignExpr implements Expr{
++ public final AssignableExpr target;
++ public final Expr val;
+
+ public AssignExpr(AssignableExpr target, Expr val){
+ this.target = target;
+@@ -380,9 +379,9 @@ static class AssignExpr implements Expr{
+ }
+ }
+
+-static class VarExpr implements Expr, AssignableExpr{
+- final Var var;
+- final Object tag;
++public static class VarExpr implements Expr, AssignableExpr{
++ public final Var var;
++ public final Object tag;
+ final static Method getMethod = Method.getMethod("Object get()");
+ final static Method setMethod = Method.getMethod("Object set(Object)");
+
+@@ -426,8 +425,8 @@ static class VarExpr implements Expr, AssignableExpr{
+ }
+ }
+
+-static class TheVarExpr implements Expr{
+- final Var var;
++public static class TheVarExpr implements Expr{
++ public final Var var;
+
+ public TheVarExpr(Var var){
+ this.var = var;
+@@ -462,8 +461,8 @@ static class TheVarExpr implements Expr{
+ }
+ }
+
+-static class KeywordExpr implements Expr{
+- final Keyword k;
++public static class KeywordExpr implements Expr{
++ public final Keyword k;
+
+ public KeywordExpr(Keyword k){
+ this.k = k;
+@@ -489,7 +488,7 @@ static class KeywordExpr implements Expr{
+ }
+ }
+
+-static abstract class LiteralExpr implements Expr{
++public static abstract class LiteralExpr implements Expr{
+ abstract Object val();
+
+ public Object eval(){
+@@ -909,9 +908,9 @@ static class InstanceFieldExpr extends FieldExpr implements AssignableExpr{
+
+ static class StaticFieldExpr extends FieldExpr implements AssignableExpr{
+ //final String className;
+- final String fieldName;
+- final Class c;
+- final java.lang.reflect.Field field;
++ public final String fieldName;
++ public final Class c;
++ public final java.lang.reflect.Field field;
+ final static Method getStaticFieldMethod = Method.getMethod("Object getStaticField(String,String)");
+ final static Method setStaticFieldMethod = Method.getMethod("Object setStaticField(String,String,Object)");
+ final int line;
+@@ -1171,11 +1170,11 @@ static class InstanceMethodExpr extends MethodExpr{
+
+ static class StaticMethodExpr extends MethodExpr{
+ //final String className;
+- final Class c;
+- final String methodName;
+- final IPersistentVector args;
+- final int line;
+- final java.lang.reflect.Method method;
++ public final Class c;
++ public final String methodName;
++ public final IPersistentVector args;
++ public final int line;
++ public final java.lang.reflect.Method method;
+ final static Method invokeStaticMethodMethod =
+ Method.getMethod("Object invokeStaticMethod(String,String,Object[])");
+
+@@ -1284,8 +1283,8 @@ static class StaticMethodExpr extends MethodExpr{
+ static class ConstantExpr extends LiteralExpr{
+ //stuff quoted vals in classloader at compile time, pull out at runtime
+ //this won't work for static compilation...
+- final Object v;
+- final int id;
++ public final Object v;
++ public final int id;
+
+ public ConstantExpr(Object v){
+ this.v = v;
+@@ -1404,7 +1403,7 @@ final static BooleanExpr TRUE_EXPR = new BooleanExpr(true);
+ final static BooleanExpr FALSE_EXPR = new BooleanExpr(false);
+
+ static class StringExpr extends LiteralExpr{
+- final String str;
++ public final String str;
+
+ public StringExpr(String str){
+ this.str = str;
+@@ -1575,12 +1574,12 @@ static class MonitorExitExpr extends UntypedExpr{
+
+ }
+
+-static class TryExpr implements Expr{
+- final Expr tryExpr;
+- final Expr finallyExpr;
+- final PersistentVector catchExprs;
+- final int retLocal;
+- final int finallyLocal;
++public static class TryExpr implements Expr{
++ public final Expr tryExpr;
++ public final Expr finallyExpr;
++ public final PersistentVector catchExprs;
++ public final int retLocal;
++ public final int finallyLocal;
+
+ static class CatchClause{
+ //final String className;
+@@ -1955,10 +1954,10 @@ static int getMatchingParams(String methodName, ArrayList<Class[]> paramlists, I
+ return matchIdx;
+ }
+
+-static class NewExpr implements Expr{
+- final IPersistentVector args;
+- final Constructor ctor;
+- final Class c;
++public static class NewExpr implements Expr{
++ public final IPersistentVector args;
++ public final Constructor ctor;
++ public final Class c;
+ final static Method invokeConstructorMethod =
+ Method.getMethod("Object invokeConstructor(Class,Object[])");
+ final static Method forNameMethod = Method.getMethod("Class classForName(String)");
+@@ -2170,9 +2169,9 @@ static class NewExpr implements Expr{
+ // }
+ //}
+
+-static class MetaExpr implements Expr{
+- final Expr expr;
+- final MapExpr meta;
++public static class MetaExpr implements Expr{
++ public final Expr expr;
++ public final MapExpr meta;
+ final static Type IOBJ_TYPE = Type.getType(IObj.class);
+ final static Method withMetaMethod = Method.getMethod("clojure.lang.IObj withMeta(clojure.lang.IPersistentMap)");
+
+@@ -2207,11 +2206,11 @@ static class MetaExpr implements Expr{
+ }
+ }
+
+-static class IfExpr implements Expr{
+- final Expr testExpr;
+- final Expr thenExpr;
+- final Expr elseExpr;
+- final int line;
++public static class IfExpr implements Expr{
++ public final Expr testExpr;
++ public final Expr thenExpr;
++ public final Expr elseExpr;
++ public final int line;
+
+
+ public IfExpr(int line, Expr testExpr, Expr thenExpr, Expr elseExpr){
+@@ -2336,8 +2335,8 @@ static public String munge(String name){
+ return sb.toString();
+ }
+
+-static class EmptyExpr implements Expr{
+- final Object coll;
++public static class EmptyExpr implements Expr{
++ public final Object coll;
+ final static Type HASHMAP_TYPE = Type.getType(PersistentHashMap.class);
+ final static Type HASHSET_TYPE = Type.getType(PersistentHashSet.class);
+ final static Type VECTOR_TYPE = Type.getType(PersistentVector.class);
+@@ -2388,8 +2387,8 @@ static class EmptyExpr implements Expr{
+ }
+ }
+
+-static class ListExpr implements Expr{
+- final IPersistentVector args;
++public static class ListExpr implements Expr{
++ public final IPersistentVector args;
+ final static Method arrayToListMethod = Method.getMethod("clojure.lang.ISeq arrayToList(Object[])");
+
+
+@@ -2421,8 +2420,8 @@ static class ListExpr implements Expr{
+
+ }
+
+-static class MapExpr implements Expr{
+- final IPersistentVector keyvals;
++public static class MapExpr implements Expr{
++ public final IPersistentVector keyvals;
+ final static Method mapMethod = Method.getMethod("clojure.lang.IPersistentMap map(Object[])");
+
+
+@@ -2470,8 +2469,8 @@ static class MapExpr implements Expr{
+ }
+ }
+
+-static class SetExpr implements Expr{
+- final IPersistentVector keys;
++public static class SetExpr implements Expr{
++ public final IPersistentVector keys;
+ final static Method setMethod = Method.getMethod("clojure.lang.IPersistentSet set(Object[])");
+
+
+@@ -2518,8 +2517,8 @@ static class SetExpr implements Expr{
+ }
+ }
+
+-static class VectorExpr implements Expr{
+- final IPersistentVector args;
++public static class VectorExpr implements Expr{
++ public final IPersistentVector args;
+ final static Method vectorMethod = Method.getMethod("clojure.lang.IPersistentVector vector(Object[])");
+
+
+@@ -2563,11 +2562,11 @@ static class VectorExpr implements Expr{
+
+ }
+
+-static class InvokeExpr implements Expr{
+- final Expr fexpr;
+- final Object tag;
+- final IPersistentVector args;
+- final int line;
++public static class InvokeExpr implements Expr{
++ public final Expr fexpr;
++ public final Object tag;
++ public final IPersistentVector args;
++ public final int line;
+
+ public InvokeExpr(int line, Symbol tag, Expr fexpr, IPersistentVector args){
+ this.fexpr = fexpr;
+@@ -2661,7 +2660,7 @@ static public class FnExpr implements Expr{
+ String internalName;
+ String thisName;
+ Type fntype;
+- final Object tag;
++ public final Object tag;
+ //localbinding->itself
+ IPersistentMap closes = PersistentHashMap.EMPTY;
+ //Keyword->KeywordExpr
+@@ -2671,6 +2670,20 @@ static public class FnExpr implements Expr{
+ int line;
+ PersistentVector constants;
+ int constantsID;
++ public final IPersistentCollection methods() { return methods;}
++ public final FnMethod variadicMethod() { return variadicMethod;}
++ public final String name() { return name;}
++ public final String simpleName() { return simpleName;}
++ public final String internalName() { return internalName;}
++ public final String thisName() { return thisName;}
++ public final Type fntype() { return fntype;}
++ public final IPersistentMap closes() { return closes;}
++ public final IPersistentMap keywords() { return keywords;}
++ public final IPersistentMap vars() { return vars;}
++ public final Class compiledClass() { return compiledClass;}
++ public final int line() { return line;}
++ public final PersistentVector constants() { return constants;}
++ public final int constantsID() { return constantsID;}
+
+ final static Method kwintern = Method.getMethod("clojure.lang.Keyword intern(String, String)");
+ final static Method symcreate = Method.getMethod("clojure.lang.Symbol create(String)");
+@@ -3098,10 +3111,10 @@ enum PSTATE{
+ }
+
+
+-static class FnMethod{
++public static class FnMethod{
+ //when closures are defined inside other closures,
+ //the closed over locals need to be propagated to the enclosing fn
+- final FnMethod parent;
++ public final FnMethod parent;
+ //localbinding->localbinding
+ IPersistentMap locals = null;
+ //localbinding->localbinding
+@@ -3113,6 +3126,14 @@ static class FnMethod{
+ int maxLocal = 0;
+ int line;
+ PersistentHashSet localsUsedInCatchFinally = PersistentHashSet.EMPTY;
++ public final IPersistentMap locals() { return locals;}
++ public final PersistentVector reqParms() { return reqParms;}
++ public final LocalBinding restParm() { return restParm;}
++ public final Expr body() { return body;}
++ public final FnExpr fn() { return fn;}
++ public final PersistentVector argLocals() { return argLocals;}
++ public final int maxLocal() { return maxLocal;}
++ public final int line() { return line;}
+
+ public FnMethod(FnExpr fn, FnMethod parent){
+ this.parent = parent;
+@@ -3252,12 +3273,12 @@ static class FnMethod{
+ }
+ }
+
+-static class LocalBinding{
+- final Symbol sym;
+- final Symbol tag;
+- final Expr init;
+- final int idx;
+- final String name;
++public static class LocalBinding{
++ public final Symbol sym;
++ public final Symbol tag;
++ public final Expr init;
++ public final int idx;
++ public final String name;
+
+ public LocalBinding(int num, Symbol sym, Symbol tag, Expr init) throws Exception{
+ if(maybePrimitiveType(init) != null && tag != null)
+@@ -3288,9 +3309,9 @@ static class LocalBinding{
+ }
+ }
+
+-static class LocalBindingExpr implements Expr, MaybePrimitiveExpr{
+- final LocalBinding b;
+- final Symbol tag;
++public static class LocalBindingExpr implements Expr, MaybePrimitiveExpr{
++ public final LocalBinding b;
++ public final Symbol tag;
+
+ public LocalBindingExpr(LocalBinding b, Symbol tag) throws Exception{
+ if(b.getPrimitiveType() != null && tag != null)
+@@ -3325,8 +3346,9 @@ static class LocalBindingExpr implements Expr, MaybePrimitiveExpr{
+
+ }
+
+-static class BodyExpr implements Expr{
++public static class BodyExpr implements Expr{
+ PersistentVector exprs;
++ public final PersistentVector exprs() { return exprs;}
+
+ public BodyExpr(PersistentVector exprs){
+ this.exprs = exprs;
+@@ -3386,9 +3408,11 @@ static class BodyExpr implements Expr{
+ }
+ }
+
+-static class BindingInit{
++public static class BindingInit{
+ LocalBinding binding;
+ Expr init;
++ public final LocalBinding binding() { return binding;}
++ public final Expr init() { return init;}
+
+ public BindingInit(LocalBinding binding, Expr init){
+ this.binding = binding;
+@@ -3396,10 +3420,10 @@ static class BindingInit{
+ }
+ }
+
+-static class LetExpr implements Expr{
+- final PersistentVector bindingInits;
+- final Expr body;
+- final boolean isLoop;
++public static class LetExpr implements Expr{
++ public final PersistentVector bindingInits;
++ public final Expr body;
++ public final boolean isLoop;
+
+ public LetExpr(PersistentVector bindingInits, Expr body, boolean isLoop){
+ this.bindingInits = bindingInits;
+@@ -3522,9 +3546,9 @@ static class LetExpr implements Expr{
+ }
+ }
+
+-static class RecurExpr implements Expr{
+- final IPersistentVector args;
+- final IPersistentVector loopLocals;
++public static class RecurExpr implements Expr{
++ public final IPersistentVector args;
++ public final IPersistentVector loopLocals;
+
+ public RecurExpr(IPersistentVector loopLocals, IPersistentVector args){
+ this.loopLocals = loopLocals;
+@@ -3626,7 +3650,7 @@ private static int getAndIncLocalNum(){
+ return num;
+ }
+
+-private static Expr analyze(C context, Object form) throws Exception{
++public static Expr analyze(C context, Object form) throws Exception{
+ return analyze(context, form, null);
+ }
+