-
Notifications
You must be signed in to change notification settings - Fork 1.8k
JS: Incremental API graph #20733
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
JS: Incremental API graph #20733
Conversation
| private import semmle.javascript.dataflow.TypeTracking | ||
| private module Stage1Input implements StageInputSig { | ||
| pragma[inline] | ||
| predicate isAdditionalUseRoot(Node node) { none() } |
Check warning
Code scanning / CodeQL
Cannot inline predicate across overlay frontier Warning
| t = useStep(nd, promisified, boundArgs, prop, result) | ||
| } | ||
| pragma[inline] | ||
| predicate isAdditionalDefRoot(Node node) { none() } |
Check warning
Code scanning / CodeQL
Cannot inline predicate across overlay frontier Warning
|
|
||
| pragma[nomagic] | ||
| private predicate shouldTrackIntoOverlay(DataFlow::SourceNode nd) { | ||
| exists(DataFlow::Node overlayNode | |
Check warning
Code scanning / CodeQL
Omittable 'exists' variable Warning
in this argument
|
|
||
| pragma[nomagic] | ||
| private predicate shouldBacktrackIntoOverlay(DataFlow::SourceNode nd) { | ||
| exists(DataFlow::Node overlayNode | |
Check warning
Code scanning / CodeQL
Omittable 'exists' variable Warning
in this argument
| private module Debug { | ||
| private module FullInput implements StageInputSig { | ||
| pragma[inline] | ||
| predicate isAdditionalUseRoot(Node node) { none() } |
Check warning
Code scanning / CodeQL
Cannot inline predicate across overlay frontier Warning
| predicate inScope(DataFlow::Node node) { any() } | ||
| } | ||
|
|
||
| private module Full = Stage<FullInput>; |
Check warning
Code scanning / CodeQL
Dead code Warning
|
|
||
| private module Full = Stage<FullInput>; | ||
|
|
||
| query predicate missingDefNode(DataFlow::Node node) { |
Check warning
Code scanning / CodeQL
Dead code Warning
| not exists(MkDef(node)) | ||
| } | ||
|
|
||
| query predicate missingUseNode(DataFlow::Node node) { |
Check warning
Code scanning / CodeQL
Dead code Warning
| not exists(MkUse(node)) | ||
| } | ||
|
|
||
| query predicate lostEdge(Node pred, Label::ApiLabel lbl, Node succ) { |
Check warning
Code scanning / CodeQL
Dead code Warning
| not Cached::edge(pred, lbl, succ) | ||
| } | ||
|
|
||
| query predicate counts(int numEdges, int numOverlayEdges, float ratio) { |
Check warning
Code scanning / CodeQL
Dead code Warning
2e5779a to
c8abbdc
Compare
c8abbdc to
e1a113c
Compare
Simply wraps everything in 'cached private module Stage {}' and adds 'import Stage'.
The diff is large because of indentation changes.
This is needed for localizing ApiLabel later
This was initially lost after rebasing with indentation changes
Some abstract classes defines fields without binding them, leaving it up to the subclasses to bind them. When combined with overlay[local?], the charpred for such an abstract class can become local, while the subclasses are global. The means the charpred needs to be materialized, even though it doesn't bind the fields, leading to a cartesian product.
e1a113c to
3cb97e6
Compare
No description provided.