<< Back to previous view

[TANAL-100] Fix method matcher Created: 31/Oct/14  Updated: 15/Nov/14

Status: Open
Project: tools.analyzer
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Defect Priority: Blocker
Reporter: Nicola Mometto Assignee: Nicola Mometto
Resolution: Unresolved Votes: 0
Labels: None


 Description   

places to fix:

jvm.utils/try-best-match
passes.jvm.annotate-methods
passes.jvm.validate/validate-call



 Comments   
Comment by Nicola Mometto [ 15/Nov/14 2:13 PM ]

Some symptoms: http://dev.clojure.org/jira/browse/TANAL-105, reflection warnings for Utils/equals analyzing core.rrb-vectors





[TANAL-85] enhance validations in t.a.js Created: 10/Aug/14  Updated: 17/Oct/14

Status: Open
Project: tools.analyzer
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Critical
Reporter: Nicola Mometto Assignee: Nicola Mometto
Resolution: Unresolved Votes: 0
Labels: None


 Description   

This includes:

  • validating :new nodes
  • validating protocol/types usage
  • better error messages on non-valid 'ns forms





[TANAL-84] Simplify tag handling for castings/nil insertion/value popping Created: 25/Jul/14  Updated: 25/Jul/14

Status: Open
Project: tools.analyzer
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Enhancement Priority: Major
Reporter: Nicola Mometto Assignee: Nicola Mometto
Resolution: Unresolved Votes: 0
Labels: None


 Description   

Currently the compiler uses the op type, o-tag, tag and the context to figure out where to put casts, where to insert nils or where to pop a value off the stack.
This doesn't work well as it's really hard to figure out when it's actually necessary to e.g. pop a value or if it has already been removed from the stack.
Ideally the analyzer should provide more information to the emitter so that it's easier to understand when and where a casting/nil insertion/value popping is necessary






[TANAL-107] Latest t.a(.j) throws exception during analyze+eval of core.match Created: 21/Dec/14  Updated: 21/Dec/14

Status: Open
Project: tools.analyzer
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Defect Priority: Major
Reporter: Andy Fingerhut Assignee: Nicola Mometto
Resolution: Unresolved Votes: 0
Labels: None


 Description   

Tag eastwood-0.2.1-alpha2 of Eastwood uses t.a(.j) of about 4 weeks ago, and does not have this crash.

Branch update-tanal of Eastwood, latest master as of Dec 21 2014, does have this crash.

Reproduce steps:

Go to directory crucible and run ./clone.sh if not already done, to create the directory repos/core.match-2014-03-05 beneath that.

cd repos/core.match-2014-03-05
lein eastwood

With version 0.2.1-alpha2 and older t.a(.j), no exception.
With latest Eastwood on branch update-tanal, an exception that begins with:

== Linting clojure.core.match.test.date ==
src/test/clojure/clojure/core/match/test/date.clj:4:9: unlimited-use: Unlimited use of (clojure.core.match.date) in clojure.core.match.test.date
Exception thrown during phase :analyze+eval of linting namespace clojure.core.match.test.date
Got exception with extra ex-data:
    msg='No such namespace: cljs.core'
    (keys dat)=(:end-line :file :line :column :end-column :ns :form)
    (:form dat)=
^{:line 1179} cljs.core/ILookup

ExceptionInfo No such namespace: cljs.core
	clojure.core/ex-info (core.clj:4327)
	eastwood.copieddeps.dep2.clojure.tools.analyzer.passes.jvm.validate/eval2044/fn--2046 (validate.clj:47)

I may keep investigating to narrow down the cause, but I am currently wondering whether there is a Var clojurescript has the wrong value, or is being looked up in the wrong environment.






[TANAL-108] Latest t.a(.j) throws exception during analyze+eval of namespaces instaparse.gll Created: 21/Dec/14  Updated: 21/Dec/14

Status: Open
Project: tools.analyzer
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Defect Priority: Major
Reporter: Andy Fingerhut Assignee: Nicola Mometto
Resolution: Unresolved Votes: 0
Labels: None


 Description   

I haven't determined whether this and TANAL-107 are related – they might be. This one seems to have fewer 'moving parts', i.e. fewer interdependent things causing it.

