-
-
Notifications
You must be signed in to change notification settings - Fork 90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
satisfies? finds protocols that have no methods #786
Merged
borkdude
merged 9 commits into
babashka:master
from
lilactown:lilactown/satisiefs-no-methods
Aug 2, 2022
Merged
satisfies? finds protocols that have no methods #786
borkdude
merged 9 commits into
babashka:master
from
lilactown:lilactown/satisiefs-no-methods
Aug 2, 2022
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
lilactown
commented
Jul 30, 2022
borkdude
reviewed
Jul 31, 2022
borkdude
reviewed
Jul 31, 2022
Perhaps move this to a "private" namespace. There are some of those in |
@borkdude I've update this PR to use just |
@lilactown Excellent! |
borkdude
added a commit
that referenced
this pull request
Aug 2, 2022
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Please answer the following questions and leave the below in as part of your PR.
Fixes #785
The crux of the issue is that the way that
satisfies?
currently turns a type into a symbol,sci/src/sci/impl/protocols.cljc
Lines 245 to 251 in 3e068bb
does not match the way that
extend-type
andextend-protocol
do when adding the metadata to the protocolsci/src/sci/impl/protocols.cljc
Lines 232 to 235 in 3e068bb
This PR attempts to unify the way we coerce the type to a symbol between
extend-type
,extend-protocol
andsatisfies?
.In addition, it also exposes a new var
clojure.core/type->str
. The rationale for it is we need to use the same machinery in two different contexts: a macro context inextend-type
andextend-protocol
, and at runtime insatisfies?
. I could emit the code directly in the macro context instead, but I thought it would be better for maintenance purposes to have everything refer to a single function.There also already exists a type->str function in CLJS, so the only maybe-surprising thing for consumers is that there now exists a
clojure.core/type->symbol
function in SCI that doesn't exist in JVM Clojure.