feat(artifacts): may-dispatch over a static string table — J_DISPATCHES_TO with prov: ["table"] - #262
Merged
Merged
Conversation
…261) StringTables closes a dispatch target that is a call into a static String[]/String[][] table with a literal initializer on every entry of the table, one J_DISPATCHES_TO per matching artifact with prov table. DataflowTiers.interprocAll lets the call-graph tier bind a parameter to the union of its callers' literals and tables; literal callers that disagree still refuse, so dataflow edges keep meaning exactly one target. On daytrader8 the graph goes from 3 to 37 dispatch edges and every page in TradeConfig.webUI that exists on disk has an incoming edge.
4 tasks
This file contains hidden or 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
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.
Closes #261. Spec § 4.5, amended on codellm-devkit/.github#80 (
76a8c76).What
StringTables): a dispatch target that is a callT.m(…)whose everyreturnis an array access rooted at a staticString[]/String[][]field ofTwith a literal array initializer closes on every literal in the initializer — oneJ_DISPATCHES_TOper matching artifact,prov: ["table"]. Level-independent: the callee is found by simple type name + method name inside the tree, the body sliced frombody_span; same-named types or same-arity overloads make it give up.DataflowTiers.interprocAll): a parameter binds to the union of its callers' literals and tables;provistablewhen any table contributed. Literal callers that disagree still refuse, sodataflowedges keep meaning exactly one target — onlytableedges are many-per-site.provonview_dispatches/J_DISPATCHES_TOis nowliteral | table | dataflow;tableis listed as attempted only for a call-shaped target. No catalog orschema.neo4j.jsonchange; README andSCHEMA_DECISIONS.mdD33.daytrader8, built jar vs released 3.3.0
view_dispatchestableTradeConfig.webUIentries on disk reachedno-such-artifactroutes, 15non-literal)-a 1 ⊆ -a 4holds and the three 3.3.0 literal edges are unchanged. Unreached:PingJsp.jsp,PingJspEL.jsp,sample.jsp(URL-addressable pages, no dispatch to them) anderror.jsp(web.xmlerror-page — roadmap Group E).Tests
ViewTableTierTest: closes on every entry at-a 1with the servlet URL contributing nothing; a table naming no file isno-such-artifactwithprov: ["literal", "table"]; a computed return and a field without a literal initializer refuse; a parameter bound to a table and a literal unions at-a 4and staysnon-literalat-a 3. Existing dispatch, config-use and dataflow-tier tests unchanged and green. Full suite: 600 tests, only the Docker-only integration test unrun.Finding, filed separately
TradeServletAction.requestDispatch(ctx, req, resp, page)— the dispatch site on DayTrader's real action path — still refuses at-a 4: the Jakarta finder marks any method with anHttpServletRequestparameter as an entrypoint, and the call-graph tier rightly refuses to bind an entrypoint's parameter from call sites. The finder's heuristic, not this tier, is what needs looking at.