Pre-flight checks
What happened?
#3795 is fixed for type references: base types and parameter types no longer resolve to enum
members. Calls still do. Invoking a delegate-typed field gets a calls edge to an enum member
that shares the field's name.
Steps to reproduce
`Eval.cs`:
namespace Demo
{
public delegate float Curve(float t);
public class Eval
{
public enum Kind { Linear, Delegate }
public Kind Mode;
public Curve Delegate;
public float Evaluate(float t)
{
switch (Mode) { case Kind.Delegate: return Delegate != null ? Delegate(t) : t; default: return t; }
}
}
}
`graphify extract . --code-only`
Error output or graph output
### Actual
eval_demo_eval_evaluate --calls--> eval_demo_kind_delegate
`eval_demo_kind_delegate` is the enum member `Kind.Delegate`.
### Expected
No `calls` edge to `Kind.Delegate`. An enum member (or a property) can never be the target of a
call. `Delegate(t)` invokes the field; with no project method to point at, it gets no edge (or an
`unresolved_calls` entry).
Graphify version
0.9.80
Operating System
Windows
Python Version
3.13
Installation Method
pip
Additional Environment Details
No response
Additional context
In a ~120-file Unity project, 5 calls still land on enum members on 0.9.80. The other shapes
are inj.Handles[i].Pause() landing on an enum member Pause, and
store.Vector2[idx] = new Vector2(...) (also Vector3, Quaternion) landing on enum members of
those names. Excluding enum members and properties from call-target lookup, as #3795 did for type
lookup, would cover all of them.
Pre-flight checks
What happened?
#3795 is fixed for type references: base types and parameter types no longer resolve to enum
members. Calls still do. Invoking a delegate-typed field gets a
callsedge to an enum memberthat shares the field's name.
Steps to reproduce
Error output or graph output
Graphify version
0.9.80
Operating System
Windows
Python Version
3.13
Installation Method
pip
Additional Environment Details
No response
Additional context
In a ~120-file Unity project, 5 calls still land on enum members on 0.9.80. The other shapes
are
inj.Handles[i].Pause()landing on an enum memberPause, andstore.Vector2[idx] = new Vector2(...)(alsoVector3,Quaternion) landing on enum members ofthose names. Excluding enum members and properties from call-target lookup, as #3795 did for type
lookup, would cover all of them.