diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-11-08 18:53:02 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-11-08 18:53:02 +0000 |
commit | 3d1daab442b6f6067d5f2fff066bdcee60f9379a (patch) | |
tree | 888561e35331358588eec7c5f815c398c8764813 /src/jvm/clojure | |
parent | 250c99e43c43a63542b2791d7329087cc26504ea (diff) |
Interim checkin - DO NOT USE!!
Unless you are interested in helping test:
Moved clojure ns to clojure.core, moved set/xml etc up out of dirs
New binding syntax (breaking change) for:
doseq
dotimes
with-open
when-first
if-let
when-let
plus:
new print-dup functionality for replica generation of compilation constants
new *print-dup* flag, prints duplicators
back to simplified readably printing for repl
readable fns, as long as they are not closures
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 44 | ||||
-rw-r--r-- | src/jvm/clojure/lang/LispReader.java | 24 | ||||
-rw-r--r-- | src/jvm/clojure/lang/MultiFn.java | 10 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 20 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Repl.java | 24 |
5 files changed, 61 insertions, 61 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index 4ee53cef..ace59409 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -62,10 +62,10 @@ static final Symbol MONITOR_EXIT = Symbol.create("monitor-exit"); static final Symbol NEW = Symbol.create("new"); //static final Symbol UNQUOTE = Symbol.create("unquote"); //static final Symbol UNQUOTE_SPLICING = Symbol.create("unquote-splicing"); -//static final Symbol SYNTAX_QUOTE = Symbol.create("clojure", "syntax-quote"); -static final Symbol LIST = Symbol.create("clojure", "list"); -static final Symbol HASHMAP = Symbol.create("clojure", "hash-map"); -static final Symbol VECTOR = Symbol.create("clojure", "vector"); +//static final Symbol SYNTAX_QUOTE = Symbol.create("clojure.core", "syntax-quote"); +static final Symbol LIST = Symbol.create("clojure.core", "list"); +static final Symbol HASHMAP = Symbol.create("clojure.core", "hash-map"); +static final Symbol VECTOR = Symbol.create("clojure.core", "vector"); static final Symbol _AMP_ = Symbol.create("&"); static final Symbol ISEQ = Symbol.create("clojure.lang.ISeq"); @@ -177,7 +177,7 @@ static final public Var IN_CATCH_FINALLY = Var.create(null); static final public Var SOURCE = Var.create("NO_SOURCE_FILE"); //String -static final public Var SOURCE_PATH = Var.intern(Namespace.findOrCreate(Symbol.create("clojure")), +static final public Var SOURCE_PATH = Var.intern(Namespace.findOrCreate(Symbol.create("clojure.core")), Symbol.create("*file*"), null); //Integer @@ -2871,7 +2871,7 @@ static public class FnExpr implements Expr{ String basename = enclosingMethod != null ? (enclosingMethod.fn.name + "$") : //"clojure.fns." + - (munge(currentNS().name.name) + "."); + (munge(currentNS().name.name) + "$"); if(RT.second(form) instanceof Symbol) name = ((Symbol) RT.second(form)).name; fn.simpleName = ((name != null ? @@ -3172,27 +3172,27 @@ static public class FnExpr implements Expr{ loader = (DynamicClassLoader) LOADER.get(); bytecode = cw.toByteArray(); -// String path = "gen" + File.separator + internalName + ".class"; -// File cf = new File(path); -// cf.getParentFile().mkdirs(); -// cf.createNewFile(); -// OutputStream cfs = new FileOutputStream(cf); -// try -// { -// cfs.write(bytecode); -// } -// finally -// { -// cfs.close(); -// } + String path = "gen" + File.separator + internalName + ".class"; + File cf = new File(path); + cf.getParentFile().mkdirs(); + cf.createNewFile(); + OutputStream cfs = new FileOutputStream(cf); + try + { + cfs.write(bytecode); + } + finally + { + cfs.close(); + } } synchronized Class getCompiledClass(){ if(compiledClass == null) try { - //compiledClass = RT.classForName(name);//loader.defineClass(name, bytecode); - compiledClass = loader.defineClass(name, bytecode); + compiledClass = RT.classForName(name);//loader.defineClass(name, bytecode); + //compiledClass = loader.defineClass(name, bytecode); } catch(Exception e) { @@ -3206,7 +3206,7 @@ static public class FnExpr implements Expr{ } public void emit(C context, FnExpr fn, GeneratorAdapter gen){ - getCompiledClass(); + //getCompiledClass(); //emitting a Fn means constructing an instance, feeding closed-overs from enclosing scope, if any //fn arg is enclosing fn, not this gen.newInstance(fntype); diff --git a/src/jvm/clojure/lang/LispReader.java b/src/jvm/clojure/lang/LispReader.java index 963253d0..4847692d 100644 --- a/src/jvm/clojure/lang/LispReader.java +++ b/src/jvm/clojure/lang/LispReader.java @@ -27,16 +27,16 @@ static final Symbol THE_VAR = Symbol.create("var"); //static Symbol SYNTAX_QUOTE = Symbol.create(null, "syntax-quote");
//static Symbol UNQUOTE = Symbol.create(null, "unquote");
//static Symbol UNQUOTE_SPLICING = Symbol.create(null, "unquote-splicing");
-static Symbol CONCAT = Symbol.create("clojure", "concat");
-static Symbol LIST = Symbol.create("clojure", "list");
-static Symbol APPLY = Symbol.create("clojure", "apply");
-static Symbol HASHMAP = Symbol.create("clojure", "hash-map");
-static Symbol HASHSET = Symbol.create("clojure", "hash-set");
-static Symbol VECTOR = Symbol.create("clojure", "vector");
-static Symbol WITH_META = Symbol.create("clojure", "with-meta");
-static Symbol META = Symbol.create("clojure", "meta");
-static Symbol DEREF = Symbol.create("clojure", "deref");
-//static Symbol DEREF_BANG = Symbol.create("clojure", "deref!");
+static Symbol CONCAT = Symbol.create("clojure.core", "concat");
+static Symbol LIST = Symbol.create("clojure.core", "list");
+static Symbol APPLY = Symbol.create("clojure.core", "apply");
+static Symbol HASHMAP = Symbol.create("clojure.core", "hash-map");
+static Symbol HASHSET = Symbol.create("clojure.core", "hash-set");
+static Symbol VECTOR = Symbol.create("clojure.core", "vector");
+static Symbol WITH_META = Symbol.create("clojure.core", "with-meta");
+static Symbol META = Symbol.create("clojure.core", "meta");
+static Symbol DEREF = Symbol.create("clojure.core", "deref");
+//static Symbol DEREF_BANG = Symbol.create("clojure.core", "deref!");
static IFn[] macros = new IFn[256];
static IFn[] dispatchMacros = new IFn[256];
@@ -50,7 +50,7 @@ static Pattern intPat = static Pattern ratioPat = Pattern.compile("([-+]?[0-9]+)/([0-9]+)");
static Pattern floatPat = Pattern.compile("[-+]?[0-9]+(\\.[0-9]+)?([eE][-+]?[0-9]+)?[M]?");
static final Symbol SLASH = Symbol.create("/");
-static final Symbol CLOJURE_SLASH = Symbol.create("clojure","/");
+static final Symbol CLOJURE_SLASH = Symbol.create("clojure.core","/");
//static Pattern accessorPat = Pattern.compile("\\.[a-zA-Z_]\\w*");
//static Pattern instanceMemberPat = Pattern.compile("\\.([a-zA-Z_][\\w\\.]*)\\.([a-zA-Z_]\\w*)");
//static Pattern staticMemberPat = Pattern.compile("([a-zA-Z_][\\w\\.]*)\\.([a-zA-Z_]\\w*)");
@@ -270,7 +270,7 @@ static private Object interpretToken(String s) throws Exception{ {
return SLASH;
}
- else if(s.equals("clojure//"))
+ else if(s.equals("clojure.core//"))
{
return CLOJURE_SLASH;
}
diff --git a/src/jvm/clojure/lang/MultiFn.java b/src/jvm/clojure/lang/MultiFn.java index 527a0d38..4f127491 100644 --- a/src/jvm/clojure/lang/MultiFn.java +++ b/src/jvm/clojure/lang/MultiFn.java @@ -23,11 +23,11 @@ IPersistentMap preferTable; IPersistentMap methodCache; Object cachedHierarchy; -static final Var assoc = RT.var("clojure", "assoc"); -static final Var dissoc = RT.var("clojure", "dissoc"); -static final Var isa = RT.var("clojure", "isa?"); -static final Var parents = RT.var("clojure", "parents"); -static final Var hierarchy = RT.var("clojure", "global-hierarchy"); +static final Var assoc = RT.var("clojure.core", "assoc"); +static final Var dissoc = RT.var("clojure.core", "dissoc"); +static final Var isa = RT.var("clojure.core", "isa?"); +static final Var parents = RT.var("clojure.core", "parents"); +static final Var hierarchy = RT.var("clojure.core", "global-hierarchy"); public MultiFn(IFn dispatchFn, Object defaultDispatchVal) throws Exception{ this.dispatchFn = dispatchFn; diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 9ab615e5..741dba22 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -164,7 +164,7 @@ Symbol.create("SuppressWarnings"), SuppressWarnings.class // single instance of UTF-8 Charset, so as to avoid catching UnsupportedCharsetExceptions everywhere static public Charset UTF8 = Charset.forName("UTF-8"); -static public final Namespace CLOJURE_NS = Namespace.findOrCreate(Symbol.create("clojure")); +static public final Namespace CLOJURE_NS = Namespace.findOrCreate(Symbol.create("clojure.core")); //static final Namespace USER_NS = Namespace.findOrCreate(Symbol.create("user")); final static public Var OUT = Var.intern(CLOJURE_NS, Symbol.create("*out*"), new OutputStreamWriter(System.out, UTF8)); @@ -182,7 +182,7 @@ static Keyword LINE_KEY = Keyword.intern(null, "line"); static Keyword FILE_KEY = Keyword.intern(null, "file"); final static public Var USE_CONTEXT_CLASSLOADER = Var.intern(CLOJURE_NS, Symbol.create("*use-context-classloader*"), null); -//final static public Var CURRENT_MODULE = Var.intern(Symbol.create("clojure", "current-module"), +//final static public Var CURRENT_MODULE = Var.intern(Symbol.create("clojure.core", "current-module"), // Module.findOrCreateModule("clojure/user")); final static Symbol LOAD_FILE = Symbol.create("load-file"); @@ -222,7 +222,7 @@ final static IFn inNamespace = new AFn(){ // if(!refers.isBound()) // { // refers.bindRoot(PersistentHashMap.EMPTY); -// Compiler.eval(list(Symbol.create("clojure", "refer"), EXPORTS)); +// Compiler.eval(list(Symbol.create("clojure.core", "refer"), EXPORTS)); // } return ns; } @@ -377,12 +377,12 @@ static public void init() throws Exception{ } static void doInit() throws Exception{ - loadResourceScript(RT.class, "clojure/boot.clj"); + loadResourceScript(RT.class, "clojure/core.clj"); loadResourceScript(RT.class, "clojure/proxy.clj", false); loadResourceScript(RT.class, "clojure/genclass.clj", false); - loadResourceScript(RT.class, "clojure/zip/zip.clj", false); - loadResourceScript(RT.class, "clojure/xml/xml.clj", false); - loadResourceScript(RT.class, "clojure/set/set.clj", false); + loadResourceScript(RT.class, "clojure/zip.clj", false); + loadResourceScript(RT.class, "clojure/xml.clj", false); + loadResourceScript(RT.class, "clojure/set.clj", false); Var.pushThreadBindings( RT.map(CURRENT_NS, CURRENT_NS.get(), @@ -390,10 +390,10 @@ static void doInit() throws Exception{ try { Symbol USER = Symbol.create("user"); - Symbol CLOJURE = Symbol.create("clojure"); + Symbol CLOJURE = Symbol.create("clojure.core"); - Var in_ns = var("clojure", "in-ns"); - Var refer = var("clojure", "refer"); + Var in_ns = var("clojure.core", "in-ns"); + Var refer = var("clojure.core", "refer"); in_ns.invoke(USER); refer.invoke(CLOJURE); maybeLoadResourceScript("user.clj"); diff --git a/src/jvm/clojure/lang/Repl.java b/src/jvm/clojure/lang/Repl.java index daeba5a8..0c31d045 100644 --- a/src/jvm/clojure/lang/Repl.java +++ b/src/jvm/clojure/lang/Repl.java @@ -18,19 +18,19 @@ import java.io.PrintWriter; public class Repl{ static final Symbol USER = Symbol.create("user"); -static final Symbol CLOJURE = Symbol.create("clojure"); +static final Symbol CLOJURE = Symbol.create("clojure.core"); -static final Var in_ns = RT.var("clojure", "in-ns"); -static final Var refer = RT.var("clojure", "refer"); -static final Var ns = RT.var("clojure", "*ns*"); -static final Var warn_on_reflection = RT.var("clojure", "*warn-on-reflection*"); -static final Var print_meta = RT.var("clojure", "*print-meta*"); -static final Var print_length = RT.var("clojure", "*print-length*"); -static final Var print_level = RT.var("clojure", "*print-level*"); -static final Var star1 = RT.var("clojure", "*1"); -static final Var star2 = RT.var("clojure", "*2"); -static final Var star3 = RT.var("clojure", "*3"); -static final Var stare = RT.var("clojure", "*e"); +static final Var in_ns = RT.var("clojure.core", "in-ns"); +static final Var refer = RT.var("clojure.core", "refer"); +static final Var ns = RT.var("clojure.core", "*ns*"); +static final Var warn_on_reflection = RT.var("clojure.core", "*warn-on-reflection*"); +static final Var print_meta = RT.var("clojure.core", "*print-meta*"); +static final Var print_length = RT.var("clojure.core", "*print-length*"); +static final Var print_level = RT.var("clojure.core", "*print-level*"); +static final Var star1 = RT.var("clojure.core", "*1"); +static final Var star2 = RT.var("clojure.core", "*2"); +static final Var star3 = RT.var("clojure.core", "*3"); +static final Var stare = RT.var("clojure.core", "*e"); public static void main(String[] args) throws Exception{ |