@zzzen/pyright-internal 1.2.0-dev.20220717 → 1.2.0-dev.20220724

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 (105) hide show
  1. package/dist/analyzer/analysis.js +1 -1
  2. package/dist/analyzer/analysis.js.map +1 -1
  3. package/dist/analyzer/checker.d.ts +1 -0
  4. package/dist/analyzer/checker.js +42 -1
  5. package/dist/analyzer/checker.js.map +1 -1
  6. package/dist/analyzer/constraintSolver.js +0 -1
  7. package/dist/analyzer/constraintSolver.js.map +1 -1
  8. package/dist/analyzer/dataClasses.js +13 -4
  9. package/dist/analyzer/dataClasses.js.map +1 -1
  10. package/dist/analyzer/importResolver.js +2 -2
  11. package/dist/analyzer/importResolver.js.map +1 -1
  12. package/dist/analyzer/importStatementUtils.d.ts +1 -1
  13. package/dist/analyzer/importStatementUtils.js +47 -18
  14. package/dist/analyzer/importStatementUtils.js.map +1 -1
  15. package/dist/analyzer/parseTreeUtils.d.ts +2 -0
  16. package/dist/analyzer/parseTreeUtils.js +71 -2
  17. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  18. package/dist/analyzer/patternMatching.js +1 -1
  19. package/dist/analyzer/patternMatching.js.map +1 -1
  20. package/dist/analyzer/service.d.ts +1 -1
  21. package/dist/analyzer/service.js +36 -37
  22. package/dist/analyzer/service.js.map +1 -1
  23. package/dist/analyzer/typeEvaluator.js +430 -410
  24. package/dist/analyzer/typeEvaluator.js.map +1 -1
  25. package/dist/analyzer/typeEvaluatorTypes.d.ts +11 -11
  26. package/dist/analyzer/typeGuards.d.ts +2 -0
  27. package/dist/analyzer/typeGuards.js +41 -13
  28. package/dist/analyzer/typeGuards.js.map +1 -1
  29. package/dist/analyzer/typeUtils.d.ts +2 -1
  30. package/dist/analyzer/typeUtils.js +21 -21
  31. package/dist/analyzer/typeUtils.js.map +1 -1
  32. package/dist/analyzer/typedDicts.js +2 -2
  33. package/dist/analyzer/typedDicts.js.map +1 -1
  34. package/dist/analyzer/types.d.ts +1 -0
  35. package/dist/analyzer/types.js +37 -0
  36. package/dist/analyzer/types.js.map +1 -1
  37. package/dist/backgroundAnalysisBase.d.ts +2 -1
  38. package/dist/backgroundAnalysisBase.js +7 -0
  39. package/dist/backgroundAnalysisBase.js.map +1 -1
  40. package/dist/backgroundThreadBase.js +1 -0
  41. package/dist/backgroundThreadBase.js.map +1 -1
  42. package/dist/common/chokidarFileWatcherProvider.d.ts +1 -2
  43. package/dist/common/chokidarFileWatcherProvider.js +0 -3
  44. package/dist/common/chokidarFileWatcherProvider.js.map +1 -1
  45. package/dist/common/configOptions.d.ts +1 -0
  46. package/dist/common/configOptions.js +4 -0
  47. package/dist/common/configOptions.js.map +1 -1
  48. package/dist/common/diagnosticRules.d.ts +1 -0
  49. package/dist/common/diagnosticRules.js +1 -0
  50. package/dist/common/diagnosticRules.js.map +1 -1
  51. package/dist/common/editAction.d.ts +6 -0
  52. package/dist/common/editAction.js +15 -0
  53. package/dist/common/editAction.js.map +1 -1
  54. package/dist/common/fileSystem.d.ts +4 -1
  55. package/dist/common/fileSystem.js +6 -4
  56. package/dist/common/fileSystem.js.map +1 -1
  57. package/dist/common/realFileSystem.d.ts +2 -2
  58. package/dist/common/realFileSystem.js.map +1 -1
  59. package/dist/common/textEditUtils.d.ts +22 -2
  60. package/dist/common/textEditUtils.js +138 -1
  61. package/dist/common/textEditUtils.js.map +1 -1
  62. package/dist/common/uriParser.d.ts +2 -0
  63. package/dist/common/uriParser.js +11 -0
  64. package/dist/common/uriParser.js.map +1 -1
  65. package/dist/languageServerBase.d.ts +14 -10
  66. package/dist/languageServerBase.js +45 -43
  67. package/dist/languageServerBase.js.map +1 -1
  68. package/dist/languageService/codeActionProvider.d.ts +2 -2
  69. package/dist/languageService/codeActionProvider.js +1 -1
  70. package/dist/languageService/codeActionProvider.js.map +1 -1
  71. package/dist/languageService/renameModuleProvider.d.ts +1 -4
  72. package/dist/languageService/renameModuleProvider.js +10 -46
  73. package/dist/languageService/renameModuleProvider.js.map +1 -1
  74. package/dist/localization/localize.d.ts +8 -0
  75. package/dist/localization/localize.js +2 -0
  76. package/dist/localization/localize.js.map +1 -1
  77. package/dist/localization/package.nls.en-us.json +2 -0
  78. package/dist/pyrightFileSystem.d.ts +19 -1
  79. package/dist/pyrightFileSystem.js +18 -1
  80. package/dist/pyrightFileSystem.js.map +1 -1
  81. package/dist/server.js +4 -4
  82. package/dist/server.js.map +1 -1
  83. package/dist/tests/checker.test.js +9 -0
  84. package/dist/tests/checker.test.js.map +1 -1
  85. package/dist/tests/harness/fourslash/testLanguageService.js +1 -1
  86. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  87. package/dist/tests/harness/fourslash/testState.js +1 -1
  88. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  89. package/dist/tests/renameModuleTestUtils.js +5 -87
  90. package/dist/tests/renameModuleTestUtils.js.map +1 -1
  91. package/dist/tests/testStateUtils.d.ts +8 -0
  92. package/dist/tests/testStateUtils.js +110 -0
  93. package/dist/tests/testStateUtils.js.map +1 -0
  94. package/dist/tests/testUtils.js +1 -1
  95. package/dist/tests/testUtils.js.map +1 -1
  96. package/dist/tests/typeEvaluator1.test.js +0 -4
  97. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  98. package/dist/tests/typeEvaluator2.test.js +4 -0
  99. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  100. package/dist/tests/typeEvaluator4.test.js +8 -0
  101. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  102. package/dist/workspaceMap.d.ts +1 -0
  103. package/dist/workspaceMap.js +10 -0
  104. package/dist/workspaceMap.js.map +1 -1
  105. package/package.json +2 -2
