[CLJ-1284] Clojure functions and reified objects should expose a public static field to identify their proper Clojure name Created: 24/Oct/13 Updated: 25/Oct/13
|Affects Version/s:||Release 1.5|
|Reporter:||Howard Lewis Ship||Assignee:||Unassigned|
There are several examples of frameworks that attempt to de-mangle a Java class name into a Clojure symbol (including namespace); this is useful for writing out an improved, Clojure-specific stack trace when reporting exceptions.
Existing libraries are based on regular expression matching and guesswork, and can occasionally give incorrect results, such as when a namespace or function name actually contains an underscore.
It would be helpful for authors of such frameworks if Clojure would expose a static final field on such classes with the proper name that should appear in the stack trace; libraries would then be able to use reflection to access the proper name of the field, without the current guesswork.
I would suggest CLOJURE_SOURCE_NAME as a reasonable name for such a field.
Other Clojure class constructs beyond functions, such as reified types and protocol implementations, would also benefit, though it is less obvious what exact string value would properly and unambiguously identify what purpose the class plays.
|Comment by Alex Miller [ 24/Oct/13 8:31 PM ]|
FYI, there is a patch on the way in for 1.6 that contains a new demunge function in Compiler. However, the munged name is not always reversible so having the original around is a good idea.
|Comment by Andy Fingerhut [ 25/Oct/13 11:10 AM ]|
The patch Alex is referring to is attached to
|Comment by Andy Fingerhut [ 25/Oct/13 11:13 AM ]|
Howard, there seems to be some overlap in the intent between this ticket and CLJ-1278. I guess either of them could be done without the other, but wanted to check.