skir 1.1.5 → 1.1.7

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.
@@ -0,0 +1,12 @@
1
+ import { Doc } from "skir-internal";
2
+ import { ModuleSet } from "./module_set.js";
3
+ export interface CompletionItems {
4
+ readonly placeholderStartPos: number;
5
+ readonly placeholderEndPos: number;
6
+ readonly items: ReadonlyArray<{
7
+ readonly name: string;
8
+ readonly doc?: Doc;
9
+ }>;
10
+ }
11
+ export declare function provideCompletionItems(modulePath: string, moduleContent: string, position: number, oldModuleSet: ModuleSet): CompletionItems | null;
12
+ //# sourceMappingURL=completion_helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion_helper.d.ts","sourceRoot":"","sources":["../src/completion_helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;QAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;KACpB,CAAC,CAAC;CACJ;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,SAAS,GACtB,eAAe,GAAG,IAAI,CAwCxB"}
@@ -0,0 +1,34 @@
1
+ import { ModuleSet } from "./module_set.js";
2
+ export function provideCompletionItems(modulePath, moduleContent, position, oldModuleSet) {
3
+ const modulePathToContent = new Map();
4
+ for (const [modulePath, module] of oldModuleSet.modules) {
5
+ modulePathToContent.set(modulePath, module.result.sourceCode);
6
+ }
7
+ modulePathToContent.set(modulePath, moduleContent);
8
+ const moduleResult = ModuleSet.compileForCompletion(modulePath, position, modulePathToContent, oldModuleSet);
9
+ for (const error of moduleResult.errors) {
10
+ const { token } = error;
11
+ let startPosition;
12
+ let endPosition;
13
+ if (token.text.startsWith('"') || token.text.startsWith("'")) {
14
+ startPosition = token.position + 1;
15
+ endPosition = token.position + token.originalText.length - 1;
16
+ }
17
+ else {
18
+ startPosition = token.position;
19
+ endPosition =
20
+ token.position + (token.text === "..." ? 0 : token.originalText.length);
21
+ }
22
+ if (startPosition <= position &&
23
+ position <= endPosition &&
24
+ error.expectedNames?.length) {
25
+ return {
26
+ placeholderStartPos: startPosition,
27
+ placeholderEndPos: endPosition,
28
+ items: error.expectedNames,
29
+ };
30
+ }
31
+ }
32
+ return null;
33
+ }
34
+ //# sourceMappingURL=completion_helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion_helper.js","sourceRoot":"","sources":["../src/completion_helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAW5C,MAAM,UAAU,sBAAsB,CACpC,UAAkB,EAClB,aAAqB,EACrB,QAAgB,EAChB,YAAuB;IAEvB,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtD,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACxD,mBAAmB,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC;IACD,mBAAmB,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAEnD,MAAM,YAAY,GAAG,SAAS,CAAC,oBAAoB,CACjD,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,YAAY,CACb,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;QACxB,IAAI,aAAqB,CAAC;QAC1B,IAAI,WAAmB,CAAC;QACxB,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7D,aAAa,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;YACnC,WAAW,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC/B,WAAW;gBACT,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5E,CAAC;QACD,IACE,aAAa,IAAI,QAAQ;YACzB,QAAQ,IAAI,WAAW;YACvB,KAAK,CAAC,aAAa,EAAE,MAAM,EAC3B,CAAC;YACD,OAAO;gBACL,mBAAmB,EAAE,aAAa;gBAClC,iBAAiB,EAAE,WAAW;gBAC9B,KAAK,EAAE,KAAK,CAAC,aAAa;aAC3B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/formatter.js CHANGED
@@ -90,6 +90,13 @@ nextNonComment, context) {
90
90
  (next.text === ")" && topOfStack().inlineRecordInBracket)) {
91
91
  context.indentStack.pop();
92
92
  }