@@ -30,7 +30,7 @@ exports.analyzeProgram = exports.nullCallback = void 0;
30
30
  const cancellationUtils_1 = require("../common/cancellationUtils");
31
31
  const debug = __importStar(require("../common/debug"));
32
32
  const timing_1 = require("../common/timing");
33
- const nullCallback = (_) => {
33
+ const nullCallback = () => {
34
34
  /* empty */
35
35
  };
36
36
  exports.nullCallback = nullCallback;
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/analyzer/analysis.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;AAIH,mEAAuG;AAGvG,uDAAyC;AAEzC,6CAA4C;AAGrC,MAAM,YAAY,GAA6B,CAAC,CAAC,EAAE,EAAE;IACxD,WAAW;AACf,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAeF,SAAgB,cAAc,CAC1B,OAAgB,EAChB,OAAoC,EACpC,aAA4B,EAC5B,QAA8C,EAC9C,OAAyB,EACzB,KAAwB;IAExB,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,oBAAY,CAAC;IAEpC,IAAI;QACA,IAAA,gDAA4B,EAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,IAAI,iBAAQ,EAAE,CAAC;QAChC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEhD,MAAM,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC1D,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC;QAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAEpD,wCAAwC;QACxC,IAAI,mBAAmB,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;YAC3C,QAAQ,CAAC;gBACL,WAAW;gBACX,cAAc,EAAE,OAAO,CAAC,YAAY,EAAE;gBACtC,sBAAsB,EAAE,kBAAkB;gBAC1C,qBAAqB,EAAE,OAAO,CAAC,uBAAuB,EAAE;gBACxD,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,WAAW;aACd,CAAC,CAAC;SACN;KACJ;IAAC,OAAO,CAAM,EAAE;QACb,IAAI,8CAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YAClC,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,6BAA6B,GAAG,OAAO,CAAC,CAAC;QAEvD,QAAQ,CAAC;YACL,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,CAAC;YACjB,sBAAsB,EAAE,CAAC;YACzB,qBAAqB,EAAE,IAAI;YAC3B,kBAAkB,EAAE,IAAI;YACxB,wBAAwB,EAAE,KAAK;YAC/B,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;SACvC,CAAC,CAAC;KACN;IAED,OAAO,aAAa,CAAC;AACzB,CAAC;AAxDD,wCAwDC"}
1
+ {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/analyzer/analysis.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;AAIH,mEAAuG;AAGvG,uDAAyC;AAEzC,6CAA4C;AAGrC,MAAM,YAAY,GAA6B,GAAG,EAAE;IACvD,WAAW;AACf,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAeF,SAAgB,cAAc,CAC1B,OAAgB,EAChB,OAAoC,EACpC,aAA4B,EAC5B,QAA8C,EAC9C,OAAyB,EACzB,KAAwB;IAExB,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,oBAAY,CAAC;IAEpC,IAAI;QACA,IAAA,gDAA4B,EAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,IAAI,iBAAQ,EAAE,CAAC;QAChC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEhD,MAAM,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC1D,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC;QAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAEpD,wCAAwC;QACxC,IAAI,mBAAmB,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;YAC3C,QAAQ,CAAC;gBACL,WAAW;gBACX,cAAc,EAAE,OAAO,CAAC,YAAY,EAAE;gBACtC,sBAAsB,EAAE,kBAAkB;gBAC1C,qBAAqB,EAAE,OAAO,CAAC,uBAAuB,EAAE;gBACxD,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,WAAW;aACd,CAAC,CAAC;SACN;KACJ;IAAC,OAAO,CAAM,EAAE;QACb,IAAI,8CAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YAClC,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,6BAA6B,GAAG,OAAO,CAAC,CAAC;QAEvD,QAAQ,CAAC;YACL,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,CAAC;YACjB,sBAAsB,EAAE,CAAC;YACzB,qBAAqB,EAAE,IAAI;YAC3B,kBAAkB,EAAE,IAAI;YACxB,wBAAwB,EAAE,KAAK;YAC/B,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;SACvC,CAAC,CAAC;KACN;IAED,OAAO,aAAa,CAAC;AACzB,CAAC;AAxDD,wCAwDC"}
@@ -67,6 +67,7 @@ export declare class Checker extends ParseTreeWalker {
67
67
  private _validateExhaustiveMatch;
68
68
  private _suppressUnboundCheck;
69
69
  private _validateIllegalDefaultParamInitializer;
70
+ private _validateContainmentTypes;
70
71
  private _validateComparisonTypes;
71
72
  private _isTypeComparable;
72
73
  private _isTypeValidForUnusedValueTest;
@@ -737,6 +737,12 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
737
737
  this._validateComparisonTypes(node);
738
738
  }
739
739
  }
740
+ else if (node.operator === 41 /* In */ || node.operator === 42 /* NotIn */) {
741
+ // Don't apply this rule if it's within an assert.
742
+ if (!ParseTreeUtils.isWithinAssertExpression(node)) {
743
+ this._validateContainmentTypes(node);
744
+ }
745
+ }
740
746
  this._evaluator.getType(node);
741
747
  return true;
742
748
  }
