Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .ripwire_quality_acks

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ live in `src/ingest_*.h` sections compiled into that one TU — the same section
crawl + parse setup (`ingest_crawl.h`), the raw-facts model + incremental-cache codec
(`ingest_cache.h`), structural metrics (`ingest_metrics.h`), cross-symbol relation capture
(`ingest_relations.h`), the markdown section tier (`ingest_docs.h`), name resolution + capture
policy (`ingest_names.h`), local-binding capture (`ingest_binds.h`), parse infrastructure + the
policy (`ingest_names.h`), local-binding capture (`ingest_binds.h`), Ruby's Rails/DSL capture lane
(`ingest_ruby.h`), parse infrastructure + the
fused side-capture passes (`ingest_sidecap.h`), and the `--match`/`--lint` query tail
(`ingest_astquery.h`). The 2026-08-30 follow-on decomposed `ingest()`'s own body into four phase
sections in call order: the lazy tags.scm prewarm (`ingest_prewarm.h`), the parallel parse pool
Expand Down
2 changes: 1 addition & 1 deletion queries/ruby/tags.scm
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@
; The Rails schema capture (test/rubyschemacheck.sh): a file whose tree holds a
; `create_table "x", … do |t| … end` call is a rendered db/schema.rb (content-gated — path plays no
; part), and each `t.<type> "name"` / `t.<type> :name` in the table block mints ONE data-kind def
; (SymKind::Section at Lang::Ruby, see model.h) via the C++ side-capture in ingest_names.h, span = the
; (SymKind::Section at Lang::Ruby, see model.h) via the C++ side-capture in ingest_ruby.h, span = the
; name token — Rails-generated attribute uses (`product.price`) resolve to the column as a def.
; DEFINITIONS ONLY by maintainer decision: the defs answer --uses/--grep/--whereis, but buildGraph's
; byName skips Section-Ruby, so columns admit NO call edges, only the restart share every def gets (untyped-receiver
Expand Down
4 changes: 4 additions & 0 deletions scripts/optremarks.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,10 @@
"Elixir-specific capture helpers: per node, but for one grammar with a small corpus share. Same argument as ingest_jsimports.h above." ),
( "src/ingest_clojure.h",
"Clojure-specific capture helpers: per query capture, but only for Clojure files. Same corpus-share argument as ingest_elixir.h above." ),
( "src/ingest_ruby.h",
"Ruby's Rails/DSL capture lane (schema columns, Jbuilder typing, the factory and class-side DSL walks): per node, but behind "
"the contains-\"attr\" / contains-\"create_table\" per-file early-outs and one grammar family's corpus share. Same argument as "
"ingest_jsimports.h and ingest_elixir.h above; the general per-node walk shapes it was carved from stay covered by ingest_binds.h." ),
# ── per-DIRECTIVE, where every hot ingest section above is per-node or per-file ────────────────────
( "src/ingest_importcap.h",
"the shared @import.path capture vocabulary (issue #358), carrying the C family for now. It is called from ONE place in ingest_sidecap.h and runs once per captured "
Expand Down
2 changes: 1 addition & 1 deletion src/graph.h
Original file line number Diff line number Diff line change
Expand Up @@ -4884,7 +4884,7 @@ inline void rubyInstanceForwarders( const IngestResult& ing, HashMap<std::string
}
}

// Every FactoryBot factory the tree defines → the class it builds (ingest_binds.h captureRubyFactories); a name two
// Every FactoryBot factory the tree defines → the class it builds (ingest_ruby.h captureRubyFactories); a name two
// definitions give different classes is a tombstone: it types nothing. Every trailing path of every constant the tree
// opens, which a qualified constant must be. And which of RSpec's builders the tree defines a method of the name of.
inline RubyTypedReceivers buildRubyTypedReceivers( const IngestResult& ing, const RubySelfReach& reach, const RubyBaseScope& bases,
Expand Down
1 change: 1 addition & 0 deletions src/ingest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ extern "C"
#include "ingest_binds.h"
#include "ingest_elixir.h"
#include "ingest_clojure.h"
#include "ingest_ruby.h" // Ruby Rails/DSL capture lane (schema columns, Jbuilder typing, factories, class-side DSL walks) - carved verbatim 2026-10-12
#include "ingest_importcap.h"
#include "ingest_valuerefs.h"
#include "ingest_sidecap.h"
Expand Down
543 changes: 0 additions & 543 deletions src/ingest_binds.h

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/ingest_cache.h
Original file line number Diff line number Diff line change
Expand Up @@ -488,7 +488,7 @@ constexpr std::uint32_t kParserVer = 171; // bump on any grammar/.sc
// build, a let or local holding one) carries its type in the
// call RawRef's recvVar (FE-B on #373 moved it to memberCtor/memberVia), and each
// FactoryBot `factory` mints a RawBind of the APPENDED kind
// LocalBindKind::RubyFactory (ingest_binds.h). Same layout:
// LocalBindKind::RubyFactory (ingest_ruby.h). Same layout:
// kCacheVersion unchanged (27). A Ruby cache written at 131
// holds untyped receivers and no factories and must re-parse.
// 131 = 2026-10-02 (test/rubyreachcheck.sh): a Ruby MIXIN is an
Expand Down
2 changes: 1 addition & 1 deletion src/ingest_crawl.h
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ constexpr std::array<LangEntry, 57> kLangTable = {{
{ ".rb", Lang::Ruby, &tree_sitter_ruby, "ruby" }, // Ruby — class/module/def + method calls + require
// A Rake task file and a Jbuilder view are plain Ruby (test/rubyrakejbuildercheck.sh, parser version 135): what a
// task or a JSON view calls is a caller like any other. Outside any class their self is known — Rake's `main`, the
// view — and graph.h RubyTopSelf reads it; a `.jbuilder` file's `json` is the template's (ingest_binds.h).
// view — and graph.h RubyTopSelf reads it; a `.jbuilder` file's `json` is the template's (ingest_ruby.h).
{ ".rake", Lang::Ruby, &tree_sitter_ruby, "ruby" },
{ kJbuilderExt, Lang::Ruby, &tree_sitter_ruby, "ruby" },
{ ".json", Lang::Json, &tree_sitter_json, "json" }, // JSON — top-level + 2nd-level object keys as t="sec"; DATA, no call edges
Expand Down
Loading
Loading