circle-ir 4.15.0 → 4.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configs/sinks/golang.json +4 -4
- package/dist/analysis/config-loader.d.ts.map +1 -1
- package/dist/analysis/config-loader.js +11 -7
- package/dist/analysis/config-loader.js.map +1 -1
- package/dist/analysis/constant-caller-gate.d.ts +39 -0
- package/dist/analysis/constant-caller-gate.d.ts.map +1 -0
- package/dist/analysis/constant-caller-gate.js +298 -0
- package/dist/analysis/constant-caller-gate.js.map +1 -0
- package/dist/analysis/constant-propagation/evaluator.d.ts.map +1 -1
- package/dist/analysis/constant-propagation/evaluator.js +3 -1
- package/dist/analysis/constant-propagation/evaluator.js.map +1 -1
- package/dist/analysis/constant-propagation/patterns.d.ts +19 -0
- package/dist/analysis/constant-propagation/patterns.d.ts.map +1 -1
- package/dist/analysis/constant-propagation/patterns.js +33 -0
- package/dist/analysis/constant-propagation/patterns.js.map +1 -1
- package/dist/analysis/constant-propagation/propagator.d.ts +59 -0
- package/dist/analysis/constant-propagation/propagator.d.ts.map +1 -1
- package/dist/analysis/constant-propagation/propagator.js +396 -49
- package/dist/analysis/constant-propagation/propagator.js.map +1 -1
- package/dist/analysis/constant-propagation/types.d.ts +9 -0
- package/dist/analysis/constant-propagation/types.d.ts.map +1 -1
- package/dist/analysis/findings.d.ts.map +1 -1
- package/dist/analysis/findings.js +134 -0
- package/dist/analysis/findings.js.map +1 -1
- package/dist/analysis/interprocedural.d.ts.map +1 -1
- package/dist/analysis/interprocedural.js +98 -3
- package/dist/analysis/interprocedural.js.map +1 -1
- package/dist/analysis/java-array-element-keys.d.ts +14 -0
- package/dist/analysis/java-array-element-keys.d.ts.map +1 -0
- package/dist/analysis/java-array-element-keys.js +36 -0
- package/dist/analysis/java-array-element-keys.js.map +1 -0
- package/dist/analysis/js-crlf-strip.d.ts +26 -0
- package/dist/analysis/js-crlf-strip.d.ts.map +1 -0
- package/dist/analysis/js-crlf-strip.js +244 -0
- package/dist/analysis/js-crlf-strip.js.map +1 -0
- package/dist/analysis/passes/csharp-sanitizer-credit.d.ts +12 -0
- package/dist/analysis/passes/csharp-sanitizer-credit.d.ts.map +1 -1
- package/dist/analysis/passes/csharp-sanitizer-credit.js +109 -12
- package/dist/analysis/passes/csharp-sanitizer-credit.js.map +1 -1
- package/dist/analysis/passes/language-sources-pass.d.ts +38 -3
- package/dist/analysis/passes/language-sources-pass.d.ts.map +1 -1
- package/dist/analysis/passes/language-sources-pass.js +1176 -119
- package/dist/analysis/passes/language-sources-pass.js.map +1 -1
- package/dist/analysis/passes/param-source-flow-gate-pass.d.ts.map +1 -1
- package/dist/analysis/passes/param-source-flow-gate-pass.js +53 -1
- package/dist/analysis/passes/param-source-flow-gate-pass.js.map +1 -1
- package/dist/analysis/passes/plaintext-password-storage-pass.d.ts +6 -0
- package/dist/analysis/passes/plaintext-password-storage-pass.d.ts.map +1 -1
- package/dist/analysis/passes/plaintext-password-storage-pass.js +160 -0
- package/dist/analysis/passes/plaintext-password-storage-pass.js.map +1 -1
- package/dist/analysis/passes/scan-secrets-pass.d.ts +1 -1
- package/dist/analysis/passes/scan-secrets-pass.d.ts.map +1 -1
- package/dist/analysis/passes/scan-secrets-pass.js +7 -1
- package/dist/analysis/passes/scan-secrets-pass.js.map +1 -1
- package/dist/analysis/passes/sink-filter-pass.d.ts +1 -1
- package/dist/analysis/passes/sink-filter-pass.d.ts.map +1 -1
- package/dist/analysis/passes/sink-filter-pass.js +307 -31
- package/dist/analysis/passes/sink-filter-pass.js.map +1 -1
- package/dist/analysis/passes/taint-matcher-pass.d.ts.map +1 -1
- package/dist/analysis/passes/taint-matcher-pass.js +2 -2
- package/dist/analysis/passes/taint-matcher-pass.js.map +1 -1
- package/dist/analysis/passes/taint-propagation-pass.d.ts.map +1 -1
- package/dist/analysis/passes/taint-propagation-pass.js +1349 -58
- package/dist/analysis/passes/taint-propagation-pass.js.map +1 -1
- package/dist/analysis/passes/weak-hash-pass.d.ts +6 -0
- package/dist/analysis/passes/weak-hash-pass.d.ts.map +1 -1
- package/dist/analysis/passes/weak-hash-pass.js +191 -4
- package/dist/analysis/passes/weak-hash-pass.js.map +1 -1
- package/dist/analysis/passes/weak-random-pass.d.ts +5 -0
- package/dist/analysis/passes/weak-random-pass.d.ts.map +1 -1
- package/dist/analysis/passes/weak-random-pass.js +30 -0
- package/dist/analysis/passes/weak-random-pass.js.map +1 -1
- package/dist/analysis/project-callee-escape-gate.d.ts +40 -0
- package/dist/analysis/project-callee-escape-gate.d.ts.map +1 -0
- package/dist/analysis/project-callee-escape-gate.js +243 -0
- package/dist/analysis/project-callee-escape-gate.js.map +1 -0
- package/dist/analysis/rust-literal-guard-rebind.d.ts +34 -0
- package/dist/analysis/rust-literal-guard-rebind.d.ts.map +1 -0
- package/dist/analysis/rust-literal-guard-rebind.js +197 -0
- package/dist/analysis/rust-literal-guard-rebind.js.map +1 -0
- package/dist/analysis/rust-literal-guard.d.ts +33 -0
- package/dist/analysis/rust-literal-guard.d.ts.map +1 -0
- package/dist/analysis/rust-literal-guard.js +422 -0
- package/dist/analysis/rust-literal-guard.js.map +1 -0
- package/dist/analysis/scalar-derivation.d.ts +8 -0
- package/dist/analysis/scalar-derivation.d.ts.map +1 -1
- package/dist/analysis/scalar-derivation.js +172 -0
- package/dist/analysis/scalar-derivation.js.map +1 -1
- package/dist/analysis/taint-matcher.d.ts +2 -2
- package/dist/analysis/taint-matcher.d.ts.map +1 -1
- package/dist/analysis/taint-matcher.js +531 -31
- package/dist/analysis/taint-matcher.js.map +1 -1
- package/dist/analysis/taint-propagation.d.ts +26 -1
- package/dist/analysis/taint-propagation.d.ts.map +1 -1
- package/dist/analysis/taint-propagation.js +234 -13
- package/dist/analysis/taint-propagation.js.map +1 -1
- package/dist/analyzer.d.ts +16 -2
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +13 -3
- package/dist/analyzer.js.map +1 -1
- package/dist/browser/circle-ir.js +24319 -19934
- package/dist/core/circle-ir-core.cjs +4936 -3575
- package/dist/core/circle-ir-core.js +4936 -3575
- package/dist/core/extractors/calls.d.ts +12 -1
- package/dist/core/extractors/calls.d.ts.map +1 -1
- package/dist/core/extractors/calls.js +332 -22
- package/dist/core/extractors/calls.js.map +1 -1
- package/dist/core/extractors/dfg.js +102 -10
- package/dist/core/extractors/dfg.js.map +1 -1
- package/dist/core/extractors/types.d.ts +5 -1
- package/dist/core/extractors/types.d.ts.map +1 -1
- package/dist/core/extractors/types.js +62 -0
- package/dist/core/extractors/types.js.map +1 -1
- package/dist/graph/analysis-pass.d.ts +6 -1
- package/dist/graph/analysis-pass.d.ts.map +1 -1
- package/dist/graph/analysis-pass.js +2 -1
- package/dist/graph/analysis-pass.js.map +1 -1
- package/dist/navigation/navigation-index.d.ts +134 -14
- package/dist/navigation/navigation-index.d.ts.map +1 -1
- package/dist/navigation/navigation-index.js +1158 -104
- package/dist/navigation/navigation-index.js.map +1 -1
- package/dist/navigation/types.d.ts +59 -2
- package/dist/navigation/types.d.ts.map +1 -1
- package/dist/resolution/cross-file.d.ts +9 -0
- package/dist/resolution/cross-file.d.ts.map +1 -1
- package/dist/resolution/cross-file.js +102 -43
- package/dist/resolution/cross-file.js.map +1 -1
- package/dist/resolution/type-hierarchy.d.ts +3 -0
- package/dist/resolution/type-hierarchy.d.ts.map +1 -1
- package/dist/resolution/type-hierarchy.js +45 -1
- package/dist/resolution/type-hierarchy.js.map +1 -1
- package/dist/types/index.d.ts +33 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -28,9 +28,24 @@
|
|
|
28
28
|
* repository, of which 7,246 are correctly unanswered (the target is outside
|
|
29
29
|
* the tree) and 455 are these.
|
|
30
30
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
31
|
+
* Two more, found by asking for the callers of overloaded and of overridden
|
|
32
|
+
* methods in a 6,900-file Java repository, where every such answer was wrong:
|
|
33
|
+
*
|
|
34
|
+
* - **Overloads.** A call binds to one overload, chosen the way the compiler
|
|
35
|
+
* chooses — by arity, then by argument types in the compiler's three
|
|
36
|
+
* phases, then the most specific — and only where the types read off the
|
|
37
|
+
* source make the choice certain. Where they do not, the site is
|
|
38
|
+
* `unresolved` with `overload-ambiguous` and the candidates. A symbol may
|
|
39
|
+
* carry a parameter list to ask about one overload; a query without one
|
|
40
|
+
* on an overloaded method gets its answers grouped per overload.
|
|
41
|
+
* - **Dispatch.** A call through a supertype's declaration can land on an
|
|
42
|
+
* override, and a call to an override is a caller of the operation it
|
|
43
|
+
* overrides. Both are answered `polymorphic`, with `via` naming what the
|
|
44
|
+
* site binds to, and the query's `scope` says what dispatch it cannot see.
|
|
45
|
+
*
|
|
46
|
+
* What it deliberately does **not** do: invent a receiver type, or an
|
|
47
|
+
* argument type. Where no type is known the answer is `inferred`, ambiguous,
|
|
48
|
+
* or absent, and `inferred` is a permanent floor — see `Tier`.
|
|
34
49
|
*/
|
|
35
50
|
import type { CircleIR, SupportedLanguage } from '../types/index.js';
|
|
36
51
|
import type { NavigationAnswer, Query, QueryKind, QueryOptions } from './types.js';
|
|
@@ -77,6 +92,10 @@ export declare class NavigationIndex {
|
|
|
77
92
|
private readonly parseMs;
|
|
78
93
|
/** Direct subtypes, by supertype FQN. */
|
|
79
94
|
private readonly subtypes;
|
|
95
|
+
/** A call's binding, once made. The index is immutable, so it never goes stale. */
|
|
96
|
+
private readonly bindings;
|
|
97
|
+
/** Calls by `line:column`, per file, built on first use. */
|
|
98
|
+
private readonly callsAt;
|
|
80
99
|
constructor(input: NavigationFile[], options: BuildOptions);
|
|
81
100
|
/**
|
|
82
101
|
* Every call site that calls `symbol`, with how each was bound, plus every
|
|
@@ -86,6 +105,10 @@ export declare class NavigationIndex {
|
|
|
86
105
|
* reported 147 callers of one method where the right answer was 0 `exact`,
|
|
87
106
|
* 69 unverified and 78 contradicted by the resolver's own receiver type. Here
|
|
88
107
|
* the 78 do not appear as answers at all, and the 69 arrive labelled.
|
|
108
|
+
*
|
|
109
|
+
* An overloaded method is answered per overload: with a parameter list in
|
|
110
|
+
* the symbol, for that overload alone; without one, for every overload,
|
|
111
|
+
* grouped and labelled, with a `note` saying so.
|
|
89
112
|
*/
|
|
90
113
|
resolveCallers(query: Query, opts?: QueryOptions): NavigationAnswer;
|
|
91
114
|
/** Every call made from inside `symbol`'s body, bound the same way. */
|
|
@@ -100,19 +123,28 @@ export declare class NavigationIndex {
|
|
|
100
123
|
*
|
|
101
124
|
* For `callers` the symbol is the call's own target — "who else calls what
|
|
102
125
|
* this line calls". For `callees` it is the method whose body holds the
|
|
103
|
-
* line — "what does the method I am looking at call".
|
|
104
|
-
*
|
|
105
|
-
*
|
|
126
|
+
* line — "what does the method I am looking at call". Either carries a
|
|
127
|
+
* parameter list when the name is overloaded, so the follow-up query asks
|
|
128
|
+
* about that overload alone. Returns nothing when the site names no call,
|
|
129
|
+
* when the call cannot be bound to one target, or when the name is written
|
|
130
|
+
* twice on one line, which the key cannot separate.
|
|
106
131
|
*/
|
|
107
132
|
symbolAt(file: string, line: number, methodName: string, kind: QueryKind): string | undefined;
|
|
133
|
+
/** `bindCall`, reduced to what callers outside the query paths need. */
|
|
134
|
+
private symbolOfCall;
|
|
108
135
|
/**
|
|
109
|
-
* Bind one call site to a target, or to nothing.
|
|
136
|
+
* Bind one call site to a target, to several candidates, or to nothing.
|
|
110
137
|
*
|
|
111
138
|
* The order matters and is the whole contract: a receiver type is sought
|
|
112
139
|
* first, and only when none can be had does a name-only bind happen, which
|
|
113
|
-
* is labelled `inferred` and never anything better.
|
|
140
|
+
* is labelled `inferred` and never anything better. Within the type the
|
|
141
|
+
* receiver names, the overload is chosen by `selectOverload`, and a choice
|
|
142
|
+
* it cannot make is `ambiguous`, not a pick.
|
|
114
143
|
*/
|
|
115
|
-
private
|
|
144
|
+
private bindCall;
|
|
145
|
+
private bindUncached;
|
|
146
|
+
/** Bind `call` to a member of `fqn` or of a supertype of it, choosing the overload. */
|
|
147
|
+
private bindInType;
|
|
116
148
|
/**
|
|
117
149
|
* The tier for a target, once the declaring type is known.
|
|
118
150
|
*
|
|
@@ -126,8 +158,88 @@ export declare class NavigationIndex {
|
|
|
126
158
|
* static resolver answers; only the tier changes.
|
|
127
159
|
*/
|
|
128
160
|
private tierFor;
|
|
129
|
-
/** `new Widget()` → `app.Widget.<init
|
|
130
|
-
private
|
|
161
|
+
/** `new Widget()` → `app.Widget.<init>`, with the constructor chosen like any overload. */
|
|
162
|
+
private bindConstructor;
|
|
163
|
+
/**
|
|
164
|
+
* The overloads of `name` a receiver of type `fqn` can see: its own, then
|
|
165
|
+
* its supertypes', nearest first, leaving out any a nearer type overrides.
|
|
166
|
+
*/
|
|
167
|
+
private visibleOverloads;
|
|
168
|
+
/** The declarations of `name` on `t` itself. `<init>` is its constructors. */
|
|
169
|
+
private declaredOverloads;
|
|
170
|
+
/**
|
|
171
|
+
* Choose the overload a call invokes, the way the compiler does — or say
|
|
172
|
+
* that the types read off the source do not decide it.
|
|
173
|
+
*
|
|
174
|
+
* Arity first. Then the compiler's three phases: without boxing or
|
|
175
|
+
* varargs, with boxing, with varargs. In the first phase that has any
|
|
176
|
+
* applicable overload, the most specific one wins. Every argument type here
|
|
177
|
+
* is a lower bound on what is known — an argument that cannot be typed fits
|
|
178
|
+
* anything — so the rule is applied only where it is sound: an overload is
|
|
179
|
+
* picked when it is **certainly** applicable and more specific than every
|
|
180
|
+
* overload that **might** be. Anything less is `ambiguous`.
|
|
181
|
+
*/
|
|
182
|
+
private selectOverload;
|
|
183
|
+
/** Whether `c` applies to arguments of these types in compiler phase 1, 2 or 3. */
|
|
184
|
+
private applicable;
|
|
185
|
+
/** `m` is more specific than `o`: each of its parameter types fits the other's. */
|
|
186
|
+
private moreSpecific;
|
|
187
|
+
/**
|
|
188
|
+
* Whether a value of type `a` can be passed as `p` — certainly, possibly,
|
|
189
|
+
* or certainly not. `a === null` is an argument that could not be typed.
|
|
190
|
+
*/
|
|
191
|
+
private fits;
|
|
192
|
+
/** Reference to reference: subtyping, as far as the tree and the JDK table know it. */
|
|
193
|
+
private refFits;
|
|
194
|
+
/** Is `t` certainly a type outside this tree? */
|
|
195
|
+
private isKnownForeignRef;
|
|
196
|
+
/** Is `t` a type declared in this tree? */
|
|
197
|
+
private isProjectRef;
|
|
198
|
+
/** Every supertype of a project type, split into what the tree holds and what it does not. */
|
|
199
|
+
private supertypesOf;
|
|
200
|
+
/** A type name that certainly names something outside the tree. */
|
|
201
|
+
private isKnownForeign;
|
|
202
|
+
/**
|
|
203
|
+
* The static type of one argument, or `null` when it cannot be known. The
|
|
204
|
+
* extractor types what the syntax and the declarations in scope say; an
|
|
205
|
+
* argument that is itself a call is typed here by binding that call and
|
|
206
|
+
* reading the chosen overload's return type.
|
|
207
|
+
*/
|
|
208
|
+
private argumentType;
|
|
209
|
+
/**
|
|
210
|
+
* The type a generated `getX()` / `isX()` returns on `fqn`: the written
|
|
211
|
+
* type of field `x`, with the type that declares the field.
|
|
212
|
+
*/
|
|
213
|
+
private generatedGetterType;
|
|
214
|
+
/**
|
|
215
|
+
* A member's written type as seen from a receiver of type `from`: a type
|
|
216
|
+
* parameter of the declaring type is replaced by the argument the
|
|
217
|
+
* superclass chain from `from` up to it supplies — `Loan extends
|
|
218
|
+
* Base<Long>` makes `Base<T>.getId()`'s `T` a `Long`. Returns the text and
|
|
219
|
+
* the file it must be resolved in, or nothing when a type parameter is
|
|
220
|
+
* left unbound.
|
|
221
|
+
*/
|
|
222
|
+
private substitute;
|
|
223
|
+
/** The outermost call named `name` that starts at `line:column` in `rec`. */
|
|
224
|
+
private callAt;
|
|
225
|
+
/** A written type, resolved from one file's point of view. */
|
|
226
|
+
private typeRef;
|
|
227
|
+
/** Whether overload `o` of `owner` is what a query's parameter list names. */
|
|
228
|
+
private signatureMatches;
|
|
229
|
+
/** Same name and same erased parameter types: one overrides the other. */
|
|
230
|
+
private sameErasure;
|
|
231
|
+
/**
|
|
232
|
+
* How a site bound to `owner.overload` reaches `target`'s overload, if it
|
|
233
|
+
* does: through a supertype's declaration the target overrides, or by
|
|
234
|
+
* calling an override of the target.
|
|
235
|
+
*/
|
|
236
|
+
private dispatchRelation;
|
|
237
|
+
/** Whether calls to `o` on `t` can dispatch anywhere but `t`'s own body. */
|
|
238
|
+
private dispatchIsOpen;
|
|
239
|
+
/** `a` is `b` or a subtype of it, by the edges the tree holds. */
|
|
240
|
+
private isSubtype;
|
|
241
|
+
/** The query's scope, with what dispatch it cannot see said out loud. */
|
|
242
|
+
private dispatchScope;
|
|
131
243
|
/**
|
|
132
244
|
* The receiver's static type, where it can be had without inventing one.
|
|
133
245
|
*
|
|
@@ -143,14 +255,22 @@ export declare class NavigationIndex {
|
|
|
143
255
|
* `Builder.of().step("a")` is typed by resolving `Builder`, then taking
|
|
144
256
|
* `of`'s declared return type, then `step`'s. A step whose return type is
|
|
145
257
|
* unknown ends the walk and the whole expression is untyped — a half-walked
|
|
146
|
-
* chain is not a type.
|
|
258
|
+
* chain is not a type. So does a step whose overloads of that arity
|
|
259
|
+
* disagree on what they return.
|
|
147
260
|
*/
|
|
148
261
|
private typeOfExpression;
|
|
262
|
+
/**
|
|
263
|
+
* The return type of `name` called with `argc` arguments on `fqn`, when
|
|
264
|
+
* every overload of that arity agrees on it.
|
|
265
|
+
*/
|
|
266
|
+
private returnTypeAt;
|
|
149
267
|
/** The owner named by a static import of this call's method. */
|
|
150
268
|
private staticOwnerFor;
|
|
151
269
|
private enclosingTypeOf;
|
|
152
270
|
/** The innermost declared type whose line range holds `line`. */
|
|
153
271
|
private enclosingTypeAt;
|
|
272
|
+
/** The method whose body holds `line`, with a parameter list when its name is overloaded. */
|
|
273
|
+
private methodAt;
|
|
154
274
|
/** Find `method` on `fqn` or on a supertype of it, inside the tree. */
|
|
155
275
|
private lookupThroughHierarchy;
|
|
156
276
|
/**
|
|
@@ -169,8 +289,8 @@ export declare class NavigationIndex {
|
|
|
169
289
|
*/
|
|
170
290
|
private isBodyless;
|
|
171
291
|
/**
|
|
172
|
-
* Types in the tree that declare a **runnable** `
|
|
173
|
-
* below it.
|
|
292
|
+
* Types in the tree that declare a **runnable** override of `o` and are
|
|
293
|
+
* `fqn` or below it.
|
|
174
294
|
*
|
|
175
295
|
* "Runnable" is the whole of it: `candidates` answers "which body could
|
|
176
296
|
* run", so an abstract declaration does not belong there even when it is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-index.d.ts","sourceRoot":"","sources":["../../src/navigation/navigation-index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"navigation-index.d.ts","sourceRoot":"","sources":["../../src/navigation/navigation-index.ts"],"names":[],"mappings":"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"}
|