@typespec/compiler 0.50.0-dev.1 → 0.50.0-dev.11

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.
Files changed (35) hide show
  1. package/dist/manifest.js +2 -2
  2. package/dist/src/core/checker.d.ts.map +1 -1
  3. package/dist/src/core/checker.js +54 -25
  4. package/dist/src/core/checker.js.map +1 -1
  5. package/dist/src/core/logger/console-sink.js +1 -1
  6. package/dist/src/core/logger/console-sink.js.map +1 -1
  7. package/dist/src/core/messages.d.ts +5 -0
  8. package/dist/src/core/messages.d.ts.map +1 -1
  9. package/dist/src/core/messages.js +1 -0
  10. package/dist/src/core/messages.js.map +1 -1
  11. package/dist/src/emitter-framework/asset-emitter.d.ts.map +1 -1
  12. package/dist/src/emitter-framework/asset-emitter.js +55 -38
  13. package/dist/src/emitter-framework/asset-emitter.js.map +1 -1
  14. package/dist/src/emitter-framework/index.d.ts +1 -0
  15. package/dist/src/emitter-framework/index.d.ts.map +1 -1
  16. package/dist/src/emitter-framework/index.js +1 -0
  17. package/dist/src/emitter-framework/index.js.map +1 -1
  18. package/dist/src/emitter-framework/ref-scope.d.ts +14 -0
  19. package/dist/src/emitter-framework/ref-scope.d.ts.map +1 -0
  20. package/dist/src/emitter-framework/ref-scope.js +31 -0
  21. package/dist/src/emitter-framework/ref-scope.js.map +1 -0
  22. package/dist/src/emitter-framework/reference-cycle.d.ts +23 -0
  23. package/dist/src/emitter-framework/reference-cycle.d.ts.map +1 -0
  24. package/dist/src/emitter-framework/reference-cycle.js +40 -0
  25. package/dist/src/emitter-framework/reference-cycle.js.map +1 -0
  26. package/dist/src/emitter-framework/type-emitter.d.ts +11 -2
  27. package/dist/src/emitter-framework/type-emitter.d.ts.map +1 -1
  28. package/dist/src/emitter-framework/type-emitter.js +25 -6
  29. package/dist/src/emitter-framework/type-emitter.js.map +1 -1
  30. package/dist/src/emitter-framework/types.d.ts +1 -1
  31. package/dist/src/emitter-framework/types.d.ts.map +1 -1
  32. package/dist/src/lib/decorators.js +3 -2
  33. package/dist/src/lib/decorators.js.map +1 -1
  34. package/lib/lib.tsp +8 -0
  35. package/package.json +2 -2
package/dist/manifest.js CHANGED
@@ -1,4 +1,4 @@
1
1
  export default {
2
- "version": "0.50.0-dev.1",
3
- "commit": "f11004019ffaa9892ec5c8f11c88623424a511c5"
2
+ "version": "0.50.0-dev.11",
3
+ "commit": "474dd12ea58eee61afd5f889211749041c7d2cfe"
4
4
  };
@@ -1 +1 @@
1
- {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/checker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/checker.ts"],"names":[],"mappings":"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"}
@@ -1277,14 +1277,14 @@ export function createChecker(program) {
1277
1277
  }
1278
1278
  return s.id;
1279
1279
  }