Reproduce steps:

Get latest Eastwood, checkout update-tanal branch, update to latest master, change to crucible/repos/instaparse-<date> directory:

lein eastwood

First few lines of exception message:

== Eastwood 0.2.1-SNAPSHOT Clojure 1.5.1 JVM 1.7.0_45
== Linting instaparse.gll ==
Exception thrown during phase :analyze+eval of linting namespace instaparse.gll
Got exception with extra ex-data:
    msg='No such var: instaparse.gll'
    (keys dat)=(:end-line :file :line :column :end-column :form)
    (:form dat)=
instaparse.gll/pprint

ExceptionInfo No such var: instaparse.gll
	clojure.core/ex-info (core.clj:4327)
	eastwood.copieddeps.dep2.clojure.tools.analyzer.passes.jvm.validate/eval2044/fn--2046 (validate.clj:43)
	clojure.lang.MultiFn.invoke (MultiFn.java:227)
	eastwood.copieddeps.dep2.clojure.tools.analyzer.passes.jvm.validate/validate (validate.clj:265)
	clojure.lang.Var.invoke (Var.java:415)
	eastwood.copieddeps.dep1.clojure.tools.analyzer.passes/compile-passes/fn--522/fn--527 (passes.clj:171)





[TANAL-42] Document the AST nodes && the passes Created: 03/Jan/14  Updated: 02/Aug/14

Status: Open
Project: tools.analyzer
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Minor
Reporter: Nicola Mometto Assignee: Nicola Mometto
Resolution: Unresolved Votes: 0
Labels: None


 Comments   
Comment by Max Kreminski [ 19/Apr/14 5:11 PM ]

I put together a quick reference to the AST node structures a few days ago when trying to identify discrepancies between the tools.analyzer AST format and the internal AST format used by the ClojureScript compiler. It's nowhere near as complete as it could be, but I figured I'd post it here just in case it winds up being useful when writing official docs.

http://mkremins.github.io/clojure-ast-ref/

Comment by Nicola Mometto [ 19/Apr/14 5:36 PM ]

At first glance it looks really well done.
I'll take some time to review it and contribute if necessary, in the mean time if you want you can add a link pointing at your quickref in the tools.analyzer wiki.

Thanks

Comment by Ian Tegebo [ 29/May/14 12:59 AM ]

It appears incomplete, e.g. :static-call is missing. This appears to be because it's added not by tools.analyzer but by tools.analyzer.jvm; is the intention that platform-specific AST nodes are to be considered hidden implementation details?

If not, should a separate issue requesting documentation be filed with the "concrete" platforms, e.g. jvm.tools.analyzer?

Comment by Max Kreminski [ 02/Jun/14 11:49 AM ]

I haven't yet had time to document the platform-specific node types added by tools.analyzer.{jvm,js}, although I do intend to add them to the quickref in the near future.

jvm.tools.analyzer appears to use a similar but incompatible AST format, which I currently don't plan on trying to document in the quickref. Filing a separate issue on that project might be the best way to move forward there.

Comment by Andy Fingerhut [ 03/Jun/14 11:21 AM ]

jvm.tools.analyzer is probably not worth documenting at this time, except for historical purposes. tools.analyzer.{jvm,js} are far more likely to be maintained and enhanced in the future.

Comment by Ian Tegebo [ 03/Jun/14 11:58 AM ]

Oops, I think I introduced some confusion when I mistakenly referenced jvm.tools.analyzer. I did so because I didn't see a JIRA project for tools.analyzer.jvm.

On 29/May14 12:59 AM, I meant "... the 'concrete' platforms, e.g. tools.analyzer.{jvm,js} ...".

As an aside, had anyone considered a slight rewrite of the code so that AST (reference) documentation can be extracted rather than separately maintained?

Comment by Nicola Mometto [ 02/Aug/14 7:12 AM ]

This has been addressed mostly with the official AST quickrefs: http://clojure.github.io/tools.analyzer/doc/quickref.html and http://clojure.github.io/tools.analyzer.jvm/doc/quickref.html

I'm changing the priority to minor





Generated at Mon Dec 22 01:47:43 CST 2014 using JIRA 4.4#649-r158309.