93
+ // Reset context when we encounter a semicolon, even if the next token is a
94
+ // comment. Without this, the "in-value" context from a const declaration
95
+ // leaks past comments and into subsequent declarations, causing spurious
96
+ // trailing commas.
97
+ if (token.text === ";") {
98
+ context.context = null;
99
+ }
93
100
  if (isComment(token)) {
94
101
  return oneOrTwoLineBreaks(token, next);
95
102
  }
@@ -127,7 +134,6 @@ nextNonComment, context) {
127
134
  return next.text === "{" ? " " : "";
128
135
  }
129
136
  else if (token.text === ";") {
130
- context.context = null;
131
137
  return oneOrTwoLineBreaks(token, next);
132
138
  }
133
139
  else if (token.text === "}") {
@@ -1 +1 @@
1
- {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,13 @@ import { type Method, type Module, type RecordKey, type RecordLocation, type Res
9
9
  export declare class ModuleSet {
10
10
  private readonly modulePathToContent;
11
11
  private readonly parseMode;
12
+ private readonly completionMode?;
12
13
  static compile(modulePathToContent: ReadonlyMap<string, string>, cache?: ModuleSet, parseMode?: "strict" | "lenient"): ModuleSet;
13
- constructor(modulePathToContent: ReadonlyMap<string, string>, cache: ModuleSet | undefined, parseMode: "strict" | "lenient");
14
+ static compileForCompletion(currentModulePath: string, currentPosition: number, modulePathToContent: ReadonlyMap<string, string>, cache?: ModuleSet): Result<Module>;
15
+ constructor(modulePathToContent: ReadonlyMap<string, string>, cache: ModuleSet | undefined, parseMode: "strict" | "lenient", completionMode?: {
16
+ readonly modulePath: string;
17
+ readonly position: number;
18
+ } | undefined);
14
19
  private parseAndResolve;
15
20
  /** Called by `parseAndResolve` when the module is not in the map already. */
16
21
  private doParseAndResolve;
@@ -1 +1 @@
1
- {"version":3,"file":"module_set.d.ts","sourceRoot":"","sources":["../src/module_set.ts"],"names":[],"mappings":"AACA,OAAO,EAWL,KAAK,MAAM,EACX,KAAK,MAAM,EAaX,KAAK,SAAS,EACd,KAAK,cAAc,EAGnB,KAAK,MAAM,EACX,KAAK,SAAS,EAKf,MAAM,eAAe,CAAC;AAUvB;;;;;;GAMG;AACH,qBAAa,SAAS;IAUlB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAEpC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAX5B,MAAM,CAAC,OAAO,CACZ,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAChD,KAAK,CAAC,EAAE,SAAS,EACjB,SAAS,GAAE,QAAQ,GAAG,SAAoB,GACzC,SAAS;gBAKO,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACjE,KAAK,EAAE,SAAS,GAAG,SAAS,EACX,SAAS,EAAE,QAAQ,GAAG,SAAS;IAalD,OAAO,CAAC,eAAe;IAevB,6EAA6E;IAC7E,OAAO,CAAC,iBAAiB;IAoSzB,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,eAAe;IAkCvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA6FzB,OAAO,CAAC,gBAAgB;IAyExB,OAAO,CAAC,sBAAsB;IA+E9B,OAAO,CAAC,oBAAoB;IA0H5B,OAAO,CAAC,cAAc;IAqCtB,2EAA2E;IAC3E,OAAO,CAAC,oBAAoB;IAkL5B,QAAQ,IAAI,kBAAkB;IAyE9B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmC;IACjE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IAGxD,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAMpE,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAM5D,IAAI,SAAS,IAAI,WAAW,CAAC,SAAS,EAAE,cAAc,CAAC,CAEtD;IAED,IAAI,MAAM,IAAI,SAAS,SAAS,EAAE,CAEjC;IAED,IAAI,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAEjD;CACF;AAwYD,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;CACvC"}
1
+ {"version":3,"file":"module_set.d.ts","sourceRoot":"","sources":["../src/module_set.ts"],"names":[],"mappings":"AACA,OAAO,EASL,KAAK,MAAM,EACX,KAAK,MAAM,EAcX,KAAK,SAAS,EACd,KAAK,cAAc,EAInB,KAAK,MAAM,EACX,KAAK,SAAS,EAKf,MAAM,eAAe,CAAC;AAUvB;;;;;;GAMG;AACH,qBAAa,SAAS;IA0BlB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAEpC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IA5BlC,MAAM,CAAC,OAAO,CACZ,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAChD,KAAK,CAAC,EAAE,SAAS,EACjB,SAAS,GAAE,QAAQ,GAAG,SAAoB,GACzC,SAAS;IAIZ,MAAM,CAAC,oBAAoB,CACzB,iBAAiB,EAAE,MAAM,EACzB,eAAe,EAAE,MAAM,EACvB,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAChD,KAAK,CAAC,EAAE,SAAS,GAChB,MAAM,CAAC,MAAM,CAAC;gBAYE,mBAAmB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACjE,KAAK,EAAE,SAAS,GAAG,SAAS,EACX,SAAS,EAAE,QAAQ,GAAG,SAAS,EAC/B,cAAc,CAAC,EAAE;QAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,YAAA;IAkBH,OAAO,CAAC,eAAe;IAevB,6EAA6E;IAC7E,OAAO,CAAC,iBAAiB;IAwTzB,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,eAAe;IAkCvB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA6FzB,OAAO,CAAC,gBAAgB;IAyExB,OAAO,CAAC,sBAAsB;IAqF9B,OAAO,CAAC,oBAAoB;IAkI5B,OAAO,CAAC,cAAc;IAqCtB,2EAA2E;IAC3E,OAAO,CAAC,oBAAoB;IAkL5B,QAAQ,IAAI,kBAAkB;IAyE9B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmC;IACjE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IAGxD,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAMpE,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAM5D,IAAI,SAAS,IAAI,WAAW,CAAC,SAAS,EAAE,cAAc,CAAC,CAEtD;IAED,IAAI,MAAM,IAAI,SAAS,SAAS,EAAE,CAEjC;IAED,IAAI,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAEjD;CACF;AA0YD,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;CACvC"}
@@ -14,15 +14,31 @@ export class ModuleSet {
14
14
  static compile(modulePathToContent, cache, parseMode = "strict") {
15
15
  return new ModuleSet(modulePathToContent, cache, parseMode);
16
16
  }
17
- constructor(modulePathToContent, cache, parseMode) {
17
+ static compileForCompletion(currentModulePath, currentPosition, modulePathToContent, cache) {
18
+ if (!modulePathToContent.has(currentModulePath)) {
19
+ throw new Error(`Not found: ${currentModulePath}`);
20
+ }
21
+ const moduleSet = new ModuleSet(modulePathToContent, cache, "lenient", {
22
+ modulePath: currentModulePath,
23
+ position: currentPosition,
24
+ });
25
+ return moduleSet.modules.get(currentModulePath);
26
+ }
27
+ constructor(modulePathToContent, cache, parseMode, completionMode) {
18
28
  this.modulePathToContent = modulePathToContent;
19
29
  this.parseMode = parseMode;
30
+ this.completionMode = completionMode;
20
31
  this.moduleBundles = new Map();
21
32
  this.registry = new DeclarationRegistry();
22
33
  this.cache = cache
23
34
  ? new Cache(modulePathToContent, cache.moduleBundles)
24
35
  : undefined;
25
- for (const modulePath of modulePathToContent.keys()) {
36
+ // In completion mode, no need to recompile modules which are not dependencies of
37
+ // the current module.
38
+ const modulePaths = completionMode
39
+ ? [completionMode.modulePath]
40
+ : modulePathToContent.keys();
41
+ for (const modulePath of modulePaths) {
26
42
  this.parseAndResolve(modulePath, new Set());
27
43
  }
28
44
  this.finalizationResult = this.finalize();
@@ -51,7 +67,7 @@ export class ModuleSet {
51
67
  const moduleCacheResult = this.cache?.getModuleCacheResult(modulePath) ?? { kind: "no-cache" };
52
68
  switch (moduleCacheResult.kind) {
53
69
  case "no-cache": {
54
- moduleTokens = tokenizeModule(moduleContent, modulePath);
70
+ moduleTokens = tokenizeModule(moduleContent, modulePath, this.completionMode);
55
71
  break;
56
72
  }
57
73
  case "module-tokens": {
@@ -110,7 +126,7 @@ export class ModuleSet {
110
126
  errors.push({
111
127
  token: declaration.modulePath,
112
128
  message: "Module not found",
113
- expectedNames: suggestModulePaths(unquoteAndUnescape(declaration.modulePath.text), modulePath, this.modulePathToContent),
129
+ expectedNames: suggestModulePaths(unquoteAndUnescape(declaration.modulePath.text), modulePath, this.modulePathToContent.keys()),
114
130
  });
115
131
  }
116
132
  else if (otherModule.tokens.errors.length !== 0 ||
@@ -199,7 +215,7 @@ export class ModuleSet {
199
215
  };
200
216
  }
201
217
  }
202
- if (errors.length) {
218
+ if (errors.length && !this.completionMode) {
203
219
  return moduleBundle;
204
220
  }
205
221
  // We can't merge these 3 loops into a single one, each operation must run
@@ -244,43 +260,49 @@ export class ModuleSet {
244
260
  // Resolve the references in the doc comments of the record.
245
261
  this.resolveDocReferences(record, module, errors);
246
262
  }
263
+ const resolveTopLevelTypeAndValidate = (type) => {
264
+ const resolvedType = typeResolver.resolve(type, "top-level");
265
+ if (resolvedType) {
266
+ this.validateArrayKeys(resolvedType, errors);
267
+ }
268
+ return resolvedType;
269
+ };
247
270
  // Resolve every request/response type of every method in the module.
248
271
  // Store the result in the Method object.
249
272
  for (const method of module.methods) {
250
- {
251
- const request = method.unresolvedRequestType;
252
- const requestType = typeResolver.resolve(request, "top-level");
253
- method.requestType = requestType;
254
- if (requestType) {
255
- this.validateArrayKeys(requestType, errors);
256
- }
257
- }
258
- {
259
- const response = method.unresolvedResponseType;
260
- const responseType = typeResolver.resolve(response, "top-level");
261
- method.responseType = responseType;
262
- if (responseType) {
263
- this.validateArrayKeys(responseType, errors);
264
- }
265
- }
273
+ const { unresolvedRequestType, unresolvedResponseType } = method;
274
+ // Resolve request type.
275
+ method.requestType = resolveTopLevelTypeAndValidate(unresolvedRequestType);
276
+ // Resolve response type.
277
+ method.responseType = resolveTopLevelTypeAndValidate(unresolvedResponseType);
266
278
  const { number } = method;
267
279
  moduleBundle.registry.pushNumberMethod(number, method);
268
280
  // Resolve the references in the doc comments of the method.
269
281
  this.resolveDocReferences(method, module, errors);
270
282
  }
283
+ for (const method of module.brokenMethods) {
284
+ const { unresolvedRequestType, unresolvedResponseType } = method;
285
+ resolveTopLevelTypeAndValidate(unresolvedRequestType);
286
+ if (unresolvedResponseType) {
287
+ resolveTopLevelTypeAndValidate(unresolvedResponseType);
288
+ }
289
+ }
271
290
  // Resolve every constant type. Store the result in the constant object.
272
291
  for (const constant of module.constants) {
273
292
  const { unresolvedType } = constant;
274
- const type = typeResolver.resolve(unresolvedType, "top-level");
293
+ const type = resolveTopLevelTypeAndValidate(unresolvedType);
275
294
  constant.type = type;
276
295
  if (type) {
277
- this.validateArrayKeys(type, errors);
278
296
  constant.valueAsDenseJson = //
279
297
  this.valueToDenseJson(constant.value, type, errors);
280
298
  }
281
299
  // Resolve the references in the doc comments of the constant.
282
300
  this.resolveDocReferences(constant, module, errors);
283
301
  }
302
+ for (const constant of module.brokenConstants) {
303
+ const { unresolvedType } = constant;
304
+ resolveTopLevelTypeAndValidate(unresolvedType);
305
+ }
284
306
  ensureAllImportsAreUsed(module, usedImports, errors);
285
307
  this.registry.mergeFrom(moduleBundle.registry);
286
308
  return moduleBundle;
@@ -510,13 +532,17 @@ export class ModuleSet {
510
532
  }
511
533
  const json = Array(expectedStruct.numSlotsInclRemovedNumbers).fill(0);
512
534
  let allGood = true;
513
- for (const [fieldName, fieldEntry] of Object.entries(value.entries)) {
514
- const field = expectedStruct.nameToDeclaration[fieldName];
535
+ const fieldNameTokens = Object.values(value.entries)
536
+ .map((e) => e.name)
537
+ .concat(value.orphanNames);
538
+ const fieldNames = new Set(fieldNameTokens.map((t) => t.text));
539
+ for (const fieldName of fieldNameTokens) {
540
+ const field = expectedStruct.nameToDeclaration[fieldName.text];
515
541
  if (field?.kind !== "field") {
516
542
  errors.push({
517
- token: fieldEntry.name,
543
+ token: fieldName,
518
544
  message: `Field not found in struct ${expectedStruct.name.text}`,
519
- expectedNames: declarationsToExpectedNames(expectedStruct.nameToDeclaration, (d) => d.kind === "field"),
545
+ expectedNames: declarationsToExpectedNames(expectedStruct.nameToDeclaration, (d) => d.kind === "field" && !fieldNames.has(d.name.text)),
520
546
  });
521
547
  allGood = false;
522
548
  continue;
@@ -606,8 +632,24 @@ export class ModuleSet {
606
632
  // · 'kind' must match the name of one of the wrapper variants defined in
607
633
  // the enum
608
634
  // · 'value' must match the type of the wrapper variant
609
- const entries = { ...value.entries };
635
+ const { entries } = value;
610
636
  const kindEntry = entries.kind;
637
+ const enumValue = entries.value;
638
+ const nameTokens = Object.values(entries)
639
+ .map((e) => e.name)
640
+ .concat(value.orphanNames);
641
+ for (const nameToken of nameTokens) {
642
+ if (nameToken.text === "kind" || nameToken.text === "value") {
643
+ continue;
644
+ }
645
+ const expectedNames = (kindEntry ? [] : [{ name: "kind" }]).concat(enumValue ? [] : [{ name: "value" }]);
646
+ errors.push({
647
+ token: nameToken,
648
+ message: "Extraneous entry",
649
+ expectedNames: expectedNames,
650
+ });
651
+ return undefined;
652
+ }
611
653
  if (!kindEntry) {
612
654
  errors.push({
613
655
  token: token,
@@ -615,7 +657,6 @@ export class ModuleSet {
615
657
  });
616
658
  return undefined;
617
659
  }
618
- delete entries.kind;
619
660
  const kindValueToken = kindEntry.value.token;
620
661
  if (kindEntry.value.kind !== "literal" ||
621
662
  !isStringLiteral(kindValueToken.text)) {
@@ -625,9 +666,9 @@ export class ModuleSet {
625
666
  });
626
667
  return undefined;
627
668
  }
628
- const fieldName = unquoteAndUnescape(kindValueToken.text);
629
- const field = expectedEnum.nameToDeclaration[fieldName];
630
- if (field?.kind !== "field") {
669
+ const variantName = unquoteAndUnescape(kindValueToken.text);
670
+ const variant = expectedEnum.nameToDeclaration[variantName];
671
+ if (variant?.kind !== "field") {
631
672
  errors.push({
632
673
  token: kindValueToken,
633
674
  message: `Variant not found in enum ${expectedEnum.name.text}`,
@@ -635,14 +676,13 @@ export class ModuleSet {
635
676
  });
636
677
  return undefined;
637
678
  }
638
- if (!field.type) {
679
+ if (!variant.type) {
639
680
  errors.push({
640
681
  token: kindValueToken,
641
- message: "Refers to a constant field",
682
+ message: "Refers to a constant variant",
642
683
  });
643
684
  return undefined;
644
685
  }
645
- const enumValue = entries.value;
646
686
  if (!enumValue) {
647
687
  errors.push({
648
688
  token: token,
@@ -650,24 +690,14 @@ export class ModuleSet {
650
690
  });
651
691
  return undefined;
652
692
  }
653
- delete entries.value;
654
693
  const valueJson = //
655
- this.valueToDenseJson(enumValue.value, field.type, errors);
694
+ this.valueToDenseJson(enumValue.value, variant.type, errors);
656
695
  if (valueJson === undefined) {
657
696
  return undefined;
658
697
  }
659
- const extraEntries = Object.values(entries);
660
- if (extraEntries.length !== 0) {
661
- const extraEntry = extraEntries[0];
662
- errors.push({
663
- token: extraEntry.name,
664
- message: "Extraneous entry",
665
- });
666
- return undefined;
667
- }
668
698
  value.record = expectedEnum;
669
699
  // Return an array of length 2.
670
- return [field.number, valueJson];
700
+ return [variant.number, valueJson];
671
701
  }
672
702
  else {
673
703
  // The value is neither a string nor an object. It can't be of enum type.
@@ -1106,7 +1136,9 @@ class TypeResolver {
1106
1136
  const name = namePart.text;
1107
1137
  let newIt = it.nameToDeclaration[name];
1108
1138
  if (newIt === undefined) {
1109
- errors.push(makeCannotFindNameError(namePart, declarationsToExpectedNames(it.nameToDeclaration, (d) => d.kind === "record" || (i === 0 && d.kind === "import-alias"))));
1139
+ errors.push(makeCannotFindNameError(namePart, declarationsToExpectedNames(it.nameToDeclaration, (d) => d.kind === "record" ||
1140
+ (i === 0 && d.kind === "import-alias") ||
1141
+ (i === 0 && d.kind === "import"))));
1110
1142
  return undefined;
1111
1143
  }
1112
1144
  else if (newIt.kind === "record") {
@@ -1173,7 +1205,6 @@ class TypeResolver {
1173
1205
  }
1174
1206
  class Cache {
1175
1207
  constructor(modulePathToNewContent, modulePathToOldBundle) {
1176
- this.modulePathToOldBundle = modulePathToOldBundle;
1177
1208
  this.modulePathToCacheResult = new Map();
1178
1209
  const unchangedModulePaths = new Set();
1179
1210
  for (const [modulePath, newContent] of modulePathToNewContent) {
@@ -1342,9 +1373,11 @@ function suggestModulePaths(typedPath, originModulePath, modulePathToContent) {
1342
1373
  }
1343
1374
  const originBaseDir = Paths.dirname(originModulePath).replace(/\\/g, "/");
1344
1375
  const suggestions = new Set();
1345
- for (const path of modulePathToContent.keys()) {
1376
+ for (const path of modulePathToContent) {
1346
1377
  if (!path.startsWith(absolutePrefix))
1347
1378
  continue;
1379
+ if (path === originModulePath)
1380
+ continue;
1348
1381
  const remaining = path.slice(absolutePrefix.length);
1349
1382
  const slashIndex = remaining.indexOf("/");
1350
1383
  // If there is a sub-path after the matched prefix, collapse to the next
@@ -1367,7 +1400,12 @@ function suggestModulePaths(typedPath, originModulePath, modulePathToContent) {
1367
1400
  if (!rel.startsWith(".")) {
1368
1401
  rel = "./" + rel;
1369
1402
  }
1370
- suggestions.add(isDir ? rel + "/" : rel);
1403
+ const suggestion = isDir ? rel + "/" : rel;
1404
+ // When the user typed "../", don't suggest "./" — they would have typed
1405
+ // "./" directly if they wanted files in their own directory.
1406
+ if (typedPath.startsWith("../") && suggestion === "./")
1407
+ continue;
1408
+ suggestions.add(suggestion);
1371
1409
  }
1372
1410
  else {
1373
1411
  suggestions.add(absoluteSuggestion);