@tslite/checker 1.5.0 → 1.8.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/chunk-O7NTTIOJ.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +216 -17
- package/dist/index.d.ts +216 -17
- package/dist/index.js +1 -1
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.d.cts +100 -34
- package/dist/types/index.d.ts +100 -34
- package/dist/types/index.js +1 -1
- package/package.json +6 -6
- package/dist/chunk-FY7J7P5X.js +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,52 @@
|
|
|
1
1
|
import { VarSchema, Schema, Schemes, TypeScheme, ObjectSchema, Completion } from './types/index.js';
|
|
2
|
-
export { AnySchema, ApplySchema, ArraySchema, Bindings, DEFAULT_TYPE_LIMITS, Discovery, ElementFlag, FnSchema, GuardSig, INSTANTIATION_COUNT_LIMIT, INSTANTIATION_DEPTH_LIMIT, Incompatibility, IncompatibilityKind, IndexSchema, Instantiation, InstantiationLimitError, KeyofSchema, LiteralSchema, MappedSchema, OverloadSchema, Param, PathSegment, Prop, ScalarSchema, TYPE_EVAL_DEPTH_LIMIT, TupleSchema, TypeEvalLimitError, TypeEvalLimits, TypeForm, TypePosition, UnionSchema, UnionTooComplexError, UnknownSchema, VarCandidates, WriteKey, apparentType, asLiteralOrigin, baseLiteralType, bindTypeParams, comparable, configureTypeLimits, contravariantInference, covariantInference, discover, equals, erasedSignature, expand1, flagAt, format, formatTypeArgs, formatTypeDiff, freeVars, groundVars, inferFromCandidates,
|
|
3
|
-
import { Scope as Scope$1,
|
|
2
|
+
export { AnySchema, ApplySchema, ArraySchema, Bindings, Candidates, DEFAULT_TYPE_LIMITS, Discovery, ElementFlag, FnSchema, GuardSig, INSTANTIATION_COUNT_LIMIT, INSTANTIATION_DEPTH_LIMIT, Incompatibility, IncompatibilityKind, IndexSchema, InferencePriority, Instantiation, InstantiationLimitError, KeyofSchema, LiteralSchema, MappedSchema, OverloadSchema, Param, PathSegment, Prop, ScalarSchema, TYPE_EVAL_DEPTH_LIMIT, TupleSchema, TypeEvalLimitError, TypeEvalLimits, TypeForm, TypePosition, UnionSchema, UnionTooComplexError, UnknownSchema, VarCandidates, WriteKey, apparentType, asLiteralOrigin, baseLiteralType, bindTypeParams, comparable, configureTypeLimits, contravariantInference, covariantInference, createInferences, discover, equals, erasedSignature, expand1, flagAt, format, formatTypeArgs, formatTypeDiff, freeVars, groundVars, inferFromCandidates, inferTypes, inferredBindings, inferredTypes, instantiateInContextOf, instantiateLoose, isMissingType, isNumericLiteralName, isObjectOrArrayLiteral, isScheme, isSerializable, isVariadicTuple, join, joinAll, missingType, normalizeUnion, ownProp, readonlyMember, renameTypeParams, resetInstantiationCount, resetTypeLimits, resolveConditional, resolveOp, resolveTypeOp, restIndex, restTypeAtPosition, s, sampleValue, silentNever, substitute, subtype, typeAtPosition, typeDiff, typeFeatures, typeLimits, typeNameOf, typeNeedsParens, typeParamArity, version, widen, widenInferred, widenLiteral, widenOrigin, widenType, withUndefined, withoutUndefined } from './types/index.js';
|
|
3
|
+
import { BaseNode, Scope as Scope$1, Node, types, SourceLocation, Expression } from '@tslite/ast';
|
|
4
4
|
import { CapabilityProfile, CompiledProfile } from '@tslite/capability';
|
|
5
5
|
import { Span } from '@tslite/language-service';
|
|
6
6
|
|
|
7
7
|
/** As declarações de tipo nominal: o nome e os type params, em ordem. */
|
|
8
8
|
type Nominals = Readonly<Record<string, readonly VarSchema[]>>;
|
|
9
9
|
|
|
10
|
+
/** O que uma declaração de namespace declara com um nome. */
|
|
11
|
+
interface NamespaceMember {
|
|
12
|
+
/** Visível de fora: tem `export`, ou está num contexto ambiente que exporta tudo. */
|
|
13
|
+
readonly exported: boolean;
|
|
14
|
+
/** O nome, onde o diagnóstico sobre a declaração pousa; `null` num membro do ambiente,
|
|
15
|
+
* que não tem texto. */
|
|
16
|
+
readonly id: BaseNode | null;
|
|
17
|
+
/** A chave do tipo no catálogo, quando não é o nome qualificado (`path.nome`): a de um
|
|
18
|
+
* tipo que outra declaração do mesmo namespace também declara (checker D88). */
|
|
19
|
+
readonly key?: string;
|
|
20
|
+
}
|
|
21
|
+
/** Uma declaração de namespace — um bloco. `namespace A.B { … }` são duas: o `A` e o `B`. */
|
|
22
|
+
interface NamespaceDeclaration {
|
|
23
|
+
/** O `TSModuleDeclaration`; `null` num namespace do ambiente, que vem das chaves do
|
|
24
|
+
* catálogo e não de texto. */
|
|
25
|
+
readonly node: BaseNode | null;
|
|
26
|
+
/** O caminho qualificado (`app.router`). */
|
|
27
|
+
readonly path: string;
|
|
28
|
+
/** A declaração de fora, ou `null` no topo. */
|
|
29
|
+
readonly parent: NamespaceDeclaration | null;
|
|
30
|
+
/** No contexto ambiente (`declare namespace`, e o que está dentro dele). */
|
|
31
|
+
readonly ambient: boolean;
|
|
32
|
+
/** O bloco tem valores (o `Instantiated` do `getModuleInstanceState`). */
|
|
33
|
+
readonly instantiated: boolean;
|
|
34
|
+
/** Os tipos que ESTE bloco declara (os locais do tsc, com o sentido de tipo). Um tipo e
|
|
35
|
+
* um namespace com o mesmo nome convivem, por isso as duas tabelas. */
|
|
36
|
+
readonly types: ReadonlyMap<string, NamespaceMember>;
|
|
37
|
+
/** Os namespaces que ESTE bloco declara. */
|
|
38
|
+
readonly namespaces: ReadonlyMap<string, NamespaceMember>;
|
|
39
|
+
}
|
|
40
|
+
/** As declarações de namespace de uma raiz — o programa, ou o ambiente. */
|
|
41
|
+
interface Namespaces {
|
|
42
|
+
/** As declarações de cada namespace, pelo caminho, na ordem. */
|
|
43
|
+
readonly byPath: ReadonlyMap<string, readonly NamespaceDeclaration[]>;
|
|
44
|
+
/** A declaração de cada nó `TSModuleDeclaration` que está num lugar permitido. */
|
|
45
|
+
readonly byNode: WeakMap<BaseNode, NamespaceDeclaration>;
|
|
46
|
+
/** Os aliases escritos num namespace: o nó da declaração do alias → a do namespace. */
|
|
47
|
+
readonly aliasOwner: WeakMap<BaseNode, NamespaceDeclaration>;
|
|
48
|
+
}
|
|
49
|
+
|
|
10
50
|
/**
|
|
11
51
|
* Um nível de escopo léxico (nome → `Schema`), sobre o `Scope<T>` genérico do
|
|
12
52
|
* `ast` — a mesma cadeia que o `behavior` usa, com o payload do eixo de tipos.
|
|
@@ -25,8 +65,21 @@ declare const lookup: (scope: Scope, name: string) => Schema | undefined;
|
|
|
25
65
|
* estreitado por guard (`narrow`, D13), e a que termina em `#` é o tipo
|
|
26
66
|
* DECLARADO de um binding mutável (D63) — nenhum identificador tem esses
|
|
27
67
|
* caracteres.
|
|
68
|
+
*
|
|
69
|
+
* Um binding do programa tem a chave do SÍMBOLO (`nome@id`, D87), e dois símbolos com
|
|
70
|
+
* o mesmo nome são chaves diferentes: o nome visível é o de fora do `@`, e vale o mais
|
|
71
|
+
* interno. A cadeia vem de dentro para fora, e um refinamento de um símbolo só existe
|
|
72
|
+
* onde o nome dele não está sombreado — então a primeira chave de cada nome é a que ele
|
|
73
|
+
* denota ali.
|
|
28
74
|
*/
|
|
29
75
|
declare const visibleNames: (scope: Scope) => Map<string, Schema>;
|
|
76
|
+
/**
|
|
77
|
+
* `name`, visto de `scope`, denota um nome do AMBIENTE (a DI, a lib) — e não um símbolo
|
|
78
|
+
* do programa? É o que o tsc responde olhando a declaração do símbolo resolvido (o
|
|
79
|
+
* `defaultLibrary` do `classifier2020`). A primeira ligação do nome, de dentro para fora, é
|
|
80
|
+
* a que ele denota ali (ver `visibleNames`); `false` quando nada o liga.
|
|
81
|
+
*/
|
|
82
|
+
declare function resolvesToEnvironment(scope: Scope, name: string): boolean;
|
|
30
83
|
/**
|
|
31
84
|
* O ambiente injetado pela aplicação — a fronteira de tipos do sistema.
|
|
32
85
|
* `scope` é a raiz da DI; `types` resolve tipos nomeados em anotações.
|
|
@@ -91,6 +144,14 @@ interface Env {
|
|
|
91
144
|
* mesmo tipo, e a aridade é cobrada como a de um alias.
|
|
92
145
|
*/
|
|
93
146
|
readonly nominals?: Nominals;
|
|
147
|
+
/**
|
|
148
|
+
* Os namespaces do ambiente (D83), lidos das chaves de `types` e `schemes`: um tipo com o
|
|
149
|
+
* nome qualificado (`state.Config`) é o membro `Config` do namespace `state`, como num
|
|
150
|
+
* `.d.ts` com `declare namespace state { … }`. Os corpos já chegam com os nomes
|
|
151
|
+
* resolvidos a partir do namespace de cada um — um `Config` no corpo de `state.Result` é
|
|
152
|
+
* o `state.Config` —, sem o host reescrever nada.
|
|
153
|
+
*/
|
|
154
|
+
readonly namespaces?: Namespaces;
|
|
94
155
|
}
|
|
95
156
|
/**
|
|
96
157
|
* O que um `Env` tem além das variáveis. Cada campo espelha o de {@link Env}, e
|
|
@@ -139,7 +200,7 @@ declare const resolveNamed: (env: Env, name: string) => Schema | undefined;
|
|
|
139
200
|
declare const resolveScheme: (env: Env, name: string) => TypeScheme | undefined;
|
|
140
201
|
|
|
141
202
|
type Severity = "error" | "warning";
|
|
142
|
-
type DiagnosticCode = "not-assignable" | "unknown-name" | "not-callable" | "no-such-member" | "not-object" | "possibly-nullish" | "unknown-value" | "const-needs-init" | "cannot-redeclare" | "circular-type-alias" | "circular-type-annotation" | "unknown-module" | "not-a-schema" | "type-as-value" | "asserter-needs-name" | "shadows-schema" | "missing-argument" | "excess-argument" | "excess-property" | "spread-argument" | "required-after-optional" | "not-iterable" | "not-spreadable" | "implicit-any" | "props-mismatch" | "no-matching-overload" | "constraint-violation" | "wrong-type-argument-count" | "unsupported" | "unused-name" | "assign-to-const" | "for-in-destructuring" | "readonly-write" | "cast-unsound" | "unprovable-value" | "not-arithmetic-operand" | "operator-not-applicable" | "implicit-coercion" | "node-not-allowed" | "name-not-allowed" | "type-feature-not-allowed" | "any-not-allowed" | "narrowing-cast-not-allowed" | "too-deep" | "too-complex-union" | "too-large" | "wrong-result-type";
|
|
203
|
+
type DiagnosticCode = "not-assignable" | "unknown-name" | "not-callable" | "no-such-member" | "not-object" | "possibly-nullish" | "unknown-value" | "const-needs-init" | "cannot-redeclare" | "circular-type-alias" | "circular-type-annotation" | "unknown-module" | "not-a-schema" | "type-as-value" | "asserter-needs-name" | "shadows-schema" | "missing-argument" | "excess-argument" | "excess-property" | "spread-argument" | "required-after-optional" | "not-iterable" | "not-spreadable" | "overwritten-property" | "implicit-any" | "props-mismatch" | "no-matching-overload" | "constraint-violation" | "wrong-type-argument-count" | "unsupported" | "unused-name" | "assign-to-const" | "for-in-destructuring" | "for-in-not-object" | "readonly-write" | "cast-unsound" | "unprovable-value" | "not-arithmetic-operand" | "operator-not-applicable" | "no-overlap" | "uncalled-function-check" | "not-comparable" | "misplaced-namespace" | "ambient-initializer" | "ambient-statement" | "used-before-assigned" | "used-before-declaration" | "implicit-coercion" | "node-not-allowed" | "name-not-allowed" | "type-feature-not-allowed" | "any-not-allowed" | "narrowing-cast-not-allowed" | "too-deep" | "too-complex-union" | "too-large" | "wrong-result-type";
|
|
143
204
|
/**
|
|
144
205
|
* A **classe** do diagnóstico — espelha a divisão de passes do `tsc` (que nós
|
|
145
206
|
* fundimos num walk só): `semantic` é o que o **binder** do tsc pega (validade do
|
|
@@ -187,6 +248,16 @@ type DiagnosticData = {
|
|
|
187
248
|
readonly kind: "implicit-coercion";
|
|
188
249
|
readonly textConvertible: boolean;
|
|
189
250
|
};
|
|
251
|
+
/**
|
|
252
|
+
* Outro lugar do programa que explica o diagnóstico — o `DiagnosticRelatedInformation` do
|
|
253
|
+
* tsc (`types.ts`), que o `addRelatedInfo` anexa, e o `relatedInformation` do LSP. O nó é
|
|
254
|
+
* por referência, como o do diagnóstico; a mensagem diz o papel dele ("This spread always
|
|
255
|
+
* overwrites this property.").
|
|
256
|
+
*/
|
|
257
|
+
interface DiagnosticRelatedInformation {
|
|
258
|
+
readonly node: BaseNode;
|
|
259
|
+
readonly message: string;
|
|
260
|
+
}
|
|
190
261
|
interface Diagnostic {
|
|
191
262
|
readonly code: DiagnosticCode;
|
|
192
263
|
/** A classe do diagnóstico (deriva do `code`) — ver {@link DiagnosticKind}. */
|
|
@@ -197,6 +268,8 @@ interface Diagnostic {
|
|
|
197
268
|
readonly message: string;
|
|
198
269
|
/** Ver {@link DiagnosticData}. Presente só onde há o que agir. */
|
|
199
270
|
readonly data?: DiagnosticData;
|
|
271
|
+
/** Ver {@link DiagnosticRelatedInformation}. Presente só onde o tsc a anexa. */
|
|
272
|
+
readonly relatedInformation?: readonly DiagnosticRelatedInformation[];
|
|
200
273
|
}
|
|
201
274
|
/**
|
|
202
275
|
* Builder genérico de diagnóstico (severidade configurável). Usado pelos
|
|
@@ -244,7 +317,28 @@ declare const diag: {
|
|
|
244
317
|
asserterNeedsName: (node: BaseNode, asserter: string) => Diagnostic;
|
|
245
318
|
shadowsSchema: (node: BaseNode, name: string) => Diagnostic;
|
|
246
319
|
unknownModule: (node: BaseNode, source: string) => Diagnostic;
|
|
247
|
-
|
|
320
|
+
/**
|
|
321
|
+
* O mesmo nome declarado de novo onde não pode, com o texto de cada mecanismo do tsc
|
|
322
|
+
* 3.9.10. O conceito é um só, o do `cannot-redeclare` (D2), e o nó é o NOME de cada
|
|
323
|
+
* declaração acusada.
|
|
324
|
+
*/
|
|
325
|
+
redeclaration: {
|
|
326
|
+
/** TS2451: o que está na tabela é variável de escopo de bloco (o `declareSymbol` do
|
|
327
|
+
* binder, `binder.ts:476`), em cada declaração. */
|
|
328
|
+
blockScoped: (node: BaseNode, name: string) => Diagnostic;
|
|
329
|
+
/** TS2300: o que está na tabela é outra coisa (um parâmetro, um import, um alias, um
|
|
330
|
+
* namespace), em cada declaração. */
|
|
331
|
+
duplicate: (node: BaseNode, name: string) => Diagnostic;
|
|
332
|
+
/** TS2440: o import fundido com uma declaração local que ocupa o significado do alvo
|
|
333
|
+
* dele (o `checkAliasSymbol`, `checker.ts:34279`), no especificador. */
|
|
334
|
+
importConflict: (node: BaseNode, name: string) => Diagnostic;
|
|
335
|
+
/** TS2492: o bloco do `catch` declara de novo o binding dele (o `checkTryStatement`,
|
|
336
|
+
* `checker.ts:33056`), na declaração do bloco. */
|
|
337
|
+
catchClause: (node: BaseNode, name: string) => Diagnostic;
|
|
338
|
+
/** TS2395: declarações do mesmo símbolo, umas exportadas e outras locais, no mesmo
|
|
339
|
+
* espaço (o `checkExportsOnMergedDeclarations`, `checker.ts:30401`), em cada uma. */
|
|
340
|
+
mixedExport: (node: BaseNode, name: string) => Diagnostic;
|
|
341
|
+
};
|
|
248
342
|
circularTypeAlias: (node: BaseNode, name: string) => Diagnostic;
|
|
249
343
|
circularTypeAnnotation: (node: BaseNode, name: string) => Diagnostic;
|
|
250
344
|
excessArgument: (node: BaseNode, expected: number, got: number) => Diagnostic;
|
|
@@ -265,12 +359,41 @@ declare const diag: {
|
|
|
265
359
|
requiredAfterOptional: (node: BaseNode) => Diagnostic;
|
|
266
360
|
notIterable: (node: BaseNode, type: Schema) => Diagnostic;
|
|
267
361
|
/**
|
|
268
|
-
*
|
|
269
|
-
*
|
|
270
|
-
|
|
271
|
-
|
|
362
|
+
* A fonte não se espalha: o `isValidSpreadType` do tsc (`checker.ts:23342`) a recusa. O
|
|
363
|
+
* código é o do conceito, par do `not-iterable` do padrão de array; a mensagem diz o caso.
|
|
364
|
+
*/
|
|
365
|
+
notSpreadable: {
|
|
366
|
+
/** TS2700: o rest de um padrão de objeto (`{ a, ...rest }`), no elemento do rest
|
|
367
|
+
* (`getTypeForBindingElement`, `checker.ts:7439`). D80. */
|
|
368
|
+
rest: (node: BaseNode) => Diagnostic;
|
|
369
|
+
/** TS2698: o spread num literal de objeto (`{ ...x }`), no membro `...x`
|
|
370
|
+
* (`checkObjectLiteral`, `checker.ts:23254`). */
|
|
371
|
+
spread: (node: BaseNode) => Diagnostic;
|
|
372
|
+
};
|
|
373
|
+
/**
|
|
374
|
+
* A chave escrita duas vezes num literal de objeto. O tsc a acusa por três mecanismos, e
|
|
375
|
+
* cada um é um diagnóstico com o texto e o nó dele; o conceito é um só, o do
|
|
376
|
+
* `cannot-redeclare` (D25).
|
|
377
|
+
*/
|
|
378
|
+
duplicateKey: {
|
|
379
|
+
/** TS1117: a chave IDENTIFICADOR repetida, no modo estrito (o `bindObjectLiteralExpression`
|
|
380
|
+
* do binder, `binder.ts:2037`), na repetição. */
|
|
381
|
+
strict: (node: BaseNode) => Diagnostic;
|
|
382
|
+
/** TS2300: o nome repetido (o `checkGrammarObjectLiteralExpression`), na repetição, com o
|
|
383
|
+
* texto do nome como escrito. */
|
|
384
|
+
identifier: (node: BaseNode, text: string) => Diagnostic;
|
|
385
|
+
/** TS2718: a chave computada ligada tarde com o nome de uma prop ligada cedo (o
|
|
386
|
+
* `lateBindMember`), na chave tardia. */
|
|
387
|
+
lateBound: (node: BaseNode, name: string) => Diagnostic;
|
|
388
|
+
/** TS2733: a primeira declaração ligada cedo desse nome, no mesmo `lateBindMember`. */
|
|
389
|
+
alsoDeclared: (node: BaseNode, name: string) => Diagnostic;
|
|
390
|
+
};
|
|
391
|
+
/**
|
|
392
|
+
* TS2783: a prop escrita num literal de objeto que um spread seguinte sempre sobrescreve,
|
|
393
|
+
* na prop escrita, com o spread na informação relacionada (TS2785) — o
|
|
394
|
+
* `checkSpreadPropOverrides` do tsc (`checker.ts:23558`).
|
|
272
395
|
*/
|
|
273
|
-
|
|
396
|
+
overwrittenProperty: (node: BaseNode, name: string, spread: BaseNode) => Diagnostic;
|
|
274
397
|
/**
|
|
275
398
|
* O `any` que ninguém escreveu — o `noImplicitAny` do tsc 3.9.10, que faz parte do
|
|
276
399
|
* `--strict` e está sempre ligado aqui (D81). Um código só, com o texto de cada caso (o
|
|
@@ -305,6 +428,43 @@ declare const diag: {
|
|
|
305
428
|
* lugar do `{1}`. */
|
|
306
429
|
constraintViolation: (node: BaseNode, actual: Schema, bound: Schema) => Diagnostic;
|
|
307
430
|
unsupported: (node: BaseNode, what: string) => Diagnostic;
|
|
431
|
+
/**
|
|
432
|
+
* O nome usado antes da declaração dele, com o texto de cada mecanismo do tsc 3.9.10. O
|
|
433
|
+
* conceito é um só (D2), e o nó é o USO.
|
|
434
|
+
*/
|
|
435
|
+
usedBeforeDeclaration: {
|
|
436
|
+
/** TS2448: a variável de escopo de bloco (o `checkResolvedBlockScopedVariable`,
|
|
437
|
+
* `checker.ts:2259`), com a declaração na informação relacionada (TS2728). */
|
|
438
|
+
blockScoped: (node: BaseNode, name: string, declaration: BaseNode) => Diagnostic;
|
|
439
|
+
/** TS2372: o default de um parâmetro cita o próprio parâmetro (`checker.ts:2009`). */
|
|
440
|
+
parameterSelf: (node: BaseNode, parameter: string) => Diagnostic;
|
|
441
|
+
/** TS2373: o default de um parâmetro cita um declarado depois dele (`checker.ts:2013`). */
|
|
442
|
+
parameterAfter: (node: BaseNode, parameter: string, name: string) => Diagnostic;
|
|
443
|
+
};
|
|
444
|
+
/** TS2454: a leitura de uma variável que, por algum caminho, ainda não recebeu valor. */
|
|
445
|
+
usedBeforeAssigned: (node: BaseNode, name: string) => Diagnostic;
|
|
446
|
+
/** O namespace (D83), com o texto do tsc em cada um. */
|
|
447
|
+
namespace: {
|
|
448
|
+
/** TS2503: o primeiro segmento de um nome qualificado não é namespace nenhum. O
|
|
449
|
+
* código é o do nome que não existe, como o TS2304. */
|
|
450
|
+
notFound: (node: BaseNode, name: string) => Diagnostic;
|
|
451
|
+
/** TS2694: o namespace não exporta o membro, no segmento do membro. */
|
|
452
|
+
noExportedMember: (node: BaseNode, namespace: string, member: string) => Diagnostic;
|
|
453
|
+
/** TS2708: um namespace só de tipos numa posição de valor — o par do TS2693. */
|
|
454
|
+
asValue: (node: BaseNode, name: string) => Diagnostic;
|
|
455
|
+
/** TS1235: a declaração fora do topo e de outro namespace, no primeiro token. */
|
|
456
|
+
misplaced: (node: BaseNode) => Diagnostic;
|
|
457
|
+
};
|
|
458
|
+
/** O contexto ambiente (`declare namespace`) só declara — o `checkAmbientInitializer` e o
|
|
459
|
+
* `checkGrammarStatementInAmbientContext` do tsc, no nó de lá. */
|
|
460
|
+
ambient: {
|
|
461
|
+
/** TS1039: o inicializador que o contexto ambiente não aceita, nele. */
|
|
462
|
+
initializer: (node: BaseNode) => Diagnostic;
|
|
463
|
+
/** TS1254: o `const` sem anotação com um inicializador que não é literal, nele. */
|
|
464
|
+
constInitializer: (node: BaseNode) => Diagnostic;
|
|
465
|
+
/** TS1036: o statement que não é declaração, uma vez por bloco, no primeiro token. */
|
|
466
|
+
statement: (node: BaseNode) => Diagnostic;
|
|
467
|
+
};
|
|
308
468
|
/**
|
|
309
469
|
* Argumento de tipo explícito com aridade errada. Assinatura **sem** type params
|
|
310
470
|
* declarados conta como `expected: 0` — é o que o tsc faz quando
|
|
@@ -329,7 +489,7 @@ declare const diag: {
|
|
|
329
489
|
* a resposta é sempre não (D9 — o piso é `const`). Mensagem no texto do TS2588 /
|
|
330
490
|
* TS2632 (import). Ver `mutation.ts`.
|
|
331
491
|
*/
|
|
332
|
-
assignToConst: (node: BaseNode, name: string, kind: "const" | "import") => Diagnostic;
|
|
492
|
+
assignToConst: (node: BaseNode, name: string, kind: "const" | "import" | "not-a-variable") => Diagnostic;
|
|
333
493
|
/**
|
|
334
494
|
* As chaves de um `for…in` não cabem no alvo dele (`let n: number; for (n in o)`). É a
|
|
335
495
|
* relação que falha — o tipo das chaves contra o tipo declarado do alvo —, e por isso
|
|
@@ -338,6 +498,10 @@ declare const diag: {
|
|
|
338
498
|
forInTarget: (node: BaseNode) => Diagnostic;
|
|
339
499
|
/** `for ([a] in o)` — o alvo de um `for…in` é uma chave, não se desestrutura. TS2491. */
|
|
340
500
|
forInDestructuring: (node: BaseNode) => Diagnostic;
|
|
501
|
+
/** `for (k in n)` com `n` que não é objeto, `any` nem type param — o TS2407 do
|
|
502
|
+
* `checkForInStatement` do tsc (`checker.ts:32148`), no que se percorre, com o tipo sem o
|
|
503
|
+
* nulo. */
|
|
504
|
+
forInNotObject: (node: BaseNode, type: Schema) => Diagnostic;
|
|
341
505
|
/**
|
|
342
506
|
* Escrita por um ÍNDICE readonly — `readonly T[]` ou `{ readonly [k: string]: V }`. É
|
|
343
507
|
* a outra metade do modificador: a relação (TC29) diz quem pode ser ATRIBUÍDO a quem;
|
|
@@ -377,6 +541,29 @@ declare const diag: {
|
|
|
377
541
|
* entre tipos incompatíveis. Espelha TS2365.
|
|
378
542
|
*/
|
|
379
543
|
operatorNotApplicable: (node: BaseNode, op: string, left: Schema, right: Schema) => Diagnostic;
|
|
544
|
+
/**
|
|
545
|
+
* TS2678: o `case` de um `switch` que não é comparável ao discriminante, no `case` — o
|
|
546
|
+
* `checkTypeComparableTo` do `checkSwitchStatement` do tsc (`checker.ts:32977`). Os tipos
|
|
547
|
+
* chegam como a comparação os viu: alargados até a base, a menos que os dois sejam
|
|
548
|
+
* literais. O tsc elabora a relação num objeto (TS2741, TS2740); aqui a mensagem é a do
|
|
549
|
+
* TS2678, e o código é o contrato (D2).
|
|
550
|
+
*/
|
|
551
|
+
notComparable: (node: BaseNode, source: Schema, target: Schema) => Diagnostic;
|
|
552
|
+
/**
|
|
553
|
+
* TS2774: a condição de um `if` ou de um `?:` é uma função que nunca é falsy, e o ramo
|
|
554
|
+
* verdadeiro não a usa — o `checkTestingKnownTruthyCallableType` do tsc
|
|
555
|
+
* (`checker.ts:31963`), na condição.
|
|
556
|
+
*/
|
|
557
|
+
uncalledFunctionCheck: (node: BaseNode) => Diagnostic;
|
|
558
|
+
/**
|
|
559
|
+
* TS2367: uma igualdade entre tipos sem sobreposição, cujo resultado já é sabido — o
|
|
560
|
+
* `tryGiveBetterPrimaryError` do tsc (`checker.ts`, no `reportOperatorError`): `'false'`
|
|
561
|
+
* para `===`/`==`, `'true'` para `!==`/`!=`. Os tipos chegam como a mensagem os mostra
|
|
562
|
+
* (as bases, quando os literais também não se relacionam). Com `missingAwait`, os dois
|
|
563
|
+
* lados se relacionariam desembrulhando o `Promise`, e a informação relacionada é o
|
|
564
|
+
* TS2773 (o `errorAndMaybeSuggestAwait`).
|
|
565
|
+
*/
|
|
566
|
+
noOverlap: (node: BaseNode, op: string, left: Schema, right: Schema, missingAwait: boolean) => Diagnostic;
|
|
380
567
|
/**
|
|
381
568
|
* `"x" + n` — o `+` não converte para texto (Proposal 009).
|
|
382
569
|
*
|
|
@@ -399,11 +586,13 @@ declare const diag: {
|
|
|
399
586
|
/**
|
|
400
587
|
* Coletor de diagnósticos — acumula durante o walk, sem `throw`.
|
|
401
588
|
*
|
|
402
|
-
* Guarda cada diagnóstico UMA vez: um segundo com o mesmo nó, o mesmo código
|
|
403
|
-
* mensagem não entra. É a coleção do tsc
|
|
404
|
-
* `insertSorted` e não repete o que o
|
|
405
|
-
*
|
|
406
|
-
*
|
|
589
|
+
* Guarda cada diagnóstico UMA vez: um segundo com o mesmo nó, o mesmo código, a mesma
|
|
590
|
+
* mensagem e a mesma informação relacionada não entra. É a coleção do tsc
|
|
591
|
+
* (`createDiagnosticCollection`, que insere pelo `insertSorted` e não repete o que o
|
|
592
|
+
* `compareDiagnostics` acha igual — ele compara também o `relatedInformation`), e é o que
|
|
593
|
+
* deixa um argumento ser tipado mais de uma vez — as rodadas da chamada (D53, D81) — sem
|
|
594
|
+
* que o erro de dentro dele saia duas vezes. Dois diagnósticos que só diferem na
|
|
595
|
+
* informação relacionada são dois: `{ a: 1, ...o1, ...o2 }` acusa o `a` uma vez por spread.
|
|
407
596
|
*/
|
|
408
597
|
interface DiagnosticSink {
|
|
409
598
|
/** Diagnósticos coletados, na ordem em que foram reportados, sem repetição. */
|
|
@@ -464,7 +653,8 @@ interface CheckResult {
|
|
|
464
653
|
* forma de scheme. Publicado porque QUEM CONSULTA precisa dele: `discover`
|
|
465
654
|
* (completions, navegação de membro) só expande um `apply` se receber este
|
|
466
655
|
* catálogo. Sem publicar, cada consumidor re-derivaria a união — e derivações
|
|
467
|
-
* paralelas divergem.
|
|
656
|
+
* paralelas divergem. Num programa sem alias é o catálogo do `Env`, o mesmo objeto em
|
|
657
|
+
* toda checagem, e congelado (D87).
|
|
468
658
|
*/
|
|
469
659
|
readonly schemes: Schemes;
|
|
470
660
|
/**
|
|
@@ -578,6 +768,15 @@ declare const FUNCTION_KINDS: readonly ["ArrowFunctionExpression", "FunctionExpr
|
|
|
578
768
|
* nó proibido por `compiled` — via `nodeViolation`, a **fonte única** de gating
|
|
579
769
|
* compartilhada com o interpret e o codegen. É o que `fromCapability` monta (+ o
|
|
580
770
|
* host allowlist). Garante que os 3 consumidores concordam por construção.
|
|
771
|
+
*
|
|
772
|
+
* Cada nó vai com o pai: é ele que separa o `export` de um membro de namespace
|
|
773
|
+
* (a visibilidade, como o modificador do tsc) do `export` de módulo do teto
|
|
774
|
+
* (capability CP1).
|
|
775
|
+
*
|
|
776
|
+
* O profile diz o que um lugar da aplicação pode EXECUTAR, e o corpo de um namespace que não
|
|
777
|
+
* vira código não executa: o nó do namespace é gateado, e o corpo dele não
|
|
778
|
+
* (`bodyDoesNotRun`). Os guards de autoria de tipo, abaixo, julgam o texto escrito e descem
|
|
779
|
+
* nele.
|
|
581
780
|
*/
|
|
582
781
|
declare function capabilityNodes(compiled: CompiledProfile, severity?: Severity): Guard;
|
|
583
782
|
/**
|
|
@@ -876,4 +1075,4 @@ declare function anchorDiagnostics<A>(root: object, diagnostics: readonly Diagno
|
|
|
876
1075
|
*/
|
|
877
1076
|
declare function spanOf(text: string, loc: SourceLocation | null | undefined): Span | undefined;
|
|
878
1077
|
|
|
879
|
-
export { type AnchorDiagnosticsOptions, type AnchoredDiagnostic, type Anchors, BINARY_OP, BINARY_OPS, type BinaryOpCategory, type BinaryOpSpec, type BindingMap, type CheckOptions, type CheckResult, type CheckerErrorCode, Completion, type Diagnostic, type DiagnosticCode, type DiagnosticData, type DiagnosticKind, type DiagnosticSink, type Env, type EnvOptions, FUNCTION_KINDS, type Guard, type GuardContext, LOGICAL_OPS, type LogicalOpSpec, type LowerValueOptions, type MissingProperty, type Nominals, ObjectSchema, type Occurrence, type OpResult, type Profile, type ReferenceSymbol, Schema, Schemes, type Scope, type Severity, type Shorthand, type TypeOverlay, type TypeRefSite, TypeScheme, UNARY_OPS, type UnaryOpSpec, type UnusedOptions, VarSchema, anchorDiagnostics, annotate, annotateReturn, asExpression, binaryOpsProducing, calleeAllowlist, capabilityNodes, check, childScope, collectBindings, collectMutations, collectReferences, collectUnused, componentProps, componentPropsOf, contextualTypeAt, createAnchors, createEnv, createSink, diag, diagnosticsAt, extractModuleType, fromCapability, guard, guardsFromCompiled, lookup, lowerValue, makeDiagnostic, maxArgs, maxCallNesting, maxDepth, maxFunctionNesting, maxNestingOf, maxNodes, memberCompletions, memberDepth, opResultSchema, resolveNamed, resolveScheme, resultType, rootScope, sameSymbol, scopeAt, scopeCompletions, spanOf, typeAt, unaryOpsProducing, visibleNames };
|
|
1078
|
+
export { type AnchorDiagnosticsOptions, type AnchoredDiagnostic, type Anchors, BINARY_OP, BINARY_OPS, type BinaryOpCategory, type BinaryOpSpec, type BindingMap, type CheckOptions, type CheckResult, type CheckerErrorCode, Completion, type Diagnostic, type DiagnosticCode, type DiagnosticData, type DiagnosticKind, type DiagnosticRelatedInformation, type DiagnosticSink, type Env, type EnvOptions, FUNCTION_KINDS, type Guard, type GuardContext, LOGICAL_OPS, type LogicalOpSpec, type LowerValueOptions, type MissingProperty, type Nominals, ObjectSchema, type Occurrence, type OpResult, type Profile, type ReferenceSymbol, Schema, Schemes, type Scope, type Severity, type Shorthand, type TypeOverlay, type TypeRefSite, TypeScheme, UNARY_OPS, type UnaryOpSpec, type UnusedOptions, VarSchema, anchorDiagnostics, annotate, annotateReturn, asExpression, binaryOpsProducing, calleeAllowlist, capabilityNodes, check, childScope, collectBindings, collectMutations, collectReferences, collectUnused, componentProps, componentPropsOf, contextualTypeAt, createAnchors, createEnv, createSink, diag, diagnosticsAt, extractModuleType, fromCapability, guard, guardsFromCompiled, lookup, lowerValue, makeDiagnostic, maxArgs, maxCallNesting, maxDepth, maxFunctionNesting, maxNestingOf, maxNodes, memberCompletions, memberDepth, opResultSchema, resolveNamed, resolveScheme, resolvesToEnvironment, resultType, rootScope, sameSymbol, scopeAt, scopeCompletions, spanOf, typeAt, unaryOpsProducing, visibleNames };
|