1280
- function resolveIdentifierInTable(node, table, resolveDecorator = false) {
1280
+ function resolveIdentifierInTable(node, table, options) {
1281
1281
  var _a, _b;
1282
1282
  if (!table) {
1283
1283
  return undefined;
1284
1284
  }
1285
1285
  table = (_a = augmentedSymbolTables.get(table)) !== null && _a !== void 0 ? _a : table;
1286
1286
  let sym;
1287
- if (resolveDecorator) {
1287
+ if (options.resolveDecorators) {
1288
1288
  sym = table.get("@" + node.sv);
1289
1289
  }
1290
1290
  else {
@@ -1330,7 +1330,7 @@ export function createChecker(program) {
1330
1330
  return undefined;
1331
1331
  }
1332
1332
  lateBindMembers(containerType, container);
1333
- sym = resolveIdentifierInTable(id, (_a = container.exports) !== null && _a !== void 0 ? _a : container.members);
1333
+ sym = resolveIdentifierInTable(id, (_a = container.exports) !== null && _a !== void 0 ? _a : container.members, defaultSymbolResolutionOptions);
1334
1334
  break;
1335
1335
  case IdentifierKind.Other:
1336
1336
  return undefined;
@@ -1381,7 +1381,7 @@ export function createChecker(program) {
1381
1381
  let base = resolveTypeReferenceSym(identifier.parent.base, undefined, false);
1382
1382
  if (base) {
1383
1383
  if (base.flags & 2048 /* SymbolFlags.Alias */) {
1384
- base = getAliasedSymbol(base, undefined);
1384
+ base = getAliasedSymbol(base, undefined, defaultSymbolResolutionOptions);
1385
1385
  }
1386
1386
  if (base) {
1387
1387
  if (isTemplatedNode(base.declarations[0])) {
@@ -1471,7 +1471,7 @@ export function createChecker(program) {
1471
1471
  }
1472
1472
  }
1473
1473
  }
1474
- function resolveIdentifierInScope(node, mapper, resolveDecorator = false) {
1474
+ function resolveIdentifierInScope(node, mapper, options) {
1475
1475
  var _a;
1476
1476
  compilerAssert(((_a = node.parent) === null || _a === void 0 ? void 0 : _a.kind) !== SyntaxKind.MemberExpression || node.parent.id !== node, "This function should not be used to resolve Y in member expression X.Y. Use resolveIdentifier() to resolve an arbitrary identifier.");
1477
1477
  if (hasParseError(node)) {
@@ -1484,12 +1484,12 @@ export function createChecker(program) {
1484
1484
  while (scope && scope.kind !== SyntaxKind.TypeSpecScript) {
1485
1485
  if (scope.symbol && "exports" in scope.symbol) {
1486
1486
  const mergedSymbol = getMergedSymbol(scope.symbol);
1487
- binding = resolveIdentifierInTable(node, mergedSymbol.exports, resolveDecorator);
1487
+ binding = resolveIdentifierInTable(node, mergedSymbol.exports, options);
1488
1488
  if (binding)
1489
1489
  return binding;
1490
1490
  }
1491
1491
  if ("locals" in scope) {
1492
- binding = resolveIdentifierInTable(node, scope.locals, resolveDecorator);
1492
+ binding = resolveIdentifierInTable(node, scope.locals, options);
1493
1493
  if (binding)
1494
1494
  return binding;
1495
1495
  }
@@ -1499,14 +1499,14 @@ export function createChecker(program) {
1499
1499
  // check any blockless namespace decls
1500
1500
  for (const ns of scope.inScopeNamespaces) {
1501
1501
  const mergedSymbol = getMergedSymbol(ns.symbol);
1502
- binding = resolveIdentifierInTable(node, mergedSymbol.exports, resolveDecorator);
1502
+ binding = resolveIdentifierInTable(node, mergedSymbol.exports, options);
1503
1503
  if (binding)
1504
1504
  return binding;
1505
1505
  }
1506
1506
  // check "global scope" declarations
1507
- const globalBinding = resolveIdentifierInTable(node, globalNamespaceNode.symbol.exports, resolveDecorator);
1507
+ const globalBinding = resolveIdentifierInTable(node, globalNamespaceNode.symbol.exports, options);
1508
1508
  // check using types
1509
- const usingBinding = resolveIdentifierInTable(node, scope.locals, resolveDecorator);
1509
+ const usingBinding = resolveIdentifierInTable(node, scope.locals, options);
1510
1510
  if (globalBinding && usingBinding) {
1511
1511
  reportAmbiguousIdentifier(node, [globalBinding, usingBinding]);
1512
1512
  return globalBinding;
@@ -1523,22 +1523,25 @@ export function createChecker(program) {
1523
1523
  }
1524
1524
  return undefined;
1525
1525
  }
1526
- function resolveTypeReferenceSym(node, mapper, resolveDecorator = false) {
1526
+ function resolveTypeReferenceSym(node, mapper, options) {
1527
1527
  if (mapper === undefined && referenceSymCache.has(node)) {
1528
1528
  return referenceSymCache.get(node);
1529
1529
  }
1530
- const sym = resolveTypeReferenceSymInternal(node, mapper, resolveDecorator);
1530
+ const resolvedOptions = typeof options === "boolean"
1531
+ ? { ...defaultSymbolResolutionOptions, resolveDecorators: options }
1532
+ : { ...defaultSymbolResolutionOptions, ...(options !== null && options !== void 0 ? options : {}) };
1533
+ const sym = resolveTypeReferenceSymInternal(node, mapper, resolvedOptions);
1531
1534
  referenceSymCache.set(node, sym);
1532
1535
  return sym;
1533
1536
  }
1534
- function resolveTypeReferenceSymInternal(node, mapper, resolveDecorator = false) {
1537
+ function resolveTypeReferenceSymInternal(node, mapper, options) {
1535
1538
  if (hasParseError(node)) {
1536
1539
  // Don't report synthetic identifiers used for parser error recovery.
1537
1540
  // The parse error is the root cause and will already have been logged.
1538
1541
  return undefined;
1539
1542
  }
1540
1543
  if (node.kind === SyntaxKind.TypeReference) {
1541
- return resolveTypeReferenceSym(node.target, mapper, resolveDecorator);
1544
+ return resolveTypeReferenceSym(node.target, mapper, options);
1542
1545
  }
1543
1546
  if (node.kind === SyntaxKind.MemberExpression) {
1544
1547
  let base = resolveTypeReferenceSym(node.base, mapper);
@@ -1547,29 +1550,29 @@ export function createChecker(program) {
1547
1550
  }
1548
1551
  // when resolving a type reference based on an alias, unwrap the alias.
1549
1552
  if (base.flags & 2048 /* SymbolFlags.Alias */) {
1550
- base = getAliasedSymbol(base, mapper);
1553
+ base = getAliasedSymbol(base, mapper, options);
1551
1554
  if (!base) {
1552
1555
  return undefined;
1553
1556
  }
1554
1557
  }
1555
1558
  if (node.selector === ".") {
1556
- return resolveMemberInContainer(node, base, mapper, resolveDecorator);
1559
+ return resolveMemberInContainer(node, base, mapper, options);
1557
1560
  }
1558
1561
  else {
1559
1562
  return resolveMetaProperty(node, base);
1560
1563
  }
1561
1564
  }
1562
1565
  if (node.kind === SyntaxKind.Identifier) {
1563
- const sym = resolveIdentifierInScope(node, mapper, resolveDecorator);
1566
+ const sym = resolveIdentifierInScope(node, mapper, options);
1564
1567
  if (!sym)
1565
1568
  return undefined;
1566
1569
  return sym.flags & 524288 /* SymbolFlags.Using */ ? sym.symbolSource : sym;
1567
1570
  }
1568
1571
  compilerAssert(false, `Unknown type reference kind "${SyntaxKind[node.kind]}"`, node);
1569
1572
  }
1570
- function resolveMemberInContainer(node, base, mapper, resolveDecorator) {
1573
+ function resolveMemberInContainer(node, base, mapper, options) {
1571
1574
  if (base.flags & 4096 /* SymbolFlags.Namespace */) {
1572
- const symbol = resolveIdentifierInTable(node.id, base.exports, resolveDecorator);
1575
+ const symbol = resolveIdentifierInTable(node.id, base.exports, options);
1573
1576
  if (!symbol) {
1574
1577
  reportCheckerDiagnostic(createDiagnostic({
1575
1578
  code: "invalid-ref",
@@ -1603,7 +1606,7 @@ export function createChecker(program) {
1603
1606
  return undefined;
1604
1607
  }
1605
1608
  else if (base.flags & 674 /* SymbolFlags.MemberContainer */) {
1606
- if (isTemplatedNode(base.declarations[0])) {
1609
+ if (options.checkTemplateTypes && isTemplatedNode(base.declarations[0])) {
1607
1610
  const type = base.flags & 16777216 /* SymbolFlags.LateBound */
1608
1611
  ? base.type
1609
1612
  : getTypeForNode(base.declarations[0], mapper);
@@ -1611,7 +1614,7 @@ export function createChecker(program) {
1611
1614
  lateBindMembers(type, base);
1612
1615
  }
1613
1616
  }
1614
- const sym = resolveIdentifierInTable(node.id, base.members, resolveDecorator);
1617
+ const sym = resolveIdentifierInTable(node.id, base.members, options);
1615
1618
  if (!sym) {
1616
1619
  reportCheckerDiagnostic(createDiagnostic({
1617
1620
  code: "invalid-ref",
@@ -1637,7 +1640,10 @@ export function createChecker(program) {
1637
1640
  }
1638
1641
  }
1639
1642
  function resolveMetaProperty(node, base) {
1640
- const resolved = resolveIdentifierInTable(node.id, base.metatypeMembers);
1643
+ const resolved = resolveIdentifierInTable(node.id, base.metatypeMembers, {
1644
+ resolveDecorators: false,
1645
+ checkTemplateTypes: false,
1646
+ });
1641
1647
  if (!resolved) {
1642
1648
  reportCheckerDiagnostic(createDiagnostic({
1643
1649
  code: "invalid-ref",
@@ -1671,9 +1677,19 @@ export function createChecker(program) {
1671
1677
  * (i.e. they contain symbols we don't know until we've instantiated the type and the type is an
1672
1678
  * instantiation) we late bind the container which creates the symbol that will hold its members.
1673
1679
  */
1674
- function getAliasedSymbol(aliasSymbol, mapper) {
1680
+ function getAliasedSymbol(aliasSymbol, mapper, options) {
1675
1681
  var _a;
1676
- const aliasType = getTypeForNode(aliasSymbol.declarations[0], mapper);
1682
+ const node = aliasSymbol.declarations[0];
1683
+ const targetNode = node.kind === SyntaxKind.AliasStatement ? node.value : node;
1684
+ const sym = resolveTypeReferenceSymInternal(targetNode, mapper, options);
1685
+ if (sym === undefined) {
1686
+ return undefined;
1687
+ }
1688
+ const resolvedTargetNode = sym.declarations[0];
1689
+ if (!options.checkTemplateTypes || !isTemplatedNode(resolvedTargetNode)) {
1690
+ return sym;
1691
+ }
1692
+ const aliasType = getTypeForNode(node, mapper);
1677
1693
  if (isErrorType(aliasType)) {
1678
1694
  return undefined;
1679
1695
  }
@@ -2096,7 +2112,9 @@ export function createChecker(program) {
2096
2112
  table.set("returnType", node.signature.returnType.symbol);
2097
2113
  }
2098
2114
  else {
2099
- const sig = resolveTypeReferenceSym(node.signature.baseOperation, undefined);
2115
+ const sig = resolveTypeReferenceSym(node.signature.baseOperation, undefined, {
2116
+ checkTemplateTypes: false,
2117
+ });
2100
2118
  if (sig) {
2101
2119
  visit(sig.declarations[0], sig);
2102
2120
  const sigTable = getOrCreateAugmentedSymbolTable(sig.metatypeMembers);
@@ -2287,6 +2305,13 @@ export function createChecker(program) {
2287
2305
  reportCheckerDiagnostic(createDiagnostic({ code: "spread-model", target: targetNode }));
2288
2306
  return [];
2289
2307
  }
2308
+ if (parentModel === targetType) {
2309
+ reportCheckerDiagnostic(createDiagnostic({
2310
+ code: "spread-model",
2311
+ messageId: "selfSpread",
2312
+ target: targetNode,
2313
+ }));
2314
+ }
2290
2315
  const props = [];
2291
2316
  // copy each property
2292
2317
  for (const prop of walkPropertiesInherited(targetType)) {
@@ -4682,4 +4707,8 @@ var Related;
4682
4707
  Related[Related["true"] = 1] = "true";
4683
4708
  Related[Related["maybe"] = 2] = "maybe";
4684
4709
  })(Related || (Related = {}));
4710
+ const defaultSymbolResolutionOptions = {
4711
+ resolveDecorators: false,
4712
+ checkTemplateTypes: true,
4713
+ };
4685
4714
  //# sourceMappingURL=checker.js.map