tools.analyzer

An exception is no longer thrown while linting project pantomime namespace pantomime.media

Details

  • Type: Task Task
  • Status: Closed Closed
  • Priority: Minor 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

Hide
Nicola Mometto added a comment -

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.

Show
Nicola Mometto added a comment - 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.
Hide
Andy Fingerhut added a comment -

No problem, and sorry for the noise. If you remember, let me know when you think things are settled down and I will update and test then.

Show
Andy Fingerhut added a comment - No problem, and sorry for the noise. If you remember, let me know when you think things are settled down and I will update and test then.
Hide
Nicola Mometto added a comment -

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.

Show
Nicola Mometto added a comment - 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.
Hide
Andy Fingerhut added a comment -

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

Show
Andy Fingerhut added a comment - 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
Hide
Nicola Mometto added a comment -

Ok, I'm closing the ticket then.

Show
Nicola Mometto added a comment - Ok, I'm closing the ticket then.

People

Vote (0)
Watch (1)

Dates

  • Created:
    Updated:
    Resolved: