circle-ir 4.9.29 → 4.10.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/dist/analysis/config-loader.d.ts.map +1 -1
- package/dist/analysis/config-loader.js +23 -0
- package/dist/analysis/config-loader.js.map +1 -1
- package/dist/analyzer.d.ts +12 -0
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +1 -1
- package/dist/analyzer.js.map +1 -1
- package/dist/browser/circle-ir.js +95 -4
- package/dist/core/circle-ir-core.cjs +94 -3
- package/dist/core/circle-ir-core.js +94 -3
- package/dist/core/extractors/types.d.ts +28 -1
- package/dist/core/extractors/types.d.ts.map +1 -1
- package/dist/core/extractors/types.js +86 -3
- package/dist/core/extractors/types.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/navigation/index.d.ts +8 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +6 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/navigation/navigation-index.d.ts +208 -0
- package/dist/navigation/navigation-index.d.ts.map +1 -0
- package/dist/navigation/navigation-index.js +968 -0
- package/dist/navigation/navigation-index.js.map +1 -0
- package/dist/navigation/types.d.ts +160 -0
- package/dist/navigation/types.d.ts.map +1 -0
- package/dist/navigation/types.js +17 -0
- package/dist/navigation/types.js.map +1 -0
- package/dist/types/index.d.ts +19 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -32,6 +32,10 @@ export { DominatorGraph } from './graph/dominator-graph.js';
|
|
|
32
32
|
export { ExceptionFlowGraph } from './graph/exception-flow-graph.js';
|
|
33
33
|
// Resolution utilities
|
|
34
34
|
export { TypeHierarchyResolver, createWithJdkTypes, SymbolTable, buildSymbolTable, CrossFileResolver, buildCrossFileResolver, } from './resolution/index.js';
|
|
35
|
+
// Navigation queries — callers and callees, each answer carrying its tier and
|
|
36
|
+
// each non-answer its reason. Additive: nothing in the resolution path above
|
|
37
|
+
// changes, because the SAST passes and the taint corpora depend on it exactly.
|
|
38
|
+
export { buildNavigationIndex, NavigationIndex, } from './navigation/index.js';
|
|
35
39
|
// Language plugins
|
|
36
40
|
export { getLanguageRegistry, registerLanguage, getLanguagePlugin, getLanguageForFile, detectLanguage, isLanguageSupported, registerBuiltinPlugins, JavaPlugin, JavaScriptPlugin, PythonPlugin, RustPlugin, HtmlPlugin, BaseLanguagePlugin, } from './languages/index.js';
|
|
37
41
|
// Logger (dependency injection)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,OAAO,EACP,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,aAAa,GAEd,MAAM,eAAe,CAAC;AAEvB,4EAA4E;AAC5E,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,MAAM,GACP,MAAM,oBAAoB,CAAC;AA+E5B,sEAAsE;AACtE,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,qEAAqE;AACrE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE5D,+EAA+E;AAC/E,yCAAyC;AACzC,OAAO,EACL,eAAe,EACf,aAAa,EACb,WAAW,GAEZ,MAAM,6BAA6B,CAAC;AAYrC,sCAAsC;AACtC,OAAO,EACL,UAAU,EACV,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,WAAW,EACX,eAAe,GAMhB,MAAM,iBAAiB,CAAC;AAEzB,kBAAkB;AAClB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,EACd,QAAQ,EACR,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAEzB,qBAAqB;AACrB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,gCAAgC,EAChC,0BAA0B,EAC1B,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,WAAW,EACX,eAAe,EACf,aAAa,EACb,kBAAkB,GAMnB,MAAM,qBAAqB,CAAC;AAE7B,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAE7B,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAqB,MAAM,iCAAiC,CAAC;AAExF,uBAAuB;AACvB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,mBAAmB;AACnB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAY9B,gCAAgC;AAChC,OAAO,EACL,MAAM,EACN,SAAS,EACT,eAAe,EACf,WAAW,EACX,WAAW,GAIZ,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,OAAO,EACP,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,aAAa,GAEd,MAAM,eAAe,CAAC;AAEvB,4EAA4E;AAC5E,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,MAAM,GACP,MAAM,oBAAoB,CAAC;AA+E5B,sEAAsE;AACtE,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,qEAAqE;AACrE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE5D,+EAA+E;AAC/E,yCAAyC;AACzC,OAAO,EACL,eAAe,EACf,aAAa,EACb,WAAW,GAEZ,MAAM,6BAA6B,CAAC;AAYrC,sCAAsC;AACtC,OAAO,EACL,UAAU,EACV,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,WAAW,EACX,eAAe,GAMhB,MAAM,iBAAiB,CAAC;AAEzB,kBAAkB;AAClB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,EACd,QAAQ,EACR,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAEzB,qBAAqB;AACrB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,gCAAgC,EAChC,0BAA0B,EAC1B,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,WAAW,EACX,eAAe,EACf,aAAa,EACb,kBAAkB,GAMnB,MAAM,qBAAqB,CAAC;AAE7B,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAE7B,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAqB,MAAM,iCAAiC,CAAC;AAExF,uBAAuB;AACvB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAE/B,8EAA8E;AAC9E,6EAA6E;AAC7E,+EAA+E;AAC/E,OAAO,EACL,oBAAoB,EACpB,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAiB/B,mBAAmB;AACnB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAY9B,gCAAgC;AAChC,OAAO,EACL,MAAM,EACN,SAAS,EACT,eAAe,EACf,WAAW,EACX,WAAW,GAIZ,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Navigation queries — callers and callees, each answer carrying how it was
|
|
3
|
+
* reached and each non-answer carrying why. See `navigation-index.ts`.
|
|
4
|
+
*/
|
|
5
|
+
export { buildNavigationIndex, NavigationIndex } from './navigation-index.js';
|
|
6
|
+
export type { NavigationFile, BuildOptions } from './navigation-index.js';
|
|
7
|
+
export type { AnswerEntry, CallSite, NavigationAnswer, Query, QueryKind, QueryOptions, Scope, Tier, Timing, UnresolvedEntry, UnresolvedReason, } from './types.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9E,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1E,YAAY,EACV,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,KAAK,EACL,SAAS,EACT,YAAY,EACZ,KAAK,EACL,IAAI,EACJ,MAAM,EACN,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Navigation queries — callers and callees, each answer carrying how it was
|
|
3
|
+
* reached and each non-answer carrying why. See `navigation-index.ts`.
|
|
4
|
+
*/
|
|
5
|
+
export { buildNavigationIndex, NavigationIndex } from './navigation-index.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Navigation queries — callers and callees, each answer carrying how it was
|
|
3
|
+
* reached and each non-answer carrying why.
|
|
4
|
+
*
|
|
5
|
+
* This is an **additive** surface. `CrossFileResolver.resolveCall` and
|
|
6
|
+
* `.findCallers` are untouched: the SAST passes and the taint corpora depend on
|
|
7
|
+
* their exact behaviour, and a change there ships behind the corpora gates, not
|
|
8
|
+
* with a navigation feature. So this module builds its own index from the same
|
|
9
|
+
* IR and answers its own questions.
|
|
10
|
+
*
|
|
11
|
+
* What it does that `resolveCall` does not, and why each one is here:
|
|
12
|
+
*
|
|
13
|
+
* - **A `record` receiver.** `resolveCall` cannot see a record because the
|
|
14
|
+
* default extraction emits no type for one. Asking `analyze` for
|
|
15
|
+
* `navigationTypes` fixes that upstream; this index then treats a record
|
|
16
|
+
* like any other class.
|
|
17
|
+
* - **A chained receiver.** `failed(this).feedback(x).output(y)` arrives with
|
|
18
|
+
* the receiver as an expression string. The chain is walked left to right,
|
|
19
|
+
* typing each step from the previous step's declared return type.
|
|
20
|
+
* - **A constructor.** `new Widget()` arrives as a call named `Widget` with
|
|
21
|
+
* no receiver. It is bound to `app.Widget.<init>`.
|
|
22
|
+
* - **A nested type's static import.** `import static app.Outer.Inner.make`
|
|
23
|
+
* names `app.Outer.Inner.make`, which only matches a symbol table that
|
|
24
|
+
* kept the nesting — hence `TypeInfo.enclosing_type`.
|
|
25
|
+
*
|
|
26
|
+
* Those four are not a wish list: they are every shape found by auditing the
|
|
27
|
+
* 8,015 call sites `resolveCall` leaves unanswered in a 405-file Java
|
|
28
|
+
* repository, of which 7,246 are correctly unanswered (the target is outside
|
|
29
|
+
* the tree) and 455 are these.
|
|
30
|
+
*
|
|
31
|
+
* What it deliberately does **not** do: invent a receiver type. Where no type
|
|
32
|
+
* is known the answer is `inferred` or there is no answer, and `inferred` is a
|
|
33
|
+
* permanent floor — see `Tier`.
|
|
34
|
+
*/
|
|
35
|
+
import type { CircleIR, SupportedLanguage } from '../types/index.js';
|
|
36
|
+
import type { NavigationAnswer, Query, QueryKind, QueryOptions } from './types.js';
|
|
37
|
+
/** One file's input to the index. `ir` must come from `analyze` with `navigationTypes`. */
|
|
38
|
+
export interface NavigationFile {
|
|
39
|
+
path: string;
|
|
40
|
+
language: SupportedLanguage;
|
|
41
|
+
ir: CircleIR;
|
|
42
|
+
/** The file's text. Only used to put the source line on a site. */
|
|
43
|
+
source?: string;
|
|
44
|
+
/**
|
|
45
|
+
* A content hash for this file. Supplied, or derived from `source`. With
|
|
46
|
+
* `BuildOptions.cache` set, a file whose hash is unchanged is not re-indexed.
|
|
47
|
+
*/
|
|
48
|
+
contentHash?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface BuildOptions {
|
|
51
|
+
/**
|
|
52
|
+
* Reuse per-file index records across builds, keyed by content hash and by
|
|
53
|
+
* this module's own version marker. Minimal by design — enough to keep a
|
|
54
|
+
* trial's answers fresh between edits; the incremental workspace index is a
|
|
55
|
+
* separate piece of work.
|
|
56
|
+
*/
|
|
57
|
+
cache?: boolean;
|
|
58
|
+
/** Paths left out of the index, each with the reason, reported in `scope.excluded`. */
|
|
59
|
+
excluded?: Array<{
|
|
60
|
+
pattern: string;
|
|
61
|
+
reason: string;
|
|
62
|
+
}>;
|
|
63
|
+
/** Wall time the caller spent parsing, so `timing.parseMs` is not a guess. */
|
|
64
|
+
parseMs?: number;
|
|
65
|
+
}
|
|
66
|
+
export declare function buildNavigationIndex(files: NavigationFile[], options?: BuildOptions): NavigationIndex;
|
|
67
|
+
export declare class NavigationIndex {
|
|
68
|
+
private readonly files;
|
|
69
|
+
private readonly typesByFqn;
|
|
70
|
+
private readonly typesBySimpleName;
|
|
71
|
+
/** Every method name declared anywhere in the tree — "is the target in scope at all?" */
|
|
72
|
+
private readonly declaredNames;
|
|
73
|
+
/** Package prefixes of the indexed files, longest first. */
|
|
74
|
+
private readonly projectPackages;
|
|
75
|
+
private readonly scope;
|
|
76
|
+
private readonly indexMs;
|
|
77
|
+
private readonly parseMs;
|
|
78
|
+
/** Direct subtypes, by supertype FQN. */
|
|
79
|
+
private readonly subtypes;
|
|
80
|
+
constructor(input: NavigationFile[], options: BuildOptions);
|
|
81
|
+
/**
|
|
82
|
+
* Every call site that calls `symbol`, with how each was bound, plus every
|
|
83
|
+
* site that calls something of that *name* and could not be bound, with why.
|
|
84
|
+
*
|
|
85
|
+
* The second list is the point. A name-only search on a 405-file repository
|
|
86
|
+
* reported 147 callers of one method where the right answer was 0 `exact`,
|
|
87
|
+
* 69 unverified and 78 contradicted by the resolver's own receiver type. Here
|
|
88
|
+
* the 78 do not appear as answers at all, and the 69 arrive labelled.
|
|
89
|
+
*/
|
|
90
|
+
resolveCallers(query: Query, opts?: QueryOptions): NavigationAnswer;
|
|
91
|
+
/** Every call made from inside `symbol`'s body, bound the same way. */
|
|
92
|
+
resolveCallees(query: Query, opts?: QueryOptions): NavigationAnswer;
|
|
93
|
+
/**
|
|
94
|
+
* The symbol a call site names, so a caller holding a line of code can ask
|
|
95
|
+
* the same question as a caller holding a name.
|
|
96
|
+
*
|
|
97
|
+
* Keyed on `(file, line, methodName)` and **not** on a column: a chained
|
|
98
|
+
* expression reports several calls at one line and column, so a column
|
|
99
|
+
* cannot address one of them. The method name is what completes the key.
|
|
100
|
+
*
|
|
101
|
+
* For `callers` the symbol is the call's own target — "who else calls what
|
|
102
|
+
* this line calls". For `callees` it is the method whose body holds the
|
|
103
|
+
* line — "what does the method I am looking at call". Returns nothing when
|
|
104
|
+
* the site names no call, when the call cannot be bound to a target, or
|
|
105
|
+
* when the name is written twice on one line, which the key cannot separate.
|
|
106
|
+
*/
|
|
107
|
+
symbolAt(file: string, line: number, methodName: string, kind: QueryKind): string | undefined;
|
|
108
|
+
/**
|
|
109
|
+
* Bind one call site to a target, or to nothing.
|
|
110
|
+
*
|
|
111
|
+
* The order matters and is the whole contract: a receiver type is sought
|
|
112
|
+
* first, and only when none can be had does a name-only bind happen, which
|
|
113
|
+
* is labelled `inferred` and never anything better.
|
|
114
|
+
*/
|
|
115
|
+
private bind;
|
|
116
|
+
/**
|
|
117
|
+
* The tier for a target, once the declaring type is known.
|
|
118
|
+
*
|
|
119
|
+
* Every path to an answer goes through here, which is the point: the
|
|
120
|
+
* body-required rule was added in one place and the first graded record
|
|
121
|
+
* found it missing from another. `exact` is a promise that the target named
|
|
122
|
+
* is the code that runs, so it needs two things — the declaring type known,
|
|
123
|
+
* and the declaration **having a body**. An abstract member satisfies only
|
|
124
|
+
* the first; what runs there is a subclass's body or a lambda, never the
|
|
125
|
+
* member named. The target stays the declaring member, which is what a
|
|
126
|
+
* static resolver answers; only the tier changes.
|
|
127
|
+
*/
|
|
128
|
+
private tierFor;
|
|
129
|
+
/** `new Widget()` → `app.Widget.<init>`. */
|
|
130
|
+
private asConstructor;
|
|
131
|
+
/**
|
|
132
|
+
* The receiver's static type, where it can be had without inventing one.
|
|
133
|
+
*
|
|
134
|
+
* Four sources, in order of how much they are trusted: the extractor's own
|
|
135
|
+
* fully-qualified answer, its simple-name answer resolved through this file's
|
|
136
|
+
* imports, a chain of calls whose declared return types can be walked, and a
|
|
137
|
+
* bare type name used as a static receiver.
|
|
138
|
+
*/
|
|
139
|
+
private receiverTypeOf;
|
|
140
|
+
/**
|
|
141
|
+
* The type a receiver *expression* evaluates to.
|
|
142
|
+
*
|
|
143
|
+
* `Builder.of().step("a")` is typed by resolving `Builder`, then taking
|
|
144
|
+
* `of`'s declared return type, then `step`'s. A step whose return type is
|
|
145
|
+
* unknown ends the walk and the whole expression is untyped — a half-walked
|
|
146
|
+
* chain is not a type.
|
|
147
|
+
*/
|
|
148
|
+
private typeOfExpression;
|
|
149
|
+
/** The owner named by a static import of this call's method. */
|
|
150
|
+
private staticOwnerFor;
|
|
151
|
+
private enclosingTypeOf;
|
|
152
|
+
/** The innermost declared type whose line range holds `line`. */
|
|
153
|
+
private enclosingTypeAt;
|
|
154
|
+
/** Find `method` on `fqn` or on a supertype of it, inside the tree. */
|
|
155
|
+
private lookupThroughHierarchy;
|
|
156
|
+
/**
|
|
157
|
+
* Whether a declaration carries no body, so nothing it names can run.
|
|
158
|
+
*
|
|
159
|
+
* A class method says so itself: `abstract` is in its modifiers. An
|
|
160
|
+
* interface method does not — the Java extraction reports no modifiers for
|
|
161
|
+
* either an abstract member or a `default` one — so the declaration line is
|
|
162
|
+
* read from the source, where `default` and `static` are the only two ways
|
|
163
|
+
* an interface member can have a body. `default` and `static` precede the
|
|
164
|
+
* return type, so they are on the declaration's first line.
|
|
165
|
+
*
|
|
166
|
+
* With no source supplied, an interface member is treated as body-less.
|
|
167
|
+
* That is the conservative direction: it costs an answer its `exact` label
|
|
168
|
+
* and never grants one.
|
|
169
|
+
*/
|
|
170
|
+
private isBodyless;
|
|
171
|
+
/**
|
|
172
|
+
* Types in the tree that declare a **runnable** `method` and are `fqn` or
|
|
173
|
+
* below it.
|
|
174
|
+
*
|
|
175
|
+
* "Runnable" is the whole of it: `candidates` answers "which body could
|
|
176
|
+
* run", so an abstract declaration does not belong there even when it is
|
|
177
|
+
* the type the walk started from. An `abstract class Base { abstract step(); }`
|
|
178
|
+
* with nothing overriding `step` has no candidates, and saying so is the
|
|
179
|
+
* honest answer — listing `Base.step` would name a body that does not exist.
|
|
180
|
+
*/
|
|
181
|
+
private implementorsWith;
|
|
182
|
+
/** The one type in the tree declaring `name`, or nothing if it is not unique. */
|
|
183
|
+
private uniqueByName;
|
|
184
|
+
/** A simple or qualified type name, resolved from one file's point of view. */
|
|
185
|
+
private resolveTypeRecord;
|
|
186
|
+
private resolveTypeName;
|
|
187
|
+
/**
|
|
188
|
+
* Why a site in range produced no answer.
|
|
189
|
+
*
|
|
190
|
+
* Every branch rests on something read from the source, not on a default.
|
|
191
|
+
* `unknown` is the honest end of the list: the target is in the tree and this
|
|
192
|
+
* index failed to bind it, which is a different claim from the other five and
|
|
193
|
+
* is reported as its own share.
|
|
194
|
+
*/
|
|
195
|
+
private reasonFor;
|
|
196
|
+
/** `@Getter`/`@Setter`/`@Data`/`@Builder` would add this member. */
|
|
197
|
+
private wouldBeGenerated;
|
|
198
|
+
/** `Email.builder().title(...)` — a builder setter named after a field. */
|
|
199
|
+
private builderChainWouldGenerate;
|
|
200
|
+
private isProjectFqn;
|
|
201
|
+
private parses;
|
|
202
|
+
/** A site whose method name could be the one asked for. */
|
|
203
|
+
private nameCouldMatch;
|
|
204
|
+
private querySymbol;
|
|
205
|
+
private siteOf;
|
|
206
|
+
private finish;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=navigation-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-index.d.ts","sourceRoot":"","sources":["../../src/navigation/navigation-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAsB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,KAAK,EAGV,gBAAgB,EAChB,KAAK,EACL,SAAS,EACT,YAAY,EAKb,MAAM,YAAY,CAAC;AAEpB,2FAA2F;AAC3F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,EAAE,EAAE,QAAQ,CAAC;IACb,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAoED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE,YAAiB,GACzB,eAAe,CAEjB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmC;IACrE,yFAAyF;IACzF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,yCAAyC;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAE3D,YAAY,KAAK,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,YAAY,EA4DzD;IAID;;;;;;;;OAQG;IACH,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,YAAiB,GAAG,gBAAgB,CA4BtE;IAED,uEAAuE;IACvE,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,YAAiB,GAAG,gBAAgB,CA+BtE;IAED;;;;;;;;;;;;;OAaG;IACH,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,SAAS,GACd,MAAM,GAAG,SAAS,CAoBpB;IAID;;;;;;OAMG;IACH,OAAO,CAAC,IAAI;IA0DZ;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,OAAO;IAoBf,4CAA4C;IAC5C,OAAO,CAAC,aAAa;IAiBrB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAqCtB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAmDxB,gEAAgE;IAChE,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,eAAe;IAIvB,iEAAiE;IACjE,OAAO,CAAC,eAAe;IASvB,uEAAuE;IACvE,OAAO,CAAC,sBAAsB;IAoB9B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,UAAU;IAWlB;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IAexB,iFAAiF;IACjF,OAAO,CAAC,YAAY;IASpB,+EAA+E;IAC/E,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,eAAe;IAsBvB;;;;;;;OAOG;IACH,OAAO,CAAC,SAAS;IAuCjB,oEAAoE;IACpE,OAAO,CAAC,gBAAgB;IA+BxB,2EAA2E;IAC3E,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,MAAM;IAMd,2DAA2D;IAC3D,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,MAAM;CAmCf"}
|