@zzzen/pyright-internal 1.2.0-dev.20220904 → 1.2.0-dev.20220918

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 (84) hide show
  1. package/dist/analyzer/binder.js +22 -21
  2. package/dist/analyzer/binder.js.map +1 -1
  3. package/dist/analyzer/checker.d.ts +1 -0
  4. package/dist/analyzer/checker.js +27 -4
  5. package/dist/analyzer/checker.js.map +1 -1
  6. package/dist/analyzer/importResolver.d.ts +6 -1
  7. package/dist/analyzer/importResolver.js +76 -28
  8. package/dist/analyzer/importResolver.js.map +1 -1
  9. package/dist/analyzer/parseTreeUtils.d.ts +1 -0
  10. package/dist/analyzer/parseTreeUtils.js +54 -13
  11. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  12. package/dist/analyzer/patternMatching.js +3 -2
  13. package/dist/analyzer/patternMatching.js.map +1 -1
  14. package/dist/analyzer/program.js +8 -1
  15. package/dist/analyzer/program.js.map +1 -1
  16. package/dist/analyzer/scope.js +5 -3
  17. package/dist/analyzer/scope.js.map +1 -1
  18. package/dist/analyzer/service.js +18 -6
  19. package/dist/analyzer/service.js.map +1 -1
  20. package/dist/analyzer/typeEvaluator.js +72 -42
  21. package/dist/analyzer/typeEvaluator.js.map +1 -1
  22. package/dist/analyzer/typeGuards.js +4 -1
  23. package/dist/analyzer/typeGuards.js.map +1 -1
  24. package/dist/analyzer/typePrinter.d.ts +3 -3
  25. package/dist/analyzer/typePrinter.js +24 -20
  26. package/dist/analyzer/typePrinter.js.map +1 -1
  27. package/dist/analyzer/typeUtils.js +1 -1
  28. package/dist/analyzer/typeUtils.js.map +1 -1
  29. package/dist/analyzer/types.d.ts +2 -0
  30. package/dist/analyzer/types.js +8 -0
  31. package/dist/analyzer/types.js.map +1 -1
  32. package/dist/common/commandLineOptions.d.ts +2 -0
  33. package/dist/common/commandLineOptions.js +7 -0
  34. package/dist/common/commandLineOptions.js.map +1 -1
  35. package/dist/common/debug.js +7 -1
  36. package/dist/common/debug.js.map +1 -1
  37. package/dist/common/envVarUtils.d.ts +1 -0
  38. package/dist/common/envVarUtils.js +34 -0
  39. package/dist/common/envVarUtils.js.map +1 -0
  40. package/dist/common/realFileSystem.js +1 -1
  41. package/dist/common/realFileSystem.js.map +1 -1
  42. package/dist/languageServerBase.d.ts +3 -1
  43. package/dist/languageServerBase.js +2 -24
  44. package/dist/languageServerBase.js.map +1 -1
  45. package/dist/languageService/analyzerServiceExecutor.js +4 -1
  46. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  47. package/dist/languageService/indentationUtils.d.ts +5 -0
  48. package/dist/languageService/indentationUtils.js +68 -27
  49. package/dist/languageService/indentationUtils.js.map +1 -1
  50. package/dist/languageService/insertionPointUtils.d.ts +2 -2
  51. package/dist/languageService/insertionPointUtils.js +1 -1
  52. package/dist/languageService/insertionPointUtils.js.map +1 -1
  53. package/dist/languageService/signatureHelpProvider.js +2 -1
  54. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  55. package/dist/localization/localize.d.ts +4 -3
  56. package/dist/localization/localize.js +1 -1
  57. package/dist/localization/localize.js.map +1 -1
  58. package/dist/localization/package.nls.en-us.json +1 -1
  59. package/dist/parser/parser.js +43 -46
  60. package/dist/parser/parser.js.map +1 -1
  61. package/dist/parser/tokenizer.js +9 -7
  62. package/dist/parser/tokenizer.js.map +1 -1
  63. package/dist/server.js +6 -5
  64. package/dist/server.js.map +1 -1
  65. package/dist/tests/fourslash/signature.paramspec.fourslash.d.ts +1 -0
  66. package/dist/tests/fourslash/signature.paramspec.fourslash.js +30 -0
  67. package/dist/tests/fourslash/signature.paramspec.fourslash.js.map +1 -0
  68. package/dist/tests/ipythonMode.test.js +27 -0
  69. package/dist/tests/ipythonMode.test.js.map +1 -1
  70. package/dist/tests/parseTreeUtils.test.js +8 -2
  71. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  72. package/dist/tests/parser.test.js +2 -2
  73. package/dist/tests/testUtils.d.ts +2 -0
  74. package/dist/tests/testUtils.js +8 -2
  75. package/dist/tests/testUtils.js.map +1 -1
  76. package/dist/tests/tokenizer.test.js +3 -0
  77. package/dist/tests/tokenizer.test.js.map +1 -1
  78. package/dist/tests/typeEvaluator1.test.js +5 -1
  79. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  80. package/dist/tests/typeEvaluator3.test.js +5 -1
  81. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  82. package/dist/tests/typeEvaluator4.test.js +1 -1
  83. package/dist/tests/typeEvaluator5.test.js +2 -2
  84. package/package.json +7 -7
@@ -291,7 +291,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
291
291
  }
292
292
  });
293
293
  // Check for invalid use of ParamSpec P.args and P.kwargs.
294
- const paramSpecParams = functionTypeResult.functionType.details.parameters.filter((param) => {
294
+ const paramSpecParams = types_1.FunctionType.getFunctionParameters(functionTypeResult.functionType).filter((param) => {
295
295
  if (param.typeAnnotation && (0, types_1.isTypeVar)(param.type) && (0, types_1.isParamSpec)(param.type)) {
296
296
  if (param.category !== 0 /* Simple */ && param.name && param.type.paramSpecAccess) {
297
297
  return true;
@@ -374,7 +374,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
374
374
  // Verify that strict type guard functions don't violate the constraints
375
375
  // of strict type guards.
376
376
  this._validateStrictTypeGuardFunction(node, functionTypeResult.functionType, containingClassNode !== undefined);
377
- this._validateFunctionTypeVarUsage(node, functionTypeResult.functionType);
377
+ this._validateFunctionTypeVarUsage(node, functionTypeResult);
378
378
  }
379
379
  // If we're at the module level within a stub file, report a diagnostic
380
380
  // if there is a '__getattr__' function defined when in strict mode.
@@ -440,6 +440,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
440
440
  var _a;
441
441
  this._validateIsInstanceCall(node);
442
442
  this._validateIllegalDefaultParamInitializer(node);
443
+ this._validateStandardCollectionInstantiation(node);
443
444
  if (this._fileInfo.diagnosticRuleSet.reportUnusedCallResult !== 'none' ||
444
445
  this._fileInfo.diagnosticRuleSet.reportUnusedCoroutine !== 'none') {
445
446
  if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 47 /* StatementList */) {
@@ -1000,6 +1001,22 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1000
1001
  }
1001
1002
  }
1002
1003
  }
1004
+ _validateStandardCollectionInstantiation(node) {
1005
+ const leftType = this._evaluator.getType(node.leftExpression);
1006
+ if (leftType &&
1007
+ (0, types_1.isInstantiableClass)(leftType) &&
1008
+ types_1.ClassType.isBuiltIn(leftType) &&
1009
+ !leftType.includeSubclasses &&
1010
+ leftType.aliasName) {
1011
+ const nonInstantiable = ['List', 'Set', 'Dict', 'Tuple'];
1012
+ if (nonInstantiable.some((name) => name === leftType.aliasName)) {
1013
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.collectionAliasInstantiation().format({
1014
+ type: leftType.aliasName,
1015
+ alias: leftType.details.name,
1016
+ }), node.leftExpression);
1017
+ }
1018
+ }
1019
+ }
1003
1020
  _validateContainmentTypes(node) {
1004
1021
  const leftType = this._evaluator.getType(node.leftExpression);
1005
1022
  const containerType = this._evaluator.getType(node.rightExpression);
@@ -1171,11 +1188,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1171
1188
  return !(0, types_1.isNoneInstance)(type) && !(0, types_1.isNever)(type) && !(0, types_1.isAnyOrUnknown)(type);
1172
1189
  }
1173
1190
  // Verifies that each local type variable is used more than once.
1174
- _validateFunctionTypeVarUsage(node, type) {
1191
+ _validateFunctionTypeVarUsage(node, functionTypeResult) {
1175
1192
  // Skip this check entirely if it's disabled.
1176
1193
  if (this._fileInfo.diagnosticRuleSet.reportInvalidTypeVarUse === 'none') {
1177
1194
  return;
1178
1195
  }
1196
+ const type = functionTypeResult.functionType;
1179
1197
  const localTypeVarUsage = new Map();
1180
1198
  const classTypeVarUsage = new Map();
1181
1199
  let exemptBoundTypeVar = true;
@@ -1314,9 +1332,14 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1314
1332
  isUsedInReturnType = false;
1315
1333
  }
1316
1334
  }
1335
+ // Skip this check if the function is overloaded because the TypeVar
1336
+ // will be solved in terms of the overload signatures.
1337
+ const skipUnsolvableTypeVarCheck = (0, types_1.isOverloadedFunction)(functionTypeResult.decoratedType) &&
1338
+ !types_1.FunctionType.isOverloaded(functionTypeResult.functionType);
1317
1339
  if (isUsedInReturnType &&
1318
1340
  usage.paramTypeWithEllipsisUsageCount > 0 &&
1319
- usage.paramTypeUsageCount === usage.paramTypeWithEllipsisUsageCount) {
1341
+ usage.paramTypeUsageCount === usage.paramTypeWithEllipsisUsageCount &&
1342
+ !skipUnsolvableTypeVarCheck) {
1320
1343
  const diag = new diagnostic_1.DiagnosticAddendum();
1321
1344
  diag.addMessage(localize_1.Localizer.DiagnosticAddendum.typeVarUnsolvableRemedy());
1322
1345
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportInvalidTypeVarUse, diagnosticRules_1.DiagnosticRule.reportInvalidTypeVarUse, localize_1.Localizer.Diagnostic.typeVarPossiblyUnsolvable().format({