@lcap/nasl-language-server-core 4.4.0-beta.3 → 4.4.0-beta.31
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/out/checker.d.ts +4 -1
- package/out/checker.d.ts.map +1 -1
- package/out/checker.js +996 -96
- package/out/checker.js.map +1 -1
- package/out/index.d.ts +1 -1
- package/out/index.d.ts.map +1 -1
- package/out/index.js +5 -3
- package/out/index.js.map +1 -1
- package/out/reference-manager/build-q-name-def.d.ts.map +1 -1
- package/out/reference-manager/build-q-name-def.js +11 -0
- package/out/reference-manager/build-q-name-def.js.map +1 -1
- package/out/reference-manager/builtin-q-name.js +2 -2
- package/out/reference-manager/builtin-q-name.js.map +1 -1
- package/out/reference-manager/collect-q-name.d.ts +1 -1
- package/out/reference-manager/collect-q-name.d.ts.map +1 -1
- package/out/reference-manager/collect-q-name.js +64 -27
- package/out/reference-manager/collect-q-name.js.map +1 -1
- package/out/reference-manager/def-key-helpers.d.ts +38 -0
- package/out/reference-manager/def-key-helpers.d.ts.map +1 -0
- package/out/reference-manager/{get-q-name.js → def-key-helpers.js} +195 -23
- package/out/reference-manager/def-key-helpers.js.map +1 -0
- package/out/reference-manager/helper.js +2 -2
- package/out/reference-manager/helper.js.map +1 -1
- package/out/reference-manager/reference-manager.d.ts +146 -47
- package/out/reference-manager/reference-manager.d.ts.map +1 -1
- package/out/reference-manager/reference-manager.js +632 -204
- package/out/reference-manager/reference-manager.js.map +1 -1
- package/out/reference-manager/remove-q-name.d.ts +1 -1
- package/out/reference-manager/remove-q-name.d.ts.map +1 -1
- package/out/reference-manager/remove-q-name.js +14 -14
- package/out/reference-manager/remove-q-name.js.map +1 -1
- package/out/reference-manager/rename-q-name.d.ts +26 -26
- package/out/reference-manager/rename-q-name.d.ts.map +1 -1
- package/out/reference-manager/rename-q-name.js +48 -167
- package/out/reference-manager/rename-q-name.js.map +1 -1
- package/out/reference-manager/symbol-type.d.ts +8 -3
- package/out/reference-manager/symbol-type.d.ts.map +1 -1
- package/out/reference-manager/symbol-type.js +9 -2
- package/out/reference-manager/symbol-type.js.map +1 -1
- package/out/reference-manager/update-nasl-fragment.d.ts +2 -2
- package/out/reference-manager/update-nasl-fragment.d.ts.map +1 -1
- package/out/reference-manager/update-nasl-fragment.js +33 -28
- package/out/reference-manager/update-nasl-fragment.js.map +1 -1
- package/out/services/bindable-logic-service.js.map +1 -1
- package/out/symbol/traverse/concepts/index.d.ts +1 -1
- package/out/symbol/traverse/concepts/index.d.ts.map +1 -1
- package/out/symbol/traverse/concepts/logic/expression/member-expression.js.map +1 -1
- package/out/typer/collectGlobalDefs.d.ts +8 -0
- package/out/typer/collectGlobalDefs.d.ts.map +1 -1
- package/out/typer/collectGlobalDefs.js +102 -54
- package/out/typer/collectGlobalDefs.js.map +1 -1
- package/out/typer/component-def-manager/component-def-manager.d.ts +16 -0
- package/out/typer/component-def-manager/component-def-manager.d.ts.map +1 -1
- package/out/typer/component-def-manager/component-def-manager.js +63 -2
- package/out/typer/component-def-manager/component-def-manager.js.map +1 -1
- package/out/typer/component-def-manager/utils.d.ts.map +1 -1
- package/out/typer/component-def-manager/utils.js +26 -0
- package/out/typer/component-def-manager/utils.js.map +1 -1
- package/out/typer/dispatch-all.d.ts +3 -1
- package/out/typer/dispatch-all.d.ts.map +1 -1
- package/out/typer/dispatch-all.js +51 -6
- package/out/typer/dispatch-all.js.map +1 -1
- package/out/typer/dispatch-call.d.ts +27 -1
- package/out/typer/dispatch-call.d.ts.map +1 -1
- package/out/typer/dispatch-call.js +151 -107
- package/out/typer/dispatch-call.js.map +1 -1
- package/out/typer/dispatch-def.d.ts.map +1 -1
- package/out/typer/dispatch-def.js +51 -23
- package/out/typer/dispatch-def.js.map +1 -1
- package/out/typer/dispatch-expr.d.ts +2 -1
- package/out/typer/dispatch-expr.d.ts.map +1 -1
- package/out/typer/dispatch-expr.js +240 -199
- package/out/typer/dispatch-expr.js.map +1 -1
- package/out/typer/dispatch-process.d.ts +8 -1
- package/out/typer/dispatch-process.d.ts.map +1 -1
- package/out/typer/dispatch-process.js +37 -4
- package/out/typer/dispatch-process.js.map +1 -1
- package/out/typer/dispatch-stmt.d.ts.map +1 -1
- package/out/typer/dispatch-stmt.js +39 -25
- package/out/typer/dispatch-stmt.js.map +1 -1
- package/out/typer/dispatch-view.d.ts +1 -1
- package/out/typer/dispatch-view.d.ts.map +1 -1
- package/out/typer/dispatch-view.js +87 -48
- package/out/typer/dispatch-view.js.map +1 -1
- package/out/typer/fix-use-before-assign.js.map +1 -1
- package/out/typer/get-oql-files.d.ts.map +1 -1
- package/out/typer/get-oql-files.js +3 -9
- package/out/typer/get-oql-files.js.map +1 -1
- package/out/typer/incremental-update.d.ts +14 -7
- package/out/typer/incremental-update.d.ts.map +1 -1
- package/out/typer/incremental-update.js +396 -43
- package/out/typer/incremental-update.js.map +1 -1
- package/out/typer/oql-checker/chain-call-transformer.d.ts.map +1 -1
- package/out/typer/oql-checker/chain-call-transformer.js +17 -4
- package/out/typer/oql-checker/chain-call-transformer.js.map +1 -1
- package/out/typer/oql-checker/ts-parser.d.ts.map +1 -1
- package/out/typer/oql-checker/ts-parser.js +252 -37
- package/out/typer/oql-checker/ts-parser.js.map +1 -1
- package/out/typer/overload-helper.d.ts.map +1 -1
- package/out/typer/overload-helper.js +190 -23
- package/out/typer/overload-helper.js.map +1 -1
- package/out/typer/solver.d.ts +8 -9
- package/out/typer/solver.d.ts.map +1 -1
- package/out/typer/solver.js +54 -31
- package/out/typer/solver.js.map +1 -1
- package/out/typer/subster.d.ts +1 -1
- package/out/typer/subster.d.ts.map +1 -1
- package/out/typer/subster.js +251 -57
- package/out/typer/subster.js.map +1 -1
- package/out/typer/topo-sort.d.ts +38 -0
- package/out/typer/topo-sort.d.ts.map +1 -1
- package/out/typer/topo-sort.js +272 -3
- package/out/typer/topo-sort.js.map +1 -1
- package/out/typer/type-manager.d.ts +1 -0
- package/out/typer/type-manager.d.ts.map +1 -1
- package/out/typer/type-manager.js +14 -11
- package/out/typer/type-manager.js.map +1 -1
- package/out/typer/type-predicate.d.ts +1 -0
- package/out/typer/type-predicate.d.ts.map +1 -1
- package/out/typer/type-predicate.js +83 -14
- package/out/typer/type-predicate.js.map +1 -1
- package/out/typer/typer.d.ts +51 -6
- package/out/typer/typer.d.ts.map +1 -1
- package/out/typer/typer.js +248 -46
- package/out/typer/typer.js.map +1 -1
- package/out/typer/unifier.d.ts +12 -1
- package/out/typer/unifier.d.ts.map +1 -1
- package/out/typer/unifier.js +110 -37
- package/out/typer/unifier.js.map +1 -1
- package/out/utils/debug.js.map +1 -1
- package/out/utils/type-operator.d.ts +15 -0
- package/out/utils/type-operator.d.ts.map +1 -1
- package/out/utils/type-operator.js +65 -3
- package/out/utils/type-operator.js.map +1 -1
- package/package.json +5 -5
- package/out/reference-manager/get-q-name.d.ts +0 -9
- package/out/reference-manager/get-q-name.d.ts.map +0 -1
- package/out/reference-manager/get-q-name.js.map +0 -1
- package/out/reference-manager/view-elem-logic.d.ts +0 -44
- package/out/reference-manager/view-elem-logic.d.ts.map +0 -1
- package/out/reference-manager/view-elem-logic.js +0 -164
- package/out/reference-manager/view-elem-logic.js.map +0 -1
package/out/typer/solver.js
CHANGED
|
@@ -189,70 +189,93 @@ class Solver {
|
|
|
189
189
|
return undefined;
|
|
190
190
|
};
|
|
191
191
|
/**
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
*
|
|
200
|
-
* 8. 下界和上界都只有 Number:选择 Long
|
|
192
|
+
* 处理特定边界(下界或上界)的类型
|
|
193
|
+
*
|
|
194
|
+
* 策略(按优先级):
|
|
195
|
+
* 1. preferUnion 且存在非纯数值 union:优先返回 union 类型
|
|
196
|
+
* 2. preferUnion 且仅存在纯数值 union:返回该 union
|
|
197
|
+
* 3. 全为数值(Decimal/Long/Number):Decimal > Long > Number(精度优先)
|
|
198
|
+
* 4. 混合(含非数值):按 boundEntries 顺序取第一个有效 bound,Null 视为无约束跳过
|
|
199
|
+
* 5. 仅 Null:返回 Null
|
|
201
200
|
*/
|
|
202
201
|
this.processSingleBounds = (boundEntries, subst, incTyVars, preferUnion) => {
|
|
202
|
+
// 下界策略:优先选择 union 类型(但纯数值 Union 类型需要特殊处理)
|
|
203
|
+
const unionTypes = [];
|
|
203
204
|
// 首先考虑 union 类型优先级
|
|
204
205
|
if (preferUnion) {
|
|
205
|
-
// 下界策略:优先选择 union 类型
|
|
206
|
-
const unionTypes = [];
|
|
207
206
|
for (const boundEntry of boundEntries) {
|
|
208
207
|
const ty = boundEntry.bound;
|
|
209
|
-
const shouldInclude = !(0, type_predicate_1.isAnyTy)(ty) && (incTyVars || !hasNaslTyParamAnn(ty, subst));
|
|
208
|
+
const shouldInclude = !(0, type_predicate_1.isAnyTy)(ty) && (incTyVars || !hasNaslTyParamAnn(ty, subst) || (0, type_predicate_1.isIndexedType)(ty));
|
|
210
209
|
if (shouldInclude && (0, type_predicate_1.isUnionTy)(ty)) {
|
|
211
210
|
if (!unionTypes.includes(ty)) {
|
|
212
211
|
unionTypes.push(ty);
|
|
213
212
|
}
|
|
214
213
|
}
|
|
215
214
|
}
|
|
215
|
+
// 检查是否所有 Union 类型都是纯数值 Union 类型(所有成员都是数值类型)
|
|
216
|
+
// 注意:空数组的 every 会返回 true,所以需要先检查长度
|
|
217
|
+
const isPureNumericUnion = unionTypes.length > 0 && unionTypes.every(unionTy => {
|
|
218
|
+
if (!(0, type_predicate_1.isUnionTy)(unionTy) || !unionTy.typeArguments) {
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
return unionTy.typeArguments.every(memberTy => (0, type_predicate_1.isNumericTy)(memberTy));
|
|
222
|
+
});
|
|
216
223
|
// 如果找到 union 类型,优先返回
|
|
217
|
-
if (unionTypes.length > 0) {
|
|
224
|
+
if (unionTypes.length > 0 && !isPureNumericUnion) {
|
|
218
225
|
return unionTypes;
|
|
219
226
|
}
|
|
220
227
|
}
|
|
221
|
-
//
|
|
228
|
+
// 非 union 情况:全为数值时用 Decimal > Long > Number;否则按顺序取第一个有效 bound(跳过 Null)
|
|
229
|
+
// 纯数值 Union 时仍返回 unionTypes
|
|
230
|
+
if (preferUnion && unionTypes.length > 0) {
|
|
231
|
+
return unionTypes;
|
|
232
|
+
}
|
|
222
233
|
let hasDecimal = false;
|
|
223
234
|
let hasLong = false;
|
|
224
235
|
let hasNumber = false;
|
|
236
|
+
let hasNonNumeric = false;
|
|
237
|
+
let hadNull = false;
|
|
238
|
+
const inOrder = [];
|
|
225
239
|
for (const boundEntry of boundEntries) {
|
|
226
240
|
const ty = boundEntry.bound;
|
|
241
|
+
const shouldInclude = !(0, type_predicate_1.isAnyTy)(ty) && (incTyVars || !hasNaslTyParamAnn(ty, subst) || (0, type_predicate_1.isIndexedType)(ty));
|
|
242
|
+
if (!shouldInclude)
|
|
243
|
+
continue;
|
|
244
|
+
if ((0, type_predicate_1.isNullTy)(ty)) {
|
|
245
|
+
hadNull = true;
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
227
248
|
if (ty.typeName === 'Decimal') {
|
|
228
249
|
hasDecimal = true;
|
|
250
|
+
inOrder.push(ty);
|
|
229
251
|
}
|
|
230
252
|
else if (ty.typeName === 'Long') {
|
|
231
253
|
hasLong = true;
|
|
254
|
+
inOrder.push(ty);
|
|
232
255
|
}
|
|
233
256
|
else if (ty.typeName === 'Number') {
|
|
234
257
|
hasNumber = true;
|
|
258
|
+
inOrder.push(ty);
|
|
235
259
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
return [type_manager_1.naslDecimalTy];
|
|
240
|
-
}
|
|
241
|
-
if (hasLong || hasNumber) {
|
|
242
|
-
return [type_manager_1.naslLongTy];
|
|
243
|
-
}
|
|
244
|
-
// 处理其他非数值类型
|
|
245
|
-
const result = [];
|
|
246
|
-
for (const boundEntry of boundEntries) {
|
|
247
|
-
const ty = boundEntry.bound;
|
|
248
|
-
const shouldInclude = !(0, type_predicate_1.isAnyTy)(ty) && (incTyVars || !hasNaslTyParamAnn(ty, subst));
|
|
249
|
-
if (shouldInclude && !result.includes(ty)) {
|
|
250
|
-
result.push(ty);
|
|
260
|
+
else {
|
|
261
|
+
hasNonNumeric = true;
|
|
262
|
+
inOrder.push(ty);
|
|
251
263
|
}
|
|
252
264
|
}
|
|
253
|
-
if (
|
|
254
|
-
|
|
265
|
+
if (hasNonNumeric && inOrder.length > 0) {
|
|
266
|
+
const first = inOrder[0];
|
|
267
|
+
if (first.typeName === 'Decimal')
|
|
268
|
+
return [type_manager_1.naslDecimalTy];
|
|
269
|
+
if (first.typeName === 'Long' || first.typeName === 'Number')
|
|
270
|
+
return [type_manager_1.naslLongTy];
|
|
271
|
+
return [first];
|
|
255
272
|
}
|
|
273
|
+
if (hasDecimal)
|
|
274
|
+
return [type_manager_1.naslDecimalTy];
|
|
275
|
+
if (hasLong || hasNumber)
|
|
276
|
+
return [type_manager_1.naslLongTy];
|
|
277
|
+
if (hadNull && inOrder.length === 0)
|
|
278
|
+
return [type_manager_1.naslNullTy];
|
|
256
279
|
return undefined;
|
|
257
280
|
};
|
|
258
281
|
this.topoSortTyVars = (cs) => {
|
package/out/typer/solver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solver.js","sourceRoot":"","sources":["../../src/typer/solver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"solver.js","sourceRoot":"","sources":["../../src/typer/solver.ts"],"names":[],"mappings":"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"}
|
package/out/typer/subster.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { TyVarSolution } from './type-manager';
|
|
|
4
4
|
export declare const emptySubst: TyVarSolution;
|
|
5
5
|
export declare const substTyAnn: (env: SemEnv, m: TyVarSolution) => (ty: TypeAnnotation | undefined) => TypeAnnotation;
|
|
6
6
|
export declare const inPlaceSubstTyAnn: (env: SemEnv, m: TyVarSolution) => (ty: TypeAnnotation | undefined) => TypeAnnotation;
|
|
7
|
-
export declare const traverseSubstRunCheck: (env: SemEnv, nd: SyntaxNode) =>
|
|
7
|
+
export declare const traverseSubstRunCheck: (env: SemEnv, nd: SyntaxNode) => TyVarSolution;
|
|
8
8
|
export declare const traverseAndSubst: (env: SemEnv) => (__node: SyntaxNode, subst: TyVarSolution) => Map<TypeAnnotation, TypeAnnotation>;
|
|
9
9
|
export declare const normalizeWithSubst: (env: SemEnv, pSubst: (ty: TypeAnnotation | undefined) => TypeAnnotation, ty: TypeAnnotation | undefined) => TypeAnnotation;
|
|
10
10
|
export declare function makeRefTySubst(tyParams: TypeAnnotation[], tyArgs: TypeAnnotation[]): TyVarSolution;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subster.d.ts","sourceRoot":"","sources":["../../src/typer/subster.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,UAAU,EACV,cAAc,EACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,MAAM,EAId,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAyG,aAAa,
|
|
1
|
+
{"version":3,"file":"subster.d.ts","sourceRoot":"","sources":["../../src/typer/subster.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,UAAU,EACV,cAAc,EACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,MAAM,EAId,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAyG,aAAa,EAA6C,MAAM,gBAAgB,CAAC;AAWjM,eAAO,MAAM,UAAU,EAAE,aAAiD,CAAC;AA4H3E,eAAO,MAAM,UAAU,QAAS,MAAM,4BAA4B,cAAc,GAAG,SAAS,KAAG,cAuN9F,CAAA;AAGD,eAAO,MAAM,iBAAiB,QAAS,MAAM,4BAA4B,cAAc,GAAG,SAAS,KAAG,cAuNrG,CAAA;AAED,eAAO,MAAM,qBAAqB,QAAS,MAAM,MAAM,UAAU,kBA0ChE,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAS,MAAM,cAAc,UAAU,8DA6EnE,CAAA;AAED,eAAO,MAAM,kBAAkB,QAAU,MAAM,UAAU,CAAC,EAAE,EAAE,cAAc,GAAG,SAAS,KAAK,cAAc,MAAM,cAAc,GAAG,SAAS,mBAC/G,CAAC;AAgB7B,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,aAAa,CAMlG"}
|
package/out/typer/subster.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.makeRefTySubst = exports.normalizeWithSubst = exports.traverseAndSubst = exports.traverseSubstRunCheck = exports.inPlaceSubstTyAnn = exports.substTyAnn = exports.emptySubst = void 0;
|
|
4
4
|
const nasl_concepts_1 = require("@lcap/nasl-concepts");
|
|
5
5
|
const index_1 = require("./index");
|
|
6
|
-
const
|
|
6
|
+
const def_key_helpers_1 = require("../reference-manager/def-key-helpers");
|
|
7
7
|
const type_manager_1 = require("./type-manager");
|
|
8
8
|
const type_predicate_1 = require("./type-predicate");
|
|
9
9
|
const query_tokens_1 = require("./query-manager/query-tokens");
|
|
@@ -15,6 +15,100 @@ const typer_1 = require("./typer");
|
|
|
15
15
|
const service_1 = require("@lcap/nasl-concepts/service");
|
|
16
16
|
const nasl_utils_1 = require("@lcap/nasl-utils");
|
|
17
17
|
exports.emptySubst = new Map();
|
|
18
|
+
/**
|
|
19
|
+
* 解析 SelectOverload 类型的参数并调用重载函数解析器
|
|
20
|
+
* TypeArguments encoding: [fnNameLiteral, namespaceLiteral, genCountLiteral, ...typeArgs, ...argTypes]
|
|
21
|
+
* @param env 语义环境
|
|
22
|
+
* @param typeArguments 类型参数数组
|
|
23
|
+
* @param pSubst 类型替换函数
|
|
24
|
+
* @returns 解析结果,包含解析后的返回类型
|
|
25
|
+
*/
|
|
26
|
+
const resolveSelectOverloadBase = (env, typeArguments, pSubst) => {
|
|
27
|
+
// 至少需要 3 个基础参数(fnName, namespace, genCount)
|
|
28
|
+
if (!typeArguments || typeArguments.length < 3) {
|
|
29
|
+
console.log('resolveSelectOverloadBase: typeArguments 长度不足', `length: ${typeArguments?.length ?? 0}`);
|
|
30
|
+
return { retTy: undefined, name: '', nsp: '' };
|
|
31
|
+
}
|
|
32
|
+
const fnNameLit = typeArguments[0];
|
|
33
|
+
const nspLit = typeArguments[1];
|
|
34
|
+
const genCountLit = typeArguments[2];
|
|
35
|
+
const name = (fnNameLit?.typeKind === 'literal' ? fnNameLit.literal : undefined) ?? '';
|
|
36
|
+
const nsp = (nspLit?.typeKind === 'literal' ? nspLit.literal : undefined) ?? '';
|
|
37
|
+
const genCount = parseInt((genCountLit?.typeKind === 'literal' ? genCountLit.literal : '0') || '0', 10) || 0;
|
|
38
|
+
const allArgs = typeArguments.slice(3).map(pSubst);
|
|
39
|
+
const typeArgs = allArgs.slice(0, genCount);
|
|
40
|
+
const callArgs = allArgs.slice(genCount);
|
|
41
|
+
const { retTy } = (0, overload_helper_1.resolveOverloadedFunction)(env, nsp, name, callArgs, typeArgs);
|
|
42
|
+
return { retTy, name, nsp };
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* 解析 SelectOverload 类型
|
|
46
|
+
* @param env 语义环境
|
|
47
|
+
* @param ty SelectOverload 类型
|
|
48
|
+
* @param pSubst 类型替换函数
|
|
49
|
+
* @returns 解析后的类型,如果解析失败则返回原类型
|
|
50
|
+
*/
|
|
51
|
+
const resolveSelectOverload = (env, ty, pSubst) => {
|
|
52
|
+
const typeArguments = ty.typeArguments || [];
|
|
53
|
+
const { retTy } = resolveSelectOverloadBase(env, typeArguments, pSubst);
|
|
54
|
+
return retTy ?? ty;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* 解析 SelectOverloadGenericItem 类型
|
|
58
|
+
* @param env 语义环境
|
|
59
|
+
* @param ty SelectOverloadGenericItem 类型
|
|
60
|
+
* @param pSubst 类型替换函数
|
|
61
|
+
* @returns 解析后的类型,如果解析失败则返回原类型
|
|
62
|
+
*/
|
|
63
|
+
const resolveSelectOverloadGenericItem = (env, ty, pSubst) => {
|
|
64
|
+
const typeArguments = ty.typeArguments || [];
|
|
65
|
+
// 检查 typeArguments 长度是否足够(至少需要包含 SelectOverload 的基础参数 + typeName + index)
|
|
66
|
+
if (typeArguments.length < 5) {
|
|
67
|
+
// SelectOverload 至少需要 3 个基础参数(fnName, namespace, genCount),加上 typeName 和 index 至少需要 5 个
|
|
68
|
+
console.log('化简失败:typeArguments 长度不足', (0, type_manager_1.showType)(ty), `length: ${typeArguments.length}`);
|
|
69
|
+
return ty;
|
|
70
|
+
}
|
|
71
|
+
const restArgs = typeArguments.slice(0, -2);
|
|
72
|
+
const typeName = typeArguments[typeArguments.length - 2];
|
|
73
|
+
const index = typeArguments[typeArguments.length - 1];
|
|
74
|
+
// 检查并提取类型名和索引
|
|
75
|
+
if (!typeName || typeName.typeKind !== 'literal' || typeof typeName.literal !== 'string') {
|
|
76
|
+
console.log('化简失败:类型名不是字符串字面量', (0, type_manager_1.showType)(ty));
|
|
77
|
+
return ty;
|
|
78
|
+
}
|
|
79
|
+
if (!index || index.typeKind !== 'literal' || typeof index.literal !== 'string') {
|
|
80
|
+
console.log('化简失败:索引不是字符串字面量', (0, type_manager_1.showType)(ty));
|
|
81
|
+
return ty;
|
|
82
|
+
}
|
|
83
|
+
const expectedTypeName = typeName.literal;
|
|
84
|
+
if (!expectedTypeName) {
|
|
85
|
+
console.log('化简失败:类型名为空字符串', (0, type_manager_1.showType)(ty));
|
|
86
|
+
return ty;
|
|
87
|
+
}
|
|
88
|
+
const indexStr = index.literal;
|
|
89
|
+
const indexNum = parseInt(indexStr, 10);
|
|
90
|
+
if (isNaN(indexNum) || indexNum < 0) {
|
|
91
|
+
console.log('化简失败:无效的索引', (0, type_manager_1.showType)(ty), indexStr);
|
|
92
|
+
return ty;
|
|
93
|
+
}
|
|
94
|
+
// 使用基础函数解析重载
|
|
95
|
+
const { retTy } = resolveSelectOverloadBase(env, restArgs, pSubst);
|
|
96
|
+
if (retTy && (0, type_predicate_1.isResolvedTy)(retTy) && (0, type_predicate_1.isNaslGenericTy)(retTy) && retTy.typeName === expectedTypeName) {
|
|
97
|
+
const genericTypeArgs = retTy.typeArguments;
|
|
98
|
+
if (!genericTypeArgs || indexNum >= genericTypeArgs.length) {
|
|
99
|
+
console.log('化简失败:索引越界', (0, type_manager_1.showType)(ty), (0, type_manager_1.showType)(retTy), `index: ${indexNum}, arrayLength: ${genericTypeArgs?.length ?? 0}`);
|
|
100
|
+
return ty;
|
|
101
|
+
}
|
|
102
|
+
const targetTy = genericTypeArgs[indexNum];
|
|
103
|
+
if (targetTy) {
|
|
104
|
+
return targetTy;
|
|
105
|
+
}
|
|
106
|
+
console.log('化简失败:无法从返回类型中提取指定索引的类型参数', (0, type_manager_1.showType)(ty), (0, type_manager_1.showType)(retTy), `index: ${indexNum}`);
|
|
107
|
+
return ty;
|
|
108
|
+
}
|
|
109
|
+
console.log('化简失败:返回类型不匹配或无法解析', (0, type_manager_1.showType)(ty), (0, type_manager_1.showType)(retTy), `expectedTypeName: ${expectedTypeName}`);
|
|
110
|
+
return ty;
|
|
111
|
+
};
|
|
18
112
|
// 目前仅进行一次代换,无递归代换
|
|
19
113
|
const substTyAnn = (env, m) => (ty) => {
|
|
20
114
|
if (!ty) {
|
|
@@ -49,7 +143,19 @@ const substTyAnn = (env, m) => (ty) => {
|
|
|
49
143
|
if (newTy.constraints) {
|
|
50
144
|
newTy.constraints = (0, exports.substTyAnn)(env, m)(newTy.constraints);
|
|
51
145
|
}
|
|
52
|
-
if (ty.typeKind === '
|
|
146
|
+
if (ty.typeKind === 'union') {
|
|
147
|
+
const typeArguments = (0, type_manager_1.removeTysDup)(env, ty.typeArguments || []);
|
|
148
|
+
if (typeArguments?.length !== ty.typeArguments?.length) {
|
|
149
|
+
if (typeArguments?.length === 1) {
|
|
150
|
+
return typeArguments?.[0];
|
|
151
|
+
}
|
|
152
|
+
ty.updateInstance({
|
|
153
|
+
typeArguments,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
return ty;
|
|
157
|
+
}
|
|
158
|
+
else if (ty.typeKind === 'function') {
|
|
53
159
|
if (ty.fnArgs) {
|
|
54
160
|
newTy.fnArgs = ty.fnArgs.map(x => {
|
|
55
161
|
return {
|
|
@@ -60,12 +166,25 @@ const substTyAnn = (env, m) => (ty) => {
|
|
|
60
166
|
});
|
|
61
167
|
}
|
|
62
168
|
}
|
|
63
|
-
else if (
|
|
169
|
+
else if ((0, type_predicate_1.isIndexedType)(ty)) {
|
|
64
170
|
const pSubst = (0, exports.substTyAnn)(env, m);
|
|
65
171
|
const objectType = pSubst(ty.objectType);
|
|
66
172
|
const indexType = pSubst(ty.indexType);
|
|
67
|
-
//
|
|
68
|
-
|
|
173
|
+
// 尝试从 objectType 中提取属性类型
|
|
174
|
+
const pickedType = (0, type_operator_1.typePick)(env, objectType, indexType, pSubst);
|
|
175
|
+
if (pickedType !== undefined) {
|
|
176
|
+
return pickedType;
|
|
177
|
+
}
|
|
178
|
+
// 如果 typePick 返回 undefined,需要判断是属性不存在还是类型未求解
|
|
179
|
+
// 如果 objectType 已经求解到可以判断属性是否存在的地步,但属性不存在,
|
|
180
|
+
// 则不应该创建新的 IndexedType(避免死循环),而是返回 naslAnyTy
|
|
181
|
+
if ((0, type_operator_1.canDeterminePropertyExistence)(env, objectType)) {
|
|
182
|
+
// 属性不存在,返回 naslAnyTy 表示无法求解,避免死循环
|
|
183
|
+
// 类型错误会在其他地方(如 normalize 或类型检查)被报告
|
|
184
|
+
return index_1.naslAnyTy;
|
|
185
|
+
}
|
|
186
|
+
// objectType 尚未求解,可以创建新的 IndexedType 等待后续求解
|
|
187
|
+
return nasl_concepts_1.TypeAnnotation.createIndexedType(objectType, indexType);
|
|
69
188
|
}
|
|
70
189
|
else if (ty.typeKind === 'generic') {
|
|
71
190
|
if (ty.typeName === 'DeDataSource') {
|
|
@@ -104,6 +223,24 @@ const substTyAnn = (env, m) => (ty) => {
|
|
|
104
223
|
}
|
|
105
224
|
return ty;
|
|
106
225
|
}
|
|
226
|
+
else if (ty.typeName === 'Exclude') {
|
|
227
|
+
// Exclude<T, U>: 从 T 中排除 U 包含的类型
|
|
228
|
+
const pSubst = (0, exports.substTyAnn)(env, m);
|
|
229
|
+
const baseTy = (0, typer_1.normalize)(env, pSubst(ty.typeArguments?.[0]));
|
|
230
|
+
const excludedTy = pSubst(ty.typeArguments?.[1]);
|
|
231
|
+
if ((0, type_predicate_1.isUnionTy)(baseTy) && baseTy.typeArguments?.length) {
|
|
232
|
+
// 从 baseTy 的 typeArguments 中过滤掉 excludedTy 包含的类型
|
|
233
|
+
const excludedTys = (0, type_predicate_1.isUnionTy)(excludedTy) ? excludedTy.typeArguments : [excludedTy];
|
|
234
|
+
const remainingTys = baseTy.typeArguments.filter(t1 => !excludedTys?.some(t2 => (0, type_predicate_1.isEqualTy)(env, t1, t2)));
|
|
235
|
+
if (remainingTys.length > 0) {
|
|
236
|
+
return (0, type_manager_1.createUnionTyAnnIfNecessary)(env, remainingTys);
|
|
237
|
+
}
|
|
238
|
+
// 如果排除后为空,返回 naslAnyTy(理论上不应该发生)
|
|
239
|
+
return index_1.naslAnyTy;
|
|
240
|
+
}
|
|
241
|
+
// baseTy 不是 union 或无法求解,保持原样
|
|
242
|
+
return ty;
|
|
243
|
+
}
|
|
107
244
|
else if (ty.typeName === 'SelectBinaryOverload') {
|
|
108
245
|
const pSubst = (0, exports.substTyAnn)(env, m);
|
|
109
246
|
// FIXME wudengke 直接读第一个泛型参数会因为upcast而丢失literal值,因此写死
|
|
@@ -124,21 +261,14 @@ const substTyAnn = (env, m) => (ty) => {
|
|
|
124
261
|
return (0, type_operator_1.applyCheckUniqueKeys)(env, ty, (0, exports.substTyAnn)(env, m));
|
|
125
262
|
}
|
|
126
263
|
else if (ty.typeName === 'SelectOverload') {
|
|
127
|
-
// TypeArguments encoding: [fnNameLiteral, namespaceLiteral, genCountLiteral, ...typeArgs, ...argTypes]
|
|
128
264
|
const pSubst = (0, exports.substTyAnn)(env, m);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
const typeArgs = allArgs.slice(0, genCount);
|
|
137
|
-
const callArgs = allArgs.slice(genCount);
|
|
138
|
-
const { retTy } = (0, overload_helper_1.resolveOverloadedFunction)(env, nsp, name, callArgs, typeArgs);
|
|
139
|
-
return retTy ?? ty;
|
|
140
|
-
}
|
|
141
|
-
const qName = (0, get_q_name_1.getTokenQualifiedName)(ty);
|
|
265
|
+
return resolveSelectOverload(env, ty, pSubst);
|
|
266
|
+
}
|
|
267
|
+
else if (ty.typeName === 'SelectOverloadGenericItem') {
|
|
268
|
+
const pSubst = (0, exports.substTyAnn)(env, m);
|
|
269
|
+
return resolveSelectOverloadGenericItem(env, ty, pSubst);
|
|
270
|
+
}
|
|
271
|
+
const qName = (0, def_key_helpers_1.getGlobalDefKey)(ty);
|
|
142
272
|
// 尝试从 env 中查找 typeOperator 的定义(也可以改成只从m中取)
|
|
143
273
|
const typeOperatorDef = m.get(qName) ?? env.refMgr.gQNameDefs.get(qName);
|
|
144
274
|
// 如果能在替换映射中查到 typeOperator 的 qName,那么使用 typeOperator 将类型映射为类型
|
|
@@ -245,7 +375,26 @@ const inPlaceSubstTyAnn = (env, m) => (ty) => {
|
|
|
245
375
|
if (ty.constraints) {
|
|
246
376
|
ty.constraints = pSubst(ty.constraints);
|
|
247
377
|
}
|
|
248
|
-
if (ty.typeKind === '
|
|
378
|
+
if (ty.typeKind === 'union') {
|
|
379
|
+
const typeArguments = (0, type_manager_1.removeTysDup)(env, ty.typeArguments || []);
|
|
380
|
+
if (typeArguments?.length !== ty.typeArguments?.length) {
|
|
381
|
+
if (typeArguments?.length === 1) {
|
|
382
|
+
const typeArg = typeArguments?.[0];
|
|
383
|
+
const { typeArguments: args } = typeArg || {};
|
|
384
|
+
ty.update({
|
|
385
|
+
...(typeArg?.toJSON?.() || typeArg),
|
|
386
|
+
typeArguments: args || [],
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
ty.updateInstance({
|
|
391
|
+
typeArguments,
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return ty;
|
|
396
|
+
}
|
|
397
|
+
else if (ty.typeKind === 'function') {
|
|
249
398
|
if (ty.fnArgs) {
|
|
250
399
|
ty.fnArgs = ty.fnArgs.map(x => {
|
|
251
400
|
return {
|
|
@@ -256,10 +405,24 @@ const inPlaceSubstTyAnn = (env, m) => (ty) => {
|
|
|
256
405
|
});
|
|
257
406
|
}
|
|
258
407
|
}
|
|
259
|
-
else if (
|
|
408
|
+
else if ((0, type_predicate_1.isIndexedType)(ty)) {
|
|
260
409
|
ty.objectType = pSubst(ty.objectType);
|
|
261
410
|
ty.indexType = pSubst(ty.indexType);
|
|
262
|
-
|
|
411
|
+
// 尝试从 objectType 中提取属性类型
|
|
412
|
+
const pickedType = (0, type_operator_1.typePick)(env, ty.objectType, ty.indexType, pSubst);
|
|
413
|
+
if (pickedType !== undefined) {
|
|
414
|
+
return pickedType;
|
|
415
|
+
}
|
|
416
|
+
// 如果 typePick 返回 undefined,需要判断是属性不存在还是类型未求解
|
|
417
|
+
// 如果 objectType 已经求解到可以判断属性是否存在的地步,但属性不存在,
|
|
418
|
+
// 则不应该创建新的 IndexedType(避免死循环),而是返回 naslAnyTy
|
|
419
|
+
if ((0, type_operator_1.canDeterminePropertyExistence)(env, ty.objectType)) {
|
|
420
|
+
// 属性不存在,返回 naslAnyTy 表示无法求解,避免死循环
|
|
421
|
+
// 类型错误会在其他地方(如 normalize 或类型检查)被报告
|
|
422
|
+
return index_1.naslAnyTy;
|
|
423
|
+
}
|
|
424
|
+
// objectType 尚未求解,可以创建新的 IndexedType 等待后续求解
|
|
425
|
+
return nasl_concepts_1.TypeAnnotation.createIndexedType(ty.objectType, ty.indexType);
|
|
263
426
|
}
|
|
264
427
|
else if (ty.typeKind === 'generic') {
|
|
265
428
|
if (ty.typeName === 'DeDataSource') {
|
|
@@ -289,6 +452,21 @@ const inPlaceSubstTyAnn = (env, m) => (ty) => {
|
|
|
289
452
|
}
|
|
290
453
|
return ty;
|
|
291
454
|
}
|
|
455
|
+
else if (ty.typeName === 'Exclude') {
|
|
456
|
+
// Exclude<T, U>: 从 T 中排除 U 包含的类型
|
|
457
|
+
const baseTy = (0, typer_1.normalize)(env, pSubst(ty.typeArguments?.[0]));
|
|
458
|
+
const excludedTy = pSubst(ty.typeArguments?.[1]);
|
|
459
|
+
if ((0, type_predicate_1.isUnionTy)(baseTy) && baseTy.typeArguments?.length) {
|
|
460
|
+
// 从 baseTy 的 typeArguments 中过滤掉 excludedTy 包含的类型
|
|
461
|
+
const excludedTys = (0, type_predicate_1.isUnionTy)(excludedTy) ? excludedTy.typeArguments : [excludedTy];
|
|
462
|
+
const remainingTys = baseTy.typeArguments.filter(t1 => !excludedTys?.some(t2 => (0, type_predicate_1.isEqualTy)(env, t1, t2)));
|
|
463
|
+
if (remainingTys.length > 0) {
|
|
464
|
+
return (0, type_manager_1.createUnionTyAnnIfNecessary)(env, remainingTys);
|
|
465
|
+
}
|
|
466
|
+
return index_1.naslAnyTy;
|
|
467
|
+
}
|
|
468
|
+
return ty;
|
|
469
|
+
}
|
|
292
470
|
else if (ty.typeName === 'SelectBinaryOverload') {
|
|
293
471
|
// FIXME wudengke 直接读第一个泛型参数会因为upcast而丢失literal值,因此写死
|
|
294
472
|
const functionName = type_operator_1.NaslCoreBinaryOperator.add;
|
|
@@ -315,24 +493,12 @@ const inPlaceSubstTyAnn = (env, m) => (ty) => {
|
|
|
315
493
|
return (0, type_operator_1.applyCheckUniqueKeys)(env, ty, pSubst);
|
|
316
494
|
}
|
|
317
495
|
else if (ty.typeName === 'SelectOverload') {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
const name = (fnNameLit?.typeKind === 'literal' ? fnNameLit.literal : undefined) ?? '';
|
|
323
|
-
const nsp = (nspLit?.typeKind === 'literal' ? nspLit.literal : undefined) ?? '';
|
|
324
|
-
const genCount = parseInt((genCountLit?.typeKind === 'literal' ? genCountLit.literal : '0') || '0', 10) || 0;
|
|
325
|
-
const allArgs = (ty.typeArguments ?? []).slice(3).map(pSubst);
|
|
326
|
-
const typeArgs = allArgs.slice(0, genCount);
|
|
327
|
-
const callArgs = allArgs.slice(genCount);
|
|
328
|
-
const { retTy } = (0, overload_helper_1.resolveOverloadedFunction)(env, nsp, name, callArgs, typeArgs);
|
|
329
|
-
if (!retTy) {
|
|
330
|
-
// FIXME wudengke 删掉这个日志
|
|
331
|
-
// console.log('化简失败', showType(ty), showType(retTy));
|
|
332
|
-
}
|
|
333
|
-
return retTy ?? ty;
|
|
496
|
+
return resolveSelectOverload(env, ty, pSubst);
|
|
497
|
+
}
|
|
498
|
+
else if (ty.typeName === 'SelectOverloadGenericItem') {
|
|
499
|
+
return resolveSelectOverloadGenericItem(env, ty, pSubst);
|
|
334
500
|
}
|
|
335
|
-
const qName = (0,
|
|
501
|
+
const qName = (0, def_key_helpers_1.getGlobalDefKey)(ty);
|
|
336
502
|
// 尝试从 env 中查找 typeOperator 的定义(也可以改成只从m中取)
|
|
337
503
|
const typeOperatorDef = m.get(qName) ?? env.refMgr.gQNameDefs.get(qName);
|
|
338
504
|
// 如果能在替换映射中查到 typeOperator 的 qName,那么使用 typeOperator 将类型映射为类型
|
|
@@ -391,36 +557,64 @@ const inPlaceSubstTyAnn = (env, m) => (ty) => {
|
|
|
391
557
|
exports.inPlaceSubstTyAnn = inPlaceSubstTyAnn;
|
|
392
558
|
const traverseSubstRunCheck = (env, nd) => {
|
|
393
559
|
env.solver = new index_1.Solver(env);
|
|
394
|
-
|
|
560
|
+
// 非页面场景(逻辑/流程/大 JSON):不启用草稿区隔离,走轻量路径,只在主 cs 上求解
|
|
561
|
+
// 视图场景(env.isView)下才启用草稿区隔离逻辑
|
|
562
|
+
if (!env.isView) {
|
|
563
|
+
const csToSolve = env.unifier.cs;
|
|
564
|
+
const subst = env.solver.simpleSolveConstraints(csToSolve);
|
|
565
|
+
const normalizedSemTyMap = (0, exports.traverseAndSubst)(env)(nd, subst);
|
|
566
|
+
if (!env.isErrorReportingDisabled() && !env.hasErrorDelegatee) {
|
|
567
|
+
const errs = env.solver.postCheckSolution(subst, csToSolve, normalizedSemTyMap);
|
|
568
|
+
if (errs.length > 0) {
|
|
569
|
+
for (const err of errs) {
|
|
570
|
+
env.addError(err.message, env.getCurFileNode(), err.errBoundary, err.fromPlayground ? 'warning' : 'error');
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
if (!env.hasErrorDelegatee) {
|
|
575
|
+
env.runPostChecks(subst);
|
|
576
|
+
}
|
|
577
|
+
return subst;
|
|
578
|
+
}
|
|
579
|
+
// 页面/草稿区场景:在 playgroundCs 上求解(包含主线镜像与增量);主线在 cs 上求解
|
|
580
|
+
const csToSolve = env.isPlayground ? env.playgroundCs : env.unifier.cs;
|
|
581
|
+
const subst = env.solver.simpleSolveConstraints(csToSolve);
|
|
395
582
|
const normalizedSemTyMap = (0, exports.traverseAndSubst)(env)(nd, subst);
|
|
396
|
-
if (!env.isErrorReportingDisabled()) {
|
|
397
|
-
const errs = env.solver.postCheckSolution(subst,
|
|
583
|
+
if (!env.isErrorReportingDisabled() && !env.hasErrorDelegatee) {
|
|
584
|
+
const errs = env.solver.postCheckSolution(subst, csToSolve, normalizedSemTyMap);
|
|
398
585
|
if (errs.length > 0) {
|
|
399
586
|
for (const err of errs) {
|
|
400
587
|
env.addError(err.message, env.getCurFileNode(), err.errBoundary, err.fromPlayground ? 'warning' : 'error');
|
|
401
588
|
}
|
|
402
589
|
}
|
|
403
590
|
}
|
|
404
|
-
env.
|
|
591
|
+
if (!env.hasErrorDelegatee) {
|
|
592
|
+
// 没有错误委托者,才运行后置校验
|
|
593
|
+
env.runPostChecks(subst);
|
|
594
|
+
}
|
|
595
|
+
return subst;
|
|
405
596
|
};
|
|
406
597
|
exports.traverseSubstRunCheck = traverseSubstRunCheck;
|
|
407
598
|
const traverseAndSubst = (env) => (__node, subst) => {
|
|
408
599
|
const normalizedSemTyMap = new Map();
|
|
409
600
|
const node = (0, nasl_utils_1.toRaw)(__node);
|
|
410
601
|
const pSubst = (0, exports.inPlaceSubstTyAnn)(env, subst);
|
|
411
|
-
// Compute visible local symbol names for gating draft-type propagation
|
|
412
|
-
const localVarNames = env.
|
|
413
|
-
.map(s => (0,
|
|
602
|
+
// Compute visible local symbol names for gating draft-type propagation(仅在视图场景下需要)
|
|
603
|
+
const localVarNames = env.isView
|
|
604
|
+
? env.refMgr.getVisibleLocalSyms(node, { includeShadowed: true }).map(s => (0, def_key_helpers_1.getGlobalDefKey)(s))
|
|
605
|
+
: [];
|
|
414
606
|
const substNode = (__nd) => {
|
|
415
607
|
const nd = (0, nasl_utils_1.toRaw)(__nd);
|
|
416
|
-
if (
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
608
|
+
if (env.isView) {
|
|
609
|
+
if ((0, service_1.isTypeInferConcept)(nd) &&
|
|
610
|
+
localVarNames?.includes(nd.name) &&
|
|
611
|
+
!nd.typeAnnotation && // 并没有显式标注类型
|
|
612
|
+
!nd.defaultValue // 也并没有默认值可以推导类型
|
|
613
|
+
) {
|
|
614
|
+
// 这是为了实现"草稿区不参与局部变量"的类型推导。
|
|
615
|
+
// 此处 return,即可产生节点上无类型标注的效果。等 use 处的 Identifier 来写 nd 的类型
|
|
616
|
+
return;
|
|
617
|
+
}
|
|
424
618
|
}
|
|
425
619
|
const ndSemTy = env.typeBindings.get(nd);
|
|
426
620
|
const callInfo = env.resolvedCallInfo.get(nd);
|
|
@@ -439,9 +633,9 @@ const traverseAndSubst = (env) => (__node, subst) => {
|
|
|
439
633
|
const def = env.idToVar.get(nd);
|
|
440
634
|
if (def) {
|
|
441
635
|
const refSemTy = env.typeBindings.get(def);
|
|
442
|
-
if (!refSemTy || refSemTy.typeKind === 'typeParam') {
|
|
443
|
-
//
|
|
444
|
-
if (env.allRefsInPlayground.has(
|
|
636
|
+
if ((!refSemTy || refSemTy.typeKind === 'typeParam') && (env.isView || !(0, type_predicate_1.isAnyTy)(resolvedNdSemTy))) {
|
|
637
|
+
// 如果当前 Identifier 在草稿区引用集合中,说明这个引用在草稿区,不参与变量类型推导
|
|
638
|
+
if (env.allRefsInPlayground.has(nd)) {
|
|
445
639
|
(0, type_predicate_1.isResolvedUserTy)(resolvedNdSemTy) && env.varCandidateTypes.set(def, resolvedNdSemTy);
|
|
446
640
|
}
|
|
447
641
|
else {
|