tools.analyzer

Details

Type:
Task

Status:
Closed

Priority:
Minor

Resolution:
Completed

Affects Version/s:
None

Fix Version/s:
None

Component/s:
None

Labels:

None

Description

This is not necessarily a bug, but it is a change that resulted from the most recent commits (last 1 or 2 days) to tools.analyzer(.jvm). With current latest versions of these and Eastwood, and pantomime (part of Eastwood crucible), this command causes no exception to be thrown during analysis:

lein eastwood '{:namespaces [ pantomime.media ]}'

Before the most recent commits to tools.analyzer(.jvm), there was an exception due to line 97 in the source file because of a ^Map type hint on a locally bound symbol in a when-let form.

Activity

Andy, I'm currently working on making tools.analyzer.jvm and tools.emitter.jvm play nice with each other again, the tag handling situation is a bit problematic and I'm working on making it simpler for t.e.j to handle casting.

Expect things to be broken in master for a couple of days until thing settle down.

Nicola Mometto
added a comment - 24/Jan/14 5:31 AM Andy, I'm currently working on making tools.analyzer.jvm and tools.emitter.jvm play nice with each other again, the tag handling situation is a bit problematic and I'm working on making it simpler for t.e.j to handle casting.
Expect things to be broken in master for a couple of days until thing settle down.

Should be back to the previous behaviour now.
One thing to notice is that I removed :ret-tag and :bind-tag, now every expression has both :tag and :o-tag.
:o-tag represents the effective type of the expression, while :tag represents the "needed" tag of the expression.

E.g

^clojure.lang.IPersistentVector []

will have clojure.lang.IPersistentVector as :tag and clojure.lang.PersistentVector as :o-tag.

This means that that we're not throwing any :tag-kind anymore since it all got unified. This will probably require some changes to eastwood.

Nicola Mometto
added a comment - 25/Jan/14 11:47 AM Should be back to the previous behaviour now.
One thing to notice is that I removed :ret-tag and :bind-tag, now every expression has both :tag and :o-tag.
:o-tag represents the effective type of the expression, while :tag represents the "needed" tag of the expression.
E.g

^clojure.lang.IPersistentVector []

will have clojure.lang.IPersistentVector as :tag and clojure.lang.PersistentVector as :o-tag.
This means that that we're not throwing any :tag-kind anymore since it all got unified. This will probably require some changes to eastwood.

OK, latest t.a(.jvm) is back to throwing an exception on that code now. I have updated Eastwood to no longer use :tag-kind for deciding what kind of error messages to print when a "Can't find class" exception is thrown. I believe nothing else in Eastwood depended upon :ret-tag or :bind-tag

Andy Fingerhut
added a comment - 26/Jan/14 12:22 PM OK, latest t.a(.jvm) is back to throwing an exception on that code now. I have updated Eastwood to no longer use :tag-kind for deciding what kind of error messages to print when a "Can't find class" exception is thrown. I believe nothing else in Eastwood depended upon :ret-tag or :bind-tag