Skip to content

fix(stdlib): defn records a qualified arglist :tag, sort carries metadata - #164

Merged
skydread1 merged 3 commits into
developfrom
fix/core-qualified-tag-and-sort-meta
Sep 2, 2026
Merged

fix(stdlib): defn records a qualified arglist :tag, sort carries metadata#164
skydread1 merged 3 commits into
developfrom
fix/core-qualified-tag-and-sort-meta

Conversation

@skydread1

@skydread1 skydread1 commented Sep 2, 2026

Copy link
Copy Markdown
Member

Closes #162, Closes #163

  • resolve-tag writes .FullName, so a defn arglist :tag records a qualified name that resolves from any namespace.
  • sort wraps its result with (meta coll), so the sorted seq keeps the collection's metadata.
  • clojure.instant refreshes too: instant.clj:265 carries the stdlib's one dotless ^DateTimeOffset arglist tag, so its recorded name gains the System. prefix.

resolve-tag writes (.FullName c), so a hint like ^Regex is stored as
System.Text.RegularExpressions.Regex and resolves from any namespace. It
wrote (.Name c), which drops the namespace, defeating the point of the
branch: it exists to turn a short tag into a name that stands on its own.

The analyzer infers an invoke's static type from the matching arglist's
tag, so this changes emission wherever a dotless tag is recorded.
sort wraps its result with (meta coll), so the sorted seq keeps the
metadata, as Clojure 1.10 does. sort-by goes through sort and gains it too.
@skydread1 skydread1 self-assigned this Sep 2, 2026
@skydread1
skydread1 merged commit a5195ad into develop Sep 2, 2026
1 check passed
@skydread1
skydread1 deleted the fix/core-qualified-tag-and-sort-meta branch September 2, 2026 08:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

sort and sort-by drop the collection's metadata A defn arglist :tag is recorded unqualified, so it does not resolve outside the defining namespace

1 participant