aboutsummaryrefslogtreecommitdiff
path: root/clojurescript/clojurescript-compiler.patch
diff options
context:
space:
mode:
authorChouser <chouser@n01se.net>2008-09-20 04:03:32 +0000
committerChouser <chouser@n01se.net>2008-09-20 04:03:32 +0000
commit20d1ba5d710e1f9c86887484092154101f0017c7 (patch)
tree756144b8fa1ce70b1d8fe5d06c9683b0ac015751 /clojurescript/clojurescript-compiler.patch
parentb0d0dd38cc3cdf8673d16009621501f10a25e023 (diff)
ClojureScript: Now support apply, lazy variadic args, minimal
StringBuilder and *out*. Use switch on arguments.length
Diffstat (limited to 'clojurescript/clojurescript-compiler.patch')
-rw-r--r--clojurescript/clojurescript-compiler.patch569
1 files changed, 0 insertions, 569 deletions
diff --git a/clojurescript/clojurescript-compiler.patch b/clojurescript/clojurescript-compiler.patch
deleted file mode 100644
index 709abdae..00000000
--- a/clojurescript/clojurescript-compiler.patch
+++ /dev/null
@@ -1,569 +0,0 @@
-diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
-index a44aa2e..aae4cc9 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");
-@@ -257,12 +257,12 @@ static Symbol resolveSymbol(Symbol sym){
- }
-
- static class DefExpr implements Expr{
-- final Var var;
-- final Expr init;
-- final Expr meta;
-- final boolean initProvided;
-- final String source;
-- final int line;
-+ public final Var var;
-+ public final Expr init;
-+ public final Expr meta;
-+ public final boolean initProvided;
-+ public final String source;
-+ public final int line;
- 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)");
-@@ -361,10 +361,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;
-@@ -400,9 +399,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)");
-
-@@ -446,8 +445,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;
-@@ -482,8 +481,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;
-@@ -509,7 +508,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(){
-@@ -830,11 +829,11 @@ static abstract class FieldExpr extends HostExpr{
- }
-
- static class InstanceFieldExpr extends FieldExpr implements AssignableExpr{
-- final Expr target;
-- final Class targetClass;
-- final java.lang.reflect.Field field;
-- final String fieldName;
-- final int line;
-+ public final Expr target;
-+ public final Class targetClass;
-+ public final java.lang.reflect.Field field;
-+ public final String fieldName;
-+ public final int line;
- final static Method invokeNoArgInstanceMember = Method.getMethod("Object invokeNoArgInstanceMember(Object,String)");
- final static Method setInstanceFieldMethod = Method.getMethod("Object setInstanceField(Object,String,Object)");
-
-@@ -930,9 +929,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;
-@@ -1054,12 +1053,12 @@ static abstract class MethodExpr extends HostExpr{
- }
-
- static class InstanceMethodExpr extends MethodExpr{
-- final Expr target;
-- final String methodName;
-- final IPersistentVector args;
-- final String source;
-- final int line;
-- final java.lang.reflect.Method method;
-+ public final Expr target;
-+ public final String methodName;
-+ public final IPersistentVector args;
-+ public final String source;
-+ public final int line;
-+ public final java.lang.reflect.Method method;
-
- final static Method invokeInstanceMethodMethod =
- Method.getMethod("Object invokeInstanceMethod(Object,String,Object[])");
-@@ -1205,12 +1204,12 @@ static class InstanceMethodExpr extends MethodExpr{
-
- static class StaticMethodExpr extends MethodExpr{
- //final String className;
-- final Class c;
-- final String methodName;
-- final IPersistentVector args;
-- final String source;
-- final int line;
-- final java.lang.reflect.Method method;
-+ public final Class c;
-+ public final String methodName;
-+ public final IPersistentVector args;
-+ public final String source;
-+ public final int line;
-+ public final java.lang.reflect.Method method;
- final static Method invokeStaticMethodMethod =
- Method.getMethod("Object invokeStaticMethod(String,String,Object[])");
-
-@@ -1326,12 +1325,36 @@ static class StaticMethodExpr extends MethodExpr{
- }
- }
-
-+static class UnresolvedVarExpr implements Expr{
-+ public final Symbol symbol;
-+
-+ public UnresolvedVarExpr(Symbol symbol) {
-+ this.symbol = symbol;
-+ }
-+
-+ public boolean hasJavaClass(){
-+ return false;
-+ }
-+
-+ public Class getJavaClass() throws Exception{
-+ throw new IllegalArgumentException(
-+ "UnresolvedVarExpr has no Java class");
-+ }
-+
-+ public void emit(C context, FnExpr fn, GeneratorAdapter gen){
-+ }
-+
-+ public Object eval() throws Exception{
-+ throw new IllegalArgumentException(
-+ "UnresolvedVarExpr cannot be evalled");
-+ }
-+}
-
- 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;
-@@ -1415,7 +1438,7 @@ static class NilExpr extends LiteralExpr{
- final static NilExpr NIL_EXPR = new NilExpr();
-
- static class BooleanExpr extends LiteralExpr{
-- final boolean val;
-+ public final boolean val;
-
-
- public BooleanExpr(boolean val){
-@@ -1450,7 +1473,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;
-@@ -1621,18 +1644,18 @@ 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{
-+ public static class CatchClause{
- //final String className;
-- final Class c;
-- final LocalBinding lb;
-- final Expr handler;
-+ public final Class c;
-+ public final LocalBinding lb;
-+ public final Expr handler;
- Label label;
- Label endLabel;
-
-@@ -1874,7 +1897,7 @@ static class TryExpr implements Expr{
- //}
-
- static class ThrowExpr extends UntypedExpr{
-- final Expr excExpr;
-+ public final Expr excExpr;
-
- public ThrowExpr(Expr excExpr){
- this.excExpr = excExpr;
-@@ -2001,10 +2024,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)");
-@@ -2216,9 +2239,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)");
-
-@@ -2253,11 +2276,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){
-@@ -2382,8 +2405,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);
-@@ -2434,8 +2457,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[])");
-
-
-@@ -2467,8 +2490,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[])");
-
-
-@@ -2516,8 +2539,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[])");
-
-
-@@ -2564,8 +2587,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[])");
-
-
-@@ -2610,11 +2633,11 @@ static class VectorExpr implements Expr{
- }
-
- static class InvokeExpr implements Expr{
-- final Expr fexpr;
-- final Object tag;
-- final IPersistentVector args;
-- final int line;
-- final String source;
-+ public final Expr fexpr;
-+ public final Object tag;
-+ public final IPersistentVector args;
-+ public final int line;
-+ public final String source;
-
- public InvokeExpr(String source, int line, Symbol tag, Expr fexpr, IPersistentVector args){
- this.source = source;
-@@ -2746,7 +2769,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
-@@ -2756,6 +2779,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)");
-@@ -3192,10 +3229,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
-@@ -3207,6 +3244,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;
-@@ -3346,12 +3391,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)
-@@ -3382,9 +3427,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)
-@@ -3419,8 +3464,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;
-@@ -3480,9 +3526,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;
-@@ -3490,10 +3538,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;
-@@ -3616,9 +3664,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;
-@@ -3720,7 +3768,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);
- }
-
-@@ -4021,6 +4069,8 @@ private static Expr analyzeSymbol(Symbol sym) throws Exception{
- }
- else if(o instanceof Class)
- return new ConstantExpr(o);
-+ else if(o instanceof Symbol)
-+ return new UnresolvedVarExpr((Symbol) o);
-
- throw new Exception("Unable to resolve symbol: " + sym + " in this context");
-
-@@ -4074,7 +4124,16 @@ static public Object resolveIn(Namespace n, Symbol sym) throws Exception{
- {
- Object o = n.getMapping(sym);
- if(o == null)
-- throw new Exception("Unable to resolve symbol: " + sym + " in this context");
-+ {
-+ if( RT.booleanCast(RT.ALLOW_UNRESOLVED_VARS.get()))
-+ {
-+ return sym;
-+ }
-+ else
-+ {
-+ throw new Exception("Unable to resolve symbol: " + sym + " in this context");
-+ }
-+ }
- return o;
- }
- }
-diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
-index 2ce55e4..06379eb 100644
---- a/src/jvm/clojure/lang/RT.java
-+++ b/src/jvm/clojure/lang/RT.java
-@@ -198,6 +198,7 @@ final static Var FLUSH_ON_NEWLINE = Var.intern(CLOJURE_NS, Symbol.create("*flush
- final static Var PRINT_META = Var.intern(CLOJURE_NS, Symbol.create("*print-meta*"), F);
- final static Var PRINT_READABLY = Var.intern(CLOJURE_NS, Symbol.create("*print-readably*"), T);
- final static Var WARN_ON_REFLECTION = Var.intern(CLOJURE_NS, Symbol.create("*warn-on-reflection*"), F);
-+final static Var ALLOW_UNRESOLVED_VARS = Var.intern(CLOJURE_NS, Symbol.create("*allow-unresolved-vars*"), F);
-
- final static Var IN_NS_VAR = Var.intern(CLOJURE_NS, Symbol.create("in-ns"), F);
- final static Var NS_VAR = Var.intern(CLOJURE_NS, Symbol.create("ns"), F);