I'm not sure this is the correct place for this, but the GitHub page led me 
to this place.
 
I believe I have found a problem in the 1.5.1 ClojureCLR currently on 
GitHub. The problem is with the initialization of the static Compiler class.
 
According to section 10.4.5.1 of the MSDN documentation, the fields of a 
static class are evaluated "in textual order".
 
Unfortunately, this line:
 
public static readonly Symbol FnOnceSym = (Symbol) 
Symbol.intern("fn*").withMeta(RT.map(Keyword.intern(null, "once"), true));
 
 
comes before this line:
 
static Dictionary<String, Type> _duplicateTypeMap = new Dictionary<string, 
Type>();
 
The evaluation of the first causes a call to the static method 
FindDuplicateType() within the same class, and this method uses the 
_duplicateTypeMap without a null check. This causes a null exception to be 
thrown because the initializer for _duplicateTypeMap hasn't executed yet.
 
My solution is to add a section at the very top of the Compiler class for 
"dependency" intializations - consisiting only of the initialization of 
_duplicateTypeMap at this point, to give a home to all such initializations 
that get used by the other static initializers.
 
There is no "Issues" section on the GitHub page, or I would have logged an 
issue there. Please let me know the best way to get this issue evaluated 
for a future release of the compiler.
 
Brian C. Barnes
 

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to