defprotocol doesn't resolve tag classnames

Description

defprotocol doesn't resolve tag classnames, this results in exceptions being thrown when the declared protocol uses as a tag an imported class that is not imported in the namespace that uses it.

Patch: clj-1180-4.patch

Screened by:

Environment

None

Activity

Show:
Alex Miller
January 18, 2016, 10:50 PM

Patch updates for current master, retains attribution.

Alex Miller
March 3, 2020, 3:58 PM

-3 patch uses resolve instead of opening up the compiler, per Rich

Nicola Mometto
March 3, 2020, 4:08 PM
Edited

resolve is not correct, it breaks special type hints like `longs`:
With -2:

With -3:

Alex Miller
March 3, 2020, 4:27 PM

Seems like there should be tests to check these cases

Nicola Mometto
March 3, 2020, 4:37 PM

-4 uses compiler functions that are already public and used in defn, and adds regression test for longs hinting

Assignee

Unassigned

Reporter

Nicola Mometto

Labels

Approval

Incomplete

Patch

Code and Test

Fix versions

Affects versions

Priority

Major