@@ -982,11 +988,46 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
982
988
  }
983
989
  }
984
990
  }
991
+ _validateContainmentTypes(node) {
992
+ const leftType = this._evaluator.getType(node.leftExpression);
993
+ const containerType = this._evaluator.getType(node.rightExpression);
994
+ if (!leftType || !containerType) {
995
+ return;
996
+ }
997
+ if ((0, types_1.isNever)(leftType) || (0, types_1.isNever)(containerType)) {
998
+ return;
999
+ }
1000
+ // Use the common narrowing logic for containment.
1001
+ const elementType = (0, typeGuards_1.getElementTypeForContainerNarrowing)(containerType);
1002
+ if (!elementType) {
1003
+ return;
1004
+ }
1005
+ const narrowedType = (0, typeGuards_1.narrowTypeForContainerElementType)(this._evaluator, leftType, this._evaluator.makeTopLevelTypeVarsConcrete(elementType));
1006
+ if ((0, types_1.isNever)(narrowedType)) {
1007
+ const getMessage = () => {
1008
+ return node.operator === 41 /* In */
1009
+ ? localize_1.Localizer.Diagnostic.containmentAlwaysFalse()
1010
+ : localize_1.Localizer.Diagnostic.containmentAlwaysTrue();
1011
+ };
1012
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportUnnecessaryContains, diagnosticRules_1.DiagnosticRule.reportUnnecessaryContains, getMessage().format({
1013
+ leftType: this._evaluator.printType(leftType, /* expandTypeAlias */ true),
1014
+ rightType: this._evaluator.printType(elementType, /* expandTypeAlias */ true),
1015
+ }), node);
1016
+ }
1017
+ }
985
1018
  // Determines whether the types of the two operands for an == or != operation
986
1019
  // have overlapping types.
987
1020
  _validateComparisonTypes(node) {
1021
+ let rightExpression = node.rightExpression;
1022
+ // Check for chained comparisons.
1023
+ if (rightExpression.nodeType === 7 /* BinaryOperation */ &&
1024
+ !rightExpression.parenthesized &&
1025
+ ParseTreeUtils.operatorSupportsChaining(rightExpression.operator)) {
1026
+ // Use the left side of the right expression for comparison purposes.
1027
+ rightExpression = rightExpression.leftExpression;
1028
+ }
988
1029
  const leftType = this._evaluator.getType(node.leftExpression);
989
- const rightType = this._evaluator.getType(node.rightExpression);
1030
+ const rightType = this._evaluator.getType(rightExpression);
990
1031
  if (!leftType || !rightType) {
991
1032
  return;
992
1033
  }