You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Tags pass: evaluate #eq?/#any-of?/#not-any-of? so keyword tables move out of C++ #355
Part of the language-architecture cleanup tracked in #354 ("common stays common").
Problem. The tags pass never evaluates tree-sitter query predicates (see the notes in queries/javascript/tags.scm and queries/cpp/tags.scm). So any language whose definitions are a call with a keyword head (Elixir def/defmodule, Clojure defn in #349, Ruby DSLs) has to keep its keyword list in C++. That is most of why src/ingest_elixir.h exists, and there are two near-identical copies of the idea already (elixirFunctionKeyword/elixirMetadataAttribute in ingest_elixir.h and macroBodyKeyword in ingest_relations.h, 0.82–0.96 similar by ripwire --clones).
Change. Evaluate the string predicates #eq?, #any-of? and #not-any-of? in the tags pass, reusing the predicate loop that src/ingest_astquery.h already has. No #match? regex in the tags pass (the performance note at ingest_astquery.h explains why). Then move one keyword table (Elixir's is the natural first) into its tags.scm.
Acceptance.
A gate, written red first, with a tiny fixture per predicate.
Every existing language's output is byte-identical (existing goldens + a before/after map on the test fixtures).
kParserVer + kIngestParserVerMirror bumped together to the number a maintainer reserves for you (ask in the PR).
Size: 1–2 days. Maintainers plan to start this on 2026-09-30 unless someone claims it first; comment here to claim it.
Adding to this from the #373 review (Ruby method lookup): its framework name tables (RSpec expectation and matcher targets, FactoryBot builders, Rails callback / if:/unless: / rescue_from … with: declarations, the send/try/method(:m) family, delegation) are written as C++ in the Ruby path. They are good candidates for the same move as the Elixir/Clojure keyword tables here: string predicates in tags.scm, so the next language's framework tables are data too. Not blocking #373, which followed the current architecture.
Activity
joyful-ii-V-I commentedon Oct 4, 2026
Adding to this from the #373 review (Ruby method lookup): its framework name tables (RSpec expectation and matcher targets, FactoryBot builders, Rails callback /
if:/unless:/rescue_from … with:declarations, thesend/try/method(:m)family, delegation) are written as C++ in the Ruby path. They are good candidates for the same move as the Elixir/Clojure keyword tables here: string predicates intags.scm, so the next language's framework tables are data too. Not blocking #373, which followed the current architecture.