Repository navigation
Java call graph: a constructor's super(...) is a call to the superclass constructor (Part of #3772) - #6456
Conversation
|
No description provided. |
|
No description provided. |
|
PR #6456 @ 687c3a0: 2 failed check(s) == full-suite part 1/3 (failure) -- real == shard 2 (1666363 LOC) (failure) -- real |
…es, broken implements headers (Part of #3772) mochadoom's DOOM-rosetta call-graph check went red (1175 engine-only edges): a nested class name repeated across files merged its parents, a lowercase class name and a header broken before `implements` dropped the edge. The oracle now counts a Java super(...) as a call to the extends type. Contract test updated: java super(...) is a call since #3772. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
CI shepherd: the head of this PR (e656d9f) is not the one a maintainer labelled |
1 similar comment
|
CI shepherd: the head of this PR (e656d9f) is not the one a maintainer labelled |
|
No description provided. |
|
No description provided. |
Part of #3772.
Java
not_extracted/otherbucket vs scip-java 0.12.3 (gson), slice A: a constructor'ssuper(...)is now a call to the superclass constructor.detector.py):superstays in_calls_out_ignore(sosuper.m()and non-constructors are untouched), but a baresuper(in an uppercase-named unit with arity tracking is kept, with its argument counts, likethis(...)from Java call resolver: calls to a sibling overload of the same name and this(...) chaining are edges, not recursion (Part of #3772) #6424.call_resolver.py,_expand_super_ctor): thesupercallee becomes the unit's direct in-repo superclass (generic arguments stripped:extends Base<T>namesBase), and the existing class -> constructor -> overload choice by argument count does the rest. A parent outside the repo (Exception) leaves no call, as before.Class / Sibling gaps
Class: a Java constructor call that
calls_out_todrops (reference sees an edge to the superclass or class constructor). Handled here:super(...)chaining (arity overloads, nested class, cross-file parent, generic parent, out-of-repo parent,super.m()unchanged).Sibling gap:
new TypeToken<A<B<C>>>() {}anonymous generic subclass and its chained.getType()/ enclosinggson.fromJson(...)(about 21 edges left in the bucket). It goes through the shared JVM patternCALLS_OUT_C_STYLE_GENERIC_NO_ANNOTATION(_shared_patterns.py, #4124, also kotlin and groovy), so it needs its own PR with a wider golden check. No burned estate needs it.Known limit: a qualified parent (
extends Outer.Base<T>) is recorded by the class extractor asOuter, sosuper(...)there would targetOuter; the same weakness already feeds method lineage. Not touched here.Evidence
callgraph_triage.py java:not_extracted/other49 -> 21; recall 72.2% -> 72.5%; precision 99.8% unchanged;wrong12 unchanged.callgraph_check.py --langs java: gate, tests, crucible (both modes, no golden drift), tree-sitter all PASS; baseline regenerated.pr_gates --fast7/7,--ratchets9/9 (no skips). New test file also run with plainpytestfrom/tmp.Hand-written files: 3 (detector, resolver, one test); baseline regenerated.
🤖 Generated with Claude Code
Checklist: partial [c:e759db1c] -- Java call-graph accuracy (super(...) edges) only; the SCIP shared-route evaluation is not done