@zzzen/pyright-internal 1.2.0-dev.20240630 → 1.2.0-dev.20240714

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 (170) hide show
  1. package/dist/analyzer/analyzerNodeInfo.js +74 -46
  2. package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
  3. package/dist/analyzer/binder.js +507 -513
  4. package/dist/analyzer/binder.js.map +1 -1
  5. package/dist/analyzer/checker.js +652 -633
  6. package/dist/analyzer/checker.js.map +1 -1
  7. package/dist/analyzer/codeFlowEngine.d.ts +5 -3
  8. package/dist/analyzer/codeFlowEngine.js +143 -122
  9. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  10. package/dist/analyzer/codeFlowTypes.js +30 -28
  11. package/dist/analyzer/codeFlowTypes.js.map +1 -1
  12. package/dist/analyzer/constraintSolver.d.ts +1 -1
  13. package/dist/analyzer/constraintSolver.js +71 -67
  14. package/dist/analyzer/constraintSolver.js.map +1 -1
  15. package/dist/analyzer/constructorTransform.js +22 -22
  16. package/dist/analyzer/constructorTransform.js.map +1 -1
  17. package/dist/analyzer/constructors.js +85 -77
  18. package/dist/analyzer/constructors.js.map +1 -1
  19. package/dist/analyzer/dataClasses.js +113 -176
  20. package/dist/analyzer/dataClasses.js.map +1 -1
  21. package/dist/analyzer/declaration.d.ts +1 -1
  22. package/dist/analyzer/declarationUtils.js +14 -15
  23. package/dist/analyzer/declarationUtils.js.map +1 -1
  24. package/dist/analyzer/decorators.js +85 -85
  25. package/dist/analyzer/decorators.js.map +1 -1
  26. package/dist/analyzer/enums.js +71 -57
  27. package/dist/analyzer/enums.js.map +1 -1
  28. package/dist/analyzer/functionTransform.js +8 -18
  29. package/dist/analyzer/functionTransform.js.map +1 -1
  30. package/dist/analyzer/importResolver.d.ts +2 -1
  31. package/dist/analyzer/importResolver.js +40 -29
  32. package/dist/analyzer/importResolver.js.map +1 -1
  33. package/dist/analyzer/importStatementUtils.js +27 -27
  34. package/dist/analyzer/importStatementUtils.js.map +1 -1
  35. package/dist/analyzer/namedTuples.js +33 -59
  36. package/dist/analyzer/namedTuples.js.map +1 -1
  37. package/dist/analyzer/operations.d.ts +4 -4
  38. package/dist/analyzer/operations.js +70 -70
  39. package/dist/analyzer/operations.js.map +1 -1
  40. package/dist/analyzer/packageTypeVerifier.js +66 -62
  41. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  42. package/dist/analyzer/parameterUtils.d.ts +4 -4
  43. package/dist/analyzer/parameterUtils.js +28 -46
  44. package/dist/analyzer/parameterUtils.js.map +1 -1
  45. package/dist/analyzer/parseTreeUtils.js +268 -269
  46. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  47. package/dist/analyzer/parseTreeWalker.js +76 -76
  48. package/dist/analyzer/parseTreeWalker.js.map +1 -1
  49. package/dist/analyzer/patternMatching.js +195 -147
  50. package/dist/analyzer/patternMatching.js.map +1 -1
  51. package/dist/analyzer/program.js +1 -1
  52. package/dist/analyzer/program.js.map +1 -1
  53. package/dist/analyzer/properties.js +78 -147
  54. package/dist/analyzer/properties.js.map +1 -1
  55. package/dist/analyzer/protocols.js +22 -22
  56. package/dist/analyzer/protocols.js.map +1 -1
  57. package/dist/analyzer/sourceFile.d.ts +3 -2
  58. package/dist/analyzer/sourceFile.js +8 -8
  59. package/dist/analyzer/sourceFile.js.map +1 -1
  60. package/dist/analyzer/sourceMapper.js +20 -19
  61. package/dist/analyzer/sourceMapper.js.map +1 -1
  62. package/dist/analyzer/staticExpressions.js +83 -84
  63. package/dist/analyzer/staticExpressions.js.map +1 -1
  64. package/dist/analyzer/testWalker.js +2 -2
  65. package/dist/analyzer/testWalker.js.map +1 -1
  66. package/dist/analyzer/tracePrinter.js +20 -20
  67. package/dist/analyzer/tracePrinter.js.map +1 -1
  68. package/dist/analyzer/typeDocStringUtils.js +25 -25
  69. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  70. package/dist/analyzer/typeEvaluator.js +2330 -2367
  71. package/dist/analyzer/typeEvaluator.js.map +1 -1
  72. package/dist/analyzer/typeEvaluatorTypes.d.ts +33 -31
  73. package/dist/analyzer/typeEvaluatorTypes.js +48 -41
  74. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  75. package/dist/analyzer/typeGuards.js +221 -217
  76. package/dist/analyzer/typeGuards.js.map +1 -1
  77. package/dist/analyzer/typePrinter.js +118 -115
  78. package/dist/analyzer/typePrinter.js.map +1 -1
  79. package/dist/analyzer/typeStubWriter.js +104 -103
  80. package/dist/analyzer/typeStubWriter.js.map +1 -1
  81. package/dist/analyzer/typeUtils.d.ts +26 -9
  82. package/dist/analyzer/typeUtils.js +460 -404
  83. package/dist/analyzer/typeUtils.js.map +1 -1
  84. package/dist/analyzer/typeVarContext.js +8 -8
  85. package/dist/analyzer/typeVarContext.js.map +1 -1
  86. package/dist/analyzer/typeWalker.js +13 -10
  87. package/dist/analyzer/typeWalker.js.map +1 -1
  88. package/dist/analyzer/typedDicts.js +96 -198
  89. package/dist/analyzer/typedDicts.js.map +1 -1
  90. package/dist/analyzer/types.d.ts +147 -103
  91. package/dist/analyzer/types.js +668 -493
  92. package/dist/analyzer/types.js.map +1 -1
  93. package/dist/commands/dumpFileDebugInfoCommand.js +33 -33
  94. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  95. package/dist/common/diagnostic.d.ts +14 -0
  96. package/dist/common/diagnostic.js +41 -1
  97. package/dist/common/diagnostic.js.map +1 -1
  98. package/dist/common/diagnosticSink.d.ts +4 -0
  99. package/dist/common/diagnosticSink.js +21 -1
  100. package/dist/common/diagnosticSink.js.map +1 -1
  101. package/dist/common/fileSystem.d.ts +1 -0
  102. package/dist/common/fileSystem.js.map +1 -1
  103. package/dist/common/fullAccessHost.js +6 -4
  104. package/dist/common/fullAccessHost.js.map +1 -1
  105. package/dist/common/realFileSystem.d.ts +1 -0
  106. package/dist/common/realFileSystem.js +4 -0
  107. package/dist/common/realFileSystem.js.map +1 -1
  108. package/dist/common/textEditTracker.js +14 -14
  109. package/dist/common/textEditTracker.js.map +1 -1
  110. package/dist/languageService/autoImporter.js +10 -10
  111. package/dist/languageService/autoImporter.js.map +1 -1
  112. package/dist/languageService/callHierarchyProvider.js +23 -23
  113. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  114. package/dist/languageService/completionProvider.d.ts +1 -1
  115. package/dist/languageService/completionProvider.js +156 -154
  116. package/dist/languageService/completionProvider.js.map +1 -1
  117. package/dist/languageService/definitionProvider.d.ts +1 -1
  118. package/dist/languageService/definitionProvider.js +3 -1
  119. package/dist/languageService/definitionProvider.js.map +1 -1
  120. package/dist/languageService/documentSymbolCollector.js +19 -19
  121. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  122. package/dist/languageService/hoverProvider.js +25 -24
  123. package/dist/languageService/hoverProvider.js.map +1 -1
  124. package/dist/languageService/importSorter.js +8 -8
  125. package/dist/languageService/importSorter.js.map +1 -1
  126. package/dist/languageService/referencesProvider.js +8 -8
  127. package/dist/languageService/referencesProvider.js.map +1 -1
  128. package/dist/languageService/signatureHelpProvider.d.ts +1 -1
  129. package/dist/languageService/signatureHelpProvider.js +6 -6
  130. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  131. package/dist/languageService/symbolIndexer.js +3 -3
  132. package/dist/languageService/symbolIndexer.js.map +1 -1
  133. package/dist/languageService/tooltipUtils.js +13 -13
  134. package/dist/languageService/tooltipUtils.js.map +1 -1
  135. package/dist/localization/localize.d.ts +3 -0
  136. package/dist/localization/localize.js +1 -0
  137. package/dist/localization/localize.js.map +1 -1
  138. package/dist/localization/package.nls.en-us.json +2 -1
  139. package/dist/parser/parseNodes.d.ts +468 -401
  140. package/dist/parser/parseNodes.js +626 -355
  141. package/dist/parser/parseNodes.js.map +1 -1
  142. package/dist/parser/parser.d.ts +1 -0
  143. package/dist/parser/parser.js +322 -297
  144. package/dist/parser/parser.js.map +1 -1
  145. package/dist/pyright.js +265 -5
  146. package/dist/pyright.js.map +1 -1
  147. package/dist/tests/classDeclaration.test.js +14 -14
  148. package/dist/tests/classDeclaration.test.js.map +1 -1
  149. package/dist/tests/fourslash/hover.init.fourslash.js +1 -1
  150. package/dist/tests/fourslash/hover.init.fourslash.js.map +1 -1
  151. package/dist/tests/harness/vfs/filesystem.d.ts +3 -2
  152. package/dist/tests/harness/vfs/filesystem.js +6 -2
  153. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  154. package/dist/tests/importResolver.test.js +4 -3
  155. package/dist/tests/importResolver.test.js.map +1 -1
  156. package/dist/tests/parseTreeUtils.test.js +5 -5
  157. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  158. package/dist/tests/parser.test.js +8 -8
  159. package/dist/tests/parser.test.js.map +1 -1
  160. package/dist/tests/sourceMapperUtils.test.js +7 -7
  161. package/dist/tests/sourceMapperUtils.test.js.map +1 -1
  162. package/dist/tests/typeEvaluator2.test.js +2 -2
  163. package/dist/tests/typeEvaluator3.test.js +10 -5
  164. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  165. package/dist/tests/typeEvaluator4.test.js +1 -1
  166. package/dist/tests/typeEvaluator7.test.js +2 -2
  167. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  168. package/dist/tests/typePrinter.test.js +14 -39
  169. package/dist/tests/typePrinter.test.js.map +1 -1
  170. package/package.json +1 -1
@@ -66,13 +66,13 @@ function createTypedDictType(evaluator, errorNode, typedDictClass, argList) {
66
66
  evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportArgumentType, localize_1.LocMessage.typedDictFirstArg(), argList[0].valueExpression || errorNode);
67
67
  }
68
68
  else {
69
- className = nameArg.valueExpression.strings.map((s) => s.value).join('');
69
+ className = nameArg.valueExpression.d.strings.map((s) => s.d.value).join('');
70
70
  }
71
71
  }
72
72
  const effectiveClassName = className || 'TypedDict';
73
73
  const classType = types_1.ClassType.createInstantiable(effectiveClassName, ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, effectiveClassName), fileInfo.moduleName, fileInfo.fileUri, 4 /* ClassTypeFlags.TypedDictClass */ | 4194304 /* ClassTypeFlags.ValidTypeAliasClass */, ParseTreeUtils.getTypeSourceId(errorNode),
74
- /* declaredMetaclass */ undefined, typedDictClass.details.effectiveMetaclass);
75
- classType.details.baseClasses.push(typedDictClass);
74
+ /* declaredMetaclass */ undefined, typedDictClass.shared.effectiveMetaclass);
75
+ classType.shared.baseClasses.push(typedDictClass);
76
76
  (0, typeUtils_1.computeMroLinearization)(classType);
77
77
  const classFields = types_1.ClassType.getSymbolTable(classType);
78
78
  classFields.set('__class__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */ | 64 /* SymbolFlags.IgnoredForProtocolMatch */, classType));
@@ -95,12 +95,12 @@ function createTypedDictType(evaluator, errorNode, typedDictClass, argList) {
95
95
  if (!entry.name || !entry.valueExpression) {
96
96
  continue;
97
97
  }
98
- if (entrySet.has(entry.name.value)) {
98
+ if (entrySet.has(entry.name.d.value)) {
99
99
  evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typedDictEntryUnique(), entry.valueExpression);
100
100
  continue;
101
101
  }
102
102
  // Record names in a map to detect duplicates.
103
- entrySet.add(entry.name.value);
103
+ entrySet.add(entry.name.d.value);
104
104
  const newSymbol = new symbol_1.Symbol(8 /* SymbolFlags.InstanceMember */);
105
105
  const declaration = {
106
106
  type: 1 /* DeclarationType.Variable */,
@@ -113,7 +113,7 @@ function createTypedDictType(evaluator, errorNode, typedDictClass, argList) {
113
113
  isInExceptSuite: false,
114
114
  };
115
115
  newSymbol.addDeclaration(declaration);
116
- classFields.set(entry.name.value, newSymbol);
116
+ classFields.set(entry.name.d.value, newSymbol);
117
117
  }
118
118
  }
119
119
  else {
@@ -122,20 +122,20 @@ function createTypedDictType(evaluator, errorNode, typedDictClass, argList) {
122
122
  }
123
123
  if (usingDictSyntax) {
124
124
  for (const arg of argList.slice(2)) {
125
- if (((_a = arg.name) === null || _a === void 0 ? void 0 : _a.value) === 'total' || ((_b = arg.name) === null || _b === void 0 ? void 0 : _b.value) === 'closed') {
125
+ if (((_a = arg.name) === null || _a === void 0 ? void 0 : _a.d.value) === 'total' || ((_b = arg.name) === null || _b === void 0 ? void 0 : _b.d.value) === 'closed') {
126
126
  if (!arg.valueExpression ||
127
127
  arg.valueExpression.nodeType !== 14 /* ParseNodeType.Constant */ ||
128
- !(arg.valueExpression.constType === 15 /* KeywordType.False */ ||
129
- arg.valueExpression.constType === 33 /* KeywordType.True */)) {
130
- evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typedDictBoolParam().format({ name: arg.name.value }), arg.valueExpression || errorNode);
128
+ !(arg.valueExpression.d.constType === 15 /* KeywordType.False */ ||
129
+ arg.valueExpression.d.constType === 33 /* KeywordType.True */)) {
130
+ evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typedDictBoolParam().format({ name: arg.name.d.value }), arg.valueExpression || errorNode);
131
131
  }
132
- else if (arg.name.value === 'total' && arg.valueExpression.constType === 15 /* KeywordType.False */) {
133
- classType.details.flags |= 32 /* ClassTypeFlags.CanOmitDictValues */;
132
+ else if (arg.name.d.value === 'total' && arg.valueExpression.d.constType === 15 /* KeywordType.False */) {
133
+ classType.shared.flags |= 32 /* ClassTypeFlags.CanOmitDictValues */;
134
134
  }
135
- else if (arg.name.value === 'closed' && arg.valueExpression.constType === 33 /* KeywordType.True */) {
135
+ else if (arg.name.d.value === 'closed' && arg.valueExpression.d.constType === 33 /* KeywordType.True */) {
136
136
  // This is an experimental feature because PEP 728 hasn't been accepted yet.
137
137
  if (AnalyzerNodeInfo.getFileInfo(errorNode).diagnosticRuleSet.enableExperimentalFeatures) {
138
- classType.details.flags |=
138
+ classType.shared.flags |=
139
139
  8 /* ClassTypeFlags.TypedDictMarkedClosed */ | 16 /* ClassTypeFlags.TypedDictEffectivelyClosed */;
140
140
  }
141
141
  }
@@ -148,10 +148,10 @@ function createTypedDictType(evaluator, errorNode, typedDictClass, argList) {
148
148
  synthesizeTypedDictClassMethods(evaluator, errorNode, classType);
149
149
  // Validate that the assigned variable name is consistent with the provided name.
150
150
  if (((_c = errorNode.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 3 /* ParseNodeType.Assignment */ && className) {
151
- const target = errorNode.parent.leftExpression;
152
- const typedDictTarget = target.nodeType === 54 /* ParseNodeType.TypeAnnotation */ ? target.valueExpression : target;
151
+ const target = errorNode.parent.d.leftExpr;
152
+ const typedDictTarget = target.nodeType === 54 /* ParseNodeType.TypeAnnotation */ ? target.d.valueExpr : target;
153
153
  if (typedDictTarget.nodeType === 38 /* ParseNodeType.Name */) {
154
- if (typedDictTarget.value !== className) {
154
+ if (typedDictTarget.d.value !== className) {
155
155
  evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typedDictAssignedName().format({
156
156
  name: className,
157
157
  }), typedDictTarget);
@@ -166,83 +166,39 @@ function synthesizeTypedDictClassMethods(evaluator, node, classType) {
166
166
  (0, debug_1.assert)(types_1.ClassType.isTypedDictClass(classType));
167
167
  // Synthesize a __new__ method.
168
168
  const newType = types_1.FunctionType.createSynthesizedInstance('__new__', 1 /* FunctionTypeFlags.ConstructorMethod */);
169
- types_1.FunctionType.addParameter(newType, {
170
- category: 0 /* ParameterCategory.Simple */,
171
- name: 'cls',
172
- type: classType,
173
- hasDeclaredType: true,
174
- });
169
+ types_1.FunctionType.addParameter(newType, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, classType, types_1.FunctionParamFlags.TypeDeclared, 'cls'));
175
170
  types_1.FunctionType.addDefaultParameters(newType);
176
- newType.details.declaredReturnType = types_1.ClassType.cloneAsInstance(classType);
177
- newType.details.constructorTypeVarScopeId = (0, typeUtils_1.getTypeVarScopeId)(classType);
171
+ newType.shared.declaredReturnType = types_1.ClassType.cloneAsInstance(classType);
172
+ newType.priv.constructorTypeVarScopeId = (0, typeUtils_1.getTypeVarScopeId)(classType);
178
173
  // Synthesize an __init__ method with two overrides.
179
174
  const initOverride1 = types_1.FunctionType.createSynthesizedInstance('__init__', 256 /* FunctionTypeFlags.Overloaded */);
180
- types_1.FunctionType.addParameter(initOverride1, {
181
- category: 0 /* ParameterCategory.Simple */,
182
- name: 'self',
183
- type: types_1.ClassType.cloneAsInstance(classType),
184
- hasDeclaredType: true,
185
- });
186
- initOverride1.details.declaredReturnType = evaluator.getNoneType();
187
- initOverride1.details.constructorTypeVarScopeId = (0, typeUtils_1.getTypeVarScopeId)(classType);
175
+ types_1.FunctionType.addParameter(initOverride1, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, types_1.ClassType.cloneAsInstance(classType), types_1.FunctionParamFlags.TypeDeclared, 'self'));
176
+ initOverride1.shared.declaredReturnType = evaluator.getNoneType();
177
+ initOverride1.priv.constructorTypeVarScopeId = (0, typeUtils_1.getTypeVarScopeId)(classType);
188
178
  // The first parameter must be positional-only.
189
- types_1.FunctionType.addParameter(initOverride1, {
190
- category: 0 /* ParameterCategory.Simple */,
191
- name: '__map',
192
- type: types_1.ClassType.cloneAsInstance(classType),
193
- hasDeclaredType: true,
194
- });
179
+ types_1.FunctionType.addParameter(initOverride1, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, types_1.ClassType.cloneAsInstance(classType), types_1.FunctionParamFlags.TypeDeclared, '__map'));
195
180
  types_1.FunctionType.addPositionOnlyParameterSeparator(initOverride1);
196
181
  // All subsequent parameters must be named, so insert an empty "*".
197
182
  types_1.FunctionType.addKeywordOnlyParameterSeparator(initOverride1);
198
183
  const initOverride2 = types_1.FunctionType.createSynthesizedInstance('__init__', 256 /* FunctionTypeFlags.Overloaded */);
199
- types_1.FunctionType.addParameter(initOverride2, {
200
- category: 0 /* ParameterCategory.Simple */,
201
- name: 'self',
202
- type: types_1.ClassType.cloneAsInstance(classType),
203
- hasDeclaredType: true,
204
- });
205
- initOverride2.details.declaredReturnType = evaluator.getNoneType();
206
- initOverride2.details.constructorTypeVarScopeId = (0, typeUtils_1.getTypeVarScopeId)(classType);
184
+ types_1.FunctionType.addParameter(initOverride2, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, types_1.ClassType.cloneAsInstance(classType), types_1.FunctionParamFlags.TypeDeclared, 'self'));
185
+ initOverride2.shared.declaredReturnType = evaluator.getNoneType();
186
+ initOverride2.priv.constructorTypeVarScopeId = (0, typeUtils_1.getTypeVarScopeId)(classType);
207
187
  // All parameters must be named, so insert an empty "*".
208
188
  types_1.FunctionType.addKeywordOnlyParameterSeparator(initOverride2);
209
189
  const entries = getTypedDictMembersForClass(evaluator, classType);
210
190
  const extraEntriesInfo = (_a = entries.extraItems) !== null && _a !== void 0 ? _a : getEffectiveExtraItemsEntryType(evaluator, classType);
211
191
  let allEntriesAreReadOnly = entries.knownItems.size > 0;
212
192
  entries.knownItems.forEach((entry, name) => {
213
- types_1.FunctionType.addParameter(initOverride1, {
214
- category: 0 /* ParameterCategory.Simple */,
215
- name,
216
- hasDefault: true,
217
- type: entry.valueType,
218
- hasDeclaredType: true,
219
- });
220
- types_1.FunctionType.addParameter(initOverride2, {
221
- category: 0 /* ParameterCategory.Simple */,
222
- name,
223
- hasDefault: !entry.isRequired,
224
- type: entry.valueType,
225
- hasDeclaredType: true,
226
- });
193
+ types_1.FunctionType.addParameter(initOverride1, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, entry.valueType, types_1.FunctionParamFlags.TypeDeclared, name, entry.valueType));
194
+ types_1.FunctionType.addParameter(initOverride2, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, entry.valueType, types_1.FunctionParamFlags.TypeDeclared, name, entry.isRequired ? undefined : entry.valueType));
227
195
  if (!entry.isReadOnly) {
228
196
  allEntriesAreReadOnly = false;
229
197
  }
230
198
  });
231
199
  if (entries.extraItems && !(0, types_1.isNever)(entries.extraItems.valueType)) {
232
- types_1.FunctionType.addParameter(initOverride1, {
233
- category: 2 /* ParameterCategory.KwargsDict */,
234
- name: 'kwargs',
235
- hasDefault: false,
236
- type: entries.extraItems.valueType,
237
- hasDeclaredType: true,
238
- });
239
- types_1.FunctionType.addParameter(initOverride2, {
240
- category: 2 /* ParameterCategory.KwargsDict */,
241
- name: 'kwargs',
242
- hasDefault: false,
243
- type: entries.extraItems.valueType,
244
- hasDeclaredType: true,
245
- });
200
+ types_1.FunctionType.addParameter(initOverride1, types_1.FunctionParam.create(2 /* ParameterCategory.KwargsDict */, entries.extraItems.valueType, types_1.FunctionParamFlags.TypeDeclared, 'kwargs'));
201
+ types_1.FunctionType.addParameter(initOverride2, types_1.FunctionParam.create(2 /* ParameterCategory.KwargsDict */, entries.extraItems.valueType, types_1.FunctionParamFlags.TypeDeclared, 'kwargs'));
246
202
  }
247
203
  const symbolTable = types_1.ClassType.getSymbolTable(classType);
248
204
  const initType = types_1.OverloadedFunctionType.create([initOverride1, initOverride2]);
@@ -251,27 +207,17 @@ function synthesizeTypedDictClassMethods(evaluator, node, classType) {
251
207
  const strClass = evaluator.getBuiltInType(node, 'str');
252
208
  // Synthesize a "get", pop, and setdefault method for each named entry.
253
209
  if ((0, types_1.isInstantiableClass)(strClass)) {
254
- const selfParam = {
255
- category: 0 /* ParameterCategory.Simple */,
256
- name: 'self',
257
- type: types_1.ClassType.cloneAsInstance(classType),
258
- hasDeclaredType: true,
259
- };
210
+ const selfParam = types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, types_1.ClassType.cloneAsInstance(classType), types_1.FunctionParamFlags.TypeDeclared, 'self');
260
211
  function createDefaultTypeVar(func) {
261
212
  let defaultTypeVar = types_1.TypeVarType.createInstance(`__TDefault`);
262
- defaultTypeVar = types_1.TypeVarType.cloneForScopeId(defaultTypeVar, func.details.typeVarScopeId, classType.details.name, 1 /* TypeVarScopeType.Function */);
213
+ defaultTypeVar = types_1.TypeVarType.cloneForScopeId(defaultTypeVar, func.shared.typeVarScopeId, classType.shared.name, 1 /* TypeVarScopeType.Function */);
263
214
  return defaultTypeVar;
264
215
  }
265
216
  function createGetMethod(keyType, valueType, includeDefault, isEntryRequired = false, defaultTypeMatchesField = false) {
266
217
  const getOverload = types_1.FunctionType.createSynthesizedInstance('get', 256 /* FunctionTypeFlags.Overloaded */);
267
218
  types_1.FunctionType.addParameter(getOverload, selfParam);
268
- getOverload.details.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node);
269
- types_1.FunctionType.addParameter(getOverload, {
270
- category: 0 /* ParameterCategory.Simple */,
271
- name: 'k',
272
- type: keyType,
273
- hasDeclaredType: true,
274
- });
219
+ getOverload.shared.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node);
220
+ types_1.FunctionType.addParameter(getOverload, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, keyType, types_1.FunctionParamFlags.TypeDeclared, 'k'));
275
221
  if (includeDefault) {
276
222
  const defaultTypeVar = createDefaultTypeVar(getOverload);
277
223
  let defaultParamType;
@@ -291,36 +237,26 @@ function synthesizeTypedDictClassMethods(evaluator, node, classType) {
291
237
  }
292
238
  returnType = defaultParamType;
293
239
  }
294
- types_1.FunctionType.addParameter(getOverload, {
295
- category: 0 /* ParameterCategory.Simple */,
296
- name: 'default',
297
- type: defaultParamType,
298
- hasDeclaredType: true,
299
- });
300
- getOverload.details.declaredReturnType = returnType;
240
+ types_1.FunctionType.addParameter(getOverload, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, defaultParamType, types_1.FunctionParamFlags.TypeDeclared, 'default'));
241
+ getOverload.shared.declaredReturnType = returnType;
301
242
  }
302
243
  else {
303
- getOverload.details.declaredReturnType = isEntryRequired
244
+ getOverload.shared.declaredReturnType = isEntryRequired
304
245
  ? valueType
305
246
  : (0, types_1.combineTypes)([valueType, evaluator.getNoneType()]);
306
247
  }
307
248
  return getOverload;
308
249
  }
309
250
  function createPopMethods(keyType, valueType, isEntryRequired) {
310
- const keyParam = {
311
- category: 0 /* ParameterCategory.Simple */,
312
- name: 'k',
313
- type: keyType,
314
- hasDeclaredType: true,
315
- };
251
+ const keyParam = types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, keyType, types_1.FunctionParamFlags.TypeDeclared, 'k');
316
252
  const popOverload1 = types_1.FunctionType.createSynthesizedInstance('pop', 256 /* FunctionTypeFlags.Overloaded */);
317
253
  types_1.FunctionType.addParameter(popOverload1, selfParam);
318
254
  types_1.FunctionType.addParameter(popOverload1, keyParam);
319
- popOverload1.details.declaredReturnType = valueType;
255
+ popOverload1.shared.declaredReturnType = valueType;
320
256
  const popOverload2 = types_1.FunctionType.createSynthesizedInstance('pop', 256 /* FunctionTypeFlags.Overloaded */);
321
257
  types_1.FunctionType.addParameter(popOverload2, selfParam);
322
258
  types_1.FunctionType.addParameter(popOverload2, keyParam);
323
- popOverload2.details.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node);
259
+ popOverload2.shared.typeVarScopeId = ParseTreeUtils.getScopeIdForNode(node);
324
260
  const defaultTypeVar = createDefaultTypeVar(popOverload2);
325
261
  let defaultParamType;
326
262
  let returnType;
@@ -334,44 +270,23 @@ function synthesizeTypedDictClassMethods(evaluator, node, classType) {
334
270
  defaultParamType = (0, types_1.combineTypes)([valueType, defaultTypeVar]);
335
271
  returnType = defaultParamType;
336
272
  }
337
- types_1.FunctionType.addParameter(popOverload2, {
338
- category: 0 /* ParameterCategory.Simple */,
339
- name: 'default',
340
- hasDeclaredType: true,
341
- type: defaultParamType,
342
- hasDefault: true,
343
- });
344
- popOverload2.details.declaredReturnType = returnType;
273
+ types_1.FunctionType.addParameter(popOverload2, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, defaultParamType, types_1.FunctionParamFlags.TypeDeclared, 'default', defaultParamType));
274
+ popOverload2.shared.declaredReturnType = returnType;
345
275
  return [popOverload1, popOverload2];
346
276
  }
347
277
  function createSetDefaultMethod(keyType, valueType) {
348
278
  const setDefaultOverload = types_1.FunctionType.createSynthesizedInstance('setdefault', 256 /* FunctionTypeFlags.Overloaded */);
349
279
  types_1.FunctionType.addParameter(setDefaultOverload, selfParam);
350
- types_1.FunctionType.addParameter(setDefaultOverload, {
351
- category: 0 /* ParameterCategory.Simple */,
352
- name: 'k',
353
- hasDeclaredType: true,
354
- type: keyType,
355
- });
356
- types_1.FunctionType.addParameter(setDefaultOverload, {
357
- category: 0 /* ParameterCategory.Simple */,
358
- name: 'default',
359
- hasDeclaredType: true,
360
- type: valueType,
361
- });
362
- setDefaultOverload.details.declaredReturnType = valueType;
280
+ types_1.FunctionType.addParameter(setDefaultOverload, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, keyType, types_1.FunctionParamFlags.TypeDeclared, 'k'));
281
+ types_1.FunctionType.addParameter(setDefaultOverload, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, valueType, types_1.FunctionParamFlags.TypeDeclared, 'default'));
282
+ setDefaultOverload.shared.declaredReturnType = valueType;
363
283
  return setDefaultOverload;
364
284
  }
365
285
  function createDelItemMethod(keyType) {
366
286
  const delItemOverload = types_1.FunctionType.createSynthesizedInstance('delitem', 256 /* FunctionTypeFlags.Overloaded */);
367
287
  types_1.FunctionType.addParameter(delItemOverload, selfParam);
368
- types_1.FunctionType.addParameter(delItemOverload, {
369
- category: 0 /* ParameterCategory.Simple */,
370
- name: 'k',
371
- hasDeclaredType: true,
372
- type: keyType,
373
- });
374
- delItemOverload.details.declaredReturnType = evaluator.getNoneType();
288
+ types_1.FunctionType.addParameter(delItemOverload, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, keyType, types_1.FunctionParamFlags.TypeDeclared, 'k'));
289
+ delItemOverload.shared.declaredReturnType = evaluator.getNoneType();
375
290
  return delItemOverload;
376
291
  }
377
292
  function createUpdateMethod() {
@@ -385,19 +300,14 @@ function synthesizeTypedDictClassMethods(evaluator, node, classType) {
385
300
  const updateMethod3 = types_1.FunctionType.createSynthesizedInstance('update', 256 /* FunctionTypeFlags.Overloaded */);
386
301
  types_1.FunctionType.addParameter(updateMethod3, selfParam);
387
302
  // If all entries are read-only, don't allow updates.
388
- types_1.FunctionType.addParameter(updateMethod1, {
389
- category: 0 /* ParameterCategory.Simple */,
390
- name: '__m',
391
- hasDeclaredType: true,
392
- type: allEntriesAreReadOnly
393
- ? types_1.NeverType.createNever()
394
- : types_1.ClassType.cloneAsInstance(types_1.ClassType.cloneForPartialTypedDict(classType)),
395
- });
303
+ types_1.FunctionType.addParameter(updateMethod1, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, allEntriesAreReadOnly
304
+ ? types_1.NeverType.createNever()
305
+ : types_1.ClassType.cloneAsInstance(types_1.ClassType.cloneForPartialTypedDict(classType)), types_1.FunctionParamFlags.TypeDeclared, '__m'));
396
306
  types_1.FunctionType.addPositionOnlyParameterSeparator(updateMethod1);
397
307
  types_1.FunctionType.addKeywordOnlyParameterSeparator(updateMethod3);
398
- updateMethod1.details.declaredReturnType = evaluator.getNoneType();
399
- updateMethod2.details.declaredReturnType = evaluator.getNoneType();
400
- updateMethod3.details.declaredReturnType = evaluator.getNoneType();
308
+ updateMethod1.shared.declaredReturnType = evaluator.getNoneType();
309
+ updateMethod2.shared.declaredReturnType = evaluator.getNoneType();
310
+ updateMethod3.shared.declaredReturnType = evaluator.getNoneType();
401
311
  const tuplesToCombine = [];
402
312
  const tupleClass = evaluator.getBuiltInType(node, 'tuple');
403
313
  entries.knownItems.forEach((entry, name) => {
@@ -414,26 +324,14 @@ function synthesizeTypedDictClassMethods(evaluator, node, classType) {
414
324
  tuplesToCombine.push(tupleType);
415
325
  }
416
326
  // For writable entries, add a keyword argument.
417
- types_1.FunctionType.addParameter(updateMethod3, {
418
- category: 0 /* ParameterCategory.Simple */,
419
- name,
420
- hasDeclaredType: true,
421
- hasDefault: true,
422
- defaultType: types_1.AnyType.create(/* isEllipsis */ true),
423
- type: entry.valueType,
424
- });
327
+ types_1.FunctionType.addParameter(updateMethod3, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, entry.valueType, types_1.FunctionParamFlags.TypeDeclared, name, types_1.AnyType.create(/* isEllipsis */ true)));
425
328
  }
426
329
  });
427
330
  const iterableClass = evaluator.getTypingType(node, 'Iterable');
428
331
  if (iterableClass && (0, types_1.isInstantiableClass)(iterableClass)) {
429
332
  const iterableType = types_1.ClassType.cloneAsInstance(iterableClass);
430
- types_1.FunctionType.addParameter(updateMethod2, {
431
- category: 0 /* ParameterCategory.Simple */,
432
- name: '__m',
433
- hasDeclaredType: true,
434
- type: types_1.ClassType.cloneForSpecialization(iterableType, [(0, types_1.combineTypes)(tuplesToCombine)],
435
- /* isTypeArgumentExplicit */ true),
436
- });
333
+ types_1.FunctionType.addParameter(updateMethod2, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, types_1.ClassType.cloneForSpecialization(iterableType, [(0, types_1.combineTypes)(tuplesToCombine)],
334
+ /* isTypeArgumentExplicit */ true), types_1.FunctionParamFlags.TypeDeclared, '__m'));
437
335
  }
438
336
  types_1.FunctionType.addPositionOnlyParameterSeparator(updateMethod2);
439
337
  // Note that the order of method1 and method2 is swapped. This is done so
@@ -492,7 +390,7 @@ function synthesizeTypedDictClassMethods(evaluator, node, classType) {
492
390
  if (dictValueType) {
493
391
  const clearMethod = types_1.FunctionType.createSynthesizedInstance('clear');
494
392
  types_1.FunctionType.addParameter(clearMethod, selfParam);
495
- clearMethod.details.declaredReturnType = evaluator.getNoneType();
393
+ clearMethod.shared.declaredReturnType = evaluator.getNoneType();
496
394
  symbolTable.set('clear', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, clearMethod));
497
395
  const popItemMethod = types_1.FunctionType.createSynthesizedInstance('popitem');
498
396
  types_1.FunctionType.addParameter(popItemMethod, selfParam);
@@ -507,7 +405,7 @@ function synthesizeTypedDictClassMethods(evaluator, node, classType) {
507
405
  else {
508
406
  tupleType = types_1.UnknownType.create();
509
407
  }
510
- popItemMethod.details.declaredReturnType = tupleType;
408
+ popItemMethod.shared.declaredReturnType = tupleType;
511
409
  symbolTable.set('popitem', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, popItemMethod));
512
410
  }
513
411
  // If the TypedDict is closed, we can provide a more accurate value type
@@ -520,8 +418,8 @@ function synthesizeTypedDictClassMethods(evaluator, node, classType) {
520
418
  const returnTypeClass = evaluator.getTypingType(node, `dict_${methodName}`);
521
419
  if (returnTypeClass &&
522
420
  (0, types_1.isInstantiableClass)(returnTypeClass) &&
523
- returnTypeClass.details.typeParameters.length === 2) {
524
- method.details.declaredReturnType = types_1.ClassType.cloneForSpecialization(types_1.ClassType.cloneAsInstance(returnTypeClass), [strType, mappingValueType],
421
+ returnTypeClass.shared.typeParameters.length === 2) {
422
+ method.shared.declaredReturnType = types_1.ClassType.cloneForSpecialization(types_1.ClassType.cloneAsInstance(returnTypeClass), [strType, mappingValueType],
525
423
  /* isTypeArgumentExplicit */ true);
526
424
  symbolTable.set(methodName, symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, method));
527
425
  }
@@ -533,7 +431,7 @@ exports.synthesizeTypedDictClassMethods = synthesizeTypedDictClassMethods;
533
431
  function getTypedDictMembersForClass(evaluator, classType, allowNarrowed = false) {
534
432
  var _a;
535
433
  // Were the entries already calculated and cached?
536
- if (!classType.details.typedDictEntries) {
434
+ if (!classType.shared.typedDictEntries) {
537
435
  const entries = {
538
436
  knownItems: new Map(),
539
437
  extraItems: undefined,
@@ -548,17 +446,17 @@ function getTypedDictMembersForClass(evaluator, classType, allowNarrowed = false
548
446
  };
549
447
  }
550
448
  // Cache the entries for next time.
551
- classType.details.typedDictEntries = entries;
449
+ classType.shared.typedDictEntries = entries;
552
450
  }
553
451
  const typeVarContext = (0, typeUtils_1.buildTypeVarContextFromSpecializedClass)(classType);
554
452
  // Create a specialized copy of the entries so the caller can mutate them.
555
453
  const entries = new Map();
556
- classType.details.typedDictEntries.knownItems.forEach((value, key) => {
454
+ classType.shared.typedDictEntries.knownItems.forEach((value, key) => {
557
455
  const tdEntry = { ...value };
558
456
  tdEntry.valueType = (0, typeUtils_1.applySolvedTypeVars)(tdEntry.valueType, typeVarContext);
559
457
  // If the class is "Partial", make all entries optional and convert all
560
458
  // read-only entries to Never.
561
- if (classType.isTypedDictPartial) {
459
+ if (classType.priv.isTypedDictPartial) {
562
460
  tdEntry.isRequired = false;
563
461
  if (tdEntry.isReadOnly) {
564
462
  tdEntry.valueType = types_1.NeverType.createNever();
@@ -570,8 +468,8 @@ function getTypedDictMembersForClass(evaluator, classType, allowNarrowed = false
570
468
  entries.set(key, tdEntry);
571
469
  });
572
470
  // Apply narrowed types on top of existing entries if present.
573
- if (allowNarrowed && classType.typedDictNarrowedEntries) {
574
- classType.typedDictNarrowedEntries.forEach((value, key) => {
471
+ if (allowNarrowed && classType.priv.typedDictNarrowedEntries) {
472
+ classType.priv.typedDictNarrowedEntries.forEach((value, key) => {
575
473
  const tdEntry = { ...value };
576
474
  tdEntry.valueType = (0, typeUtils_1.applySolvedTypeVars)(tdEntry.valueType, typeVarContext);
577
475
  entries.set(key, tdEntry);
@@ -579,7 +477,7 @@ function getTypedDictMembersForClass(evaluator, classType, allowNarrowed = false
579
477
  }
580
478
  return {
581
479
  knownItems: entries,
582
- extraItems: (_a = classType.details.typedDictEntries) === null || _a === void 0 ? void 0 : _a.extraItems,
480
+ extraItems: (_a = classType.shared.typedDictEntries) === null || _a === void 0 ? void 0 : _a.extraItems,
583
481
  };
584
482
  }
585
483
  exports.getTypedDictMembersForClass = getTypedDictMembersForClass;
@@ -646,22 +544,22 @@ exports.getTypedDictDictEquivalent = getTypedDictDictEquivalent;
646
544
  function getTypedDictFieldsFromDictSyntax(evaluator, entryDict, classFields, isInline) {
647
545
  const entrySet = new Set();
648
546
  const fileInfo = AnalyzerNodeInfo.getFileInfo(entryDict);
649
- entryDict.entries.forEach((entry) => {
547
+ entryDict.d.items.forEach((entry) => {
650
548
  if (entry.nodeType !== 20 /* ParseNodeType.DictionaryKeyEntry */) {
651
549
  evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typedDictSecondArgDictEntry(), entry);
652
550
  return;
653
551
  }
654
- if (entry.keyExpression.nodeType !== 48 /* ParseNodeType.StringList */) {
655
- evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typedDictEntryName(), entry.keyExpression);
552
+ if (entry.d.keyExpr.nodeType !== 48 /* ParseNodeType.StringList */) {
553
+ evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typedDictEntryName(), entry.d.keyExpr);
656
554
  return;
657
555
  }
658
- const entryName = entry.keyExpression.strings.map((s) => s.value).join('');
556
+ const entryName = entry.d.keyExpr.d.strings.map((s) => s.d.value).join('');
659
557
  if (!entryName) {
660
- evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typedDictEmptyName(), entry.keyExpression);
558
+ evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typedDictEmptyName(), entry.d.keyExpr);
661
559
  return;
662
560
  }
663
561
  if (entrySet.has(entryName)) {
664
- evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typedDictEntryUnique(), entry.keyExpression);
562
+ evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typedDictEntryUnique(), entry.d.keyExpr);
665
563
  return;
666
564
  }
667
565
  // Record names in a set to detect duplicates.
@@ -669,11 +567,11 @@ function getTypedDictFieldsFromDictSyntax(evaluator, entryDict, classFields, isI
669
567
  const newSymbol = new symbol_1.Symbol(8 /* SymbolFlags.InstanceMember */);
670
568
  const declaration = {
671
569
  type: 1 /* DeclarationType.Variable */,
672
- node: entry.keyExpression,
570
+ node: entry.d.keyExpr,
673
571
  uri: fileInfo.fileUri,
674
- typeAnnotationNode: entry.valueExpression,
572
+ typeAnnotationNode: entry.d.valueExpr,
675
573
  isRuntimeTypeExpression: !isInline,
676
- range: (0, positionUtils_1.convertOffsetsToRange)(entry.keyExpression.start, textRange_1.TextRange.getEnd(entry.keyExpression), fileInfo.lines),
574
+ range: (0, positionUtils_1.convertOffsetsToRange)(entry.d.keyExpr.start, textRange_1.TextRange.getEnd(entry.d.keyExpr), fileInfo.lines),
677
575
  moduleName: fileInfo.moduleName,
678
576
  isInExceptSuite: false,
679
577
  };
@@ -690,7 +588,7 @@ function getTypedDictMembersForClassRecursive(evaluator, classType, entries, rec
690
588
  return;
691
589
  }
692
590
  recursionCount++;
693
- classType.details.baseClasses.forEach((baseClassType) => {
591
+ classType.shared.baseClasses.forEach((baseClassType) => {
694
592
  if ((0, types_1.isInstantiableClass)(baseClassType) && types_1.ClassType.isTypedDictClass(baseClassType)) {
695
593
  const specializedBaseClassType = (0, typeUtils_1.partiallySpecializeType)(baseClassType, classType);
696
594
  (0, debug_1.assert)((0, types_1.isClass)(specializedBaseClassType));
@@ -750,8 +648,8 @@ function getEffectiveExtraItemsEntryType(evaluator, classType) {
750
648
  isProvided: false,
751
649
  };
752
650
  }
753
- if ((_a = classType.details.typedDictEntries) === null || _a === void 0 ? void 0 : _a.extraItems) {
754
- return classType.details.typedDictEntries.extraItems;
651
+ if ((_a = classType.shared.typedDictEntries) === null || _a === void 0 ? void 0 : _a.extraItems) {
652
+ return classType.shared.typedDictEntries.extraItems;
755
653
  }
756
654
  return {
757
655
  valueType: types_1.NeverType.createNever(),
@@ -901,10 +799,10 @@ function assignToTypedDict(evaluator, classType, keyTypes, valueTypes, diagAdden
901
799
  const narrowedEntries = new Map();
902
800
  let typeVarContext;
903
801
  let genericClassType = classType;
904
- if (classType.details.typeParameters.length > 0) {
802
+ if (classType.shared.typeParameters.length > 0) {
905
803
  typeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(classType));
906
804
  // Create a generic (nonspecialized version) of the class.
907
- if (classType.typeArguments) {
805
+ if (classType.priv.typeArguments) {
908
806
  genericClassType = types_1.ClassType.cloneForSpecialization(classType,
909
807
  /* typeArguments */ undefined,
910
808
  /* isTypeArgumentExplicit */ false);
@@ -917,7 +815,7 @@ function assignToTypedDict(evaluator, classType, keyTypes, valueTypes, diagAdden
917
815
  isMatch = false;
918
816
  }
919
817
  else {
920
- const keyValue = keyType.literalValue;
818
+ const keyValue = keyType.priv.literalValue;
921
819
  const symbolEntry = tdEntries.knownItems.get(keyValue);
922
820
  if (!symbolEntry) {
923
821
  if (tdEntries.extraItems) {
@@ -940,7 +838,7 @@ function assignToTypedDict(evaluator, classType, keyTypes, valueTypes, diagAdden
940
838
  if (diagAddendum) {
941
839
  const subDiag = diagAddendum === null || diagAddendum === void 0 ? void 0 : diagAddendum.createAddendum();
942
840
  subDiag.addMessage(localize_1.LocAddendum.typedDictFieldUndefined().format({
943
- name: keyType.literalValue,
841
+ name: keyType.priv.literalValue,
944
842
  type: evaluator.printType(types_1.ClassType.cloneAsInstance(classType)),
945
843
  }));
946
844
  subDiag.addTextRange(keyTypeResult.node);
@@ -954,7 +852,7 @@ function assignToTypedDict(evaluator, classType, keyTypes, valueTypes, diagAdden
954
852
  /* srcTypeVarContext */ undefined, 256 /* AssignTypeFlags.RetainLiteralsForTypeVar */)) {
955
853
  if (subDiag) {
956
854
  subDiag.addMessage(localize_1.LocAddendum.typedDictFieldTypeMismatch().format({
957
- name: keyType.literalValue,
855
+ name: keyType.priv.literalValue,
958
856
  type: evaluator.printType(valueTypes[index].type),
959
857
  }));
960
858
  subDiag.addTextRange(keyTypeResult.node);
@@ -1000,16 +898,16 @@ function assignToTypedDict(evaluator, classType, keyTypes, valueTypes, diagAdden
1000
898
  }
1001
899
  exports.assignToTypedDict = assignToTypedDict;
1002
900
  function getTypeOfIndexedTypedDict(evaluator, node, baseType, usage) {
1003
- if (node.items.length !== 1) {
1004
- evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typeArgsMismatchOne().format({ received: node.items.length }), node);
901
+ if (node.d.items.length !== 1) {
902
+ evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.typeArgsMismatchOne().format({ received: node.d.items.length }), node);
1005
903
  return { type: types_1.UnknownType.create() };
1006
904
  }
1007
905
  // Look for subscript types that are not supported by TypedDict.
1008
- if (node.trailingComma || node.items[0].name || node.items[0].argumentCategory !== 0 /* ArgumentCategory.Simple */) {
906
+ if (node.d.trailingComma || node.d.items[0].d.name || node.d.items[0].d.argCategory !== 0 /* ArgumentCategory.Simple */) {
1009
907
  return undefined;
1010
908
  }
1011
909
  const entries = getTypedDictMembersForClass(evaluator, baseType, /* allowNarrowed */ usage.method === 'get');
1012
- const indexTypeResult = evaluator.getTypeOfExpression(node.items[0].valueExpression);
910
+ const indexTypeResult = evaluator.getTypeOfExpression(node.d.items[0].d.valueExpr);
1013
911
  const indexType = indexTypeResult.type;
1014
912
  let diag = new diagnostic_1.DiagnosticAddendum();
1015
913
  let allDiagsInvolveNotRequiredKeys = true;
@@ -1019,13 +917,13 @@ function getTypeOfIndexedTypedDict(evaluator, node, baseType, usage) {
1019
917
  return subtype;
1020
918
  }
1021
919
  if ((0, types_1.isClassInstance)(subtype) && types_1.ClassType.isBuiltIn(subtype, 'str')) {
1022
- if (subtype.literalValue === undefined) {
920
+ if (subtype.priv.literalValue === undefined) {
1023
921
  // If it's a plain str with no literal value, we can't
1024
922
  // make any determination about the resulting type.
1025
923
  return types_1.UnknownType.create();
1026
924
  }
1027
925
  // Look up the entry in the typed dict to get its type.
1028
- const entryName = subtype.literalValue;
926
+ const entryName = subtype.priv.literalValue;
1029
927
  const entry = (_a = entries.knownItems.get(entryName)) !== null && _a !== void 0 ? _a : entries.extraItems;
1030
928
  if (!entry) {
1031
929
  diag.addMessage(localize_1.LocAddendum.keyUndefined().format({
@@ -1095,19 +993,19 @@ function narrowForKeyAssignment(classType, key) {
1095
993
  // We should never be called if the classType is not a TypedDict or if typedDictEntries
1096
994
  // is empty, but this can theoretically happen in the presence of certain circular
1097
995
  // dependencies.
1098
- if (!types_1.ClassType.isTypedDictClass(classType) || !classType.details.typedDictEntries) {
996
+ if (!types_1.ClassType.isTypedDictClass(classType) || !classType.shared.typedDictEntries) {
1099
997
  return classType;
1100
998
  }
1101
- const tdEntry = classType.details.typedDictEntries.knownItems.get(key);
999
+ const tdEntry = classType.shared.typedDictEntries.knownItems.get(key);
1102
1000
  if (!tdEntry || tdEntry.isRequired) {
1103
1001
  return classType;
1104
1002
  }
1105
- const narrowedTdEntry = (_a = classType.typedDictNarrowedEntries) === null || _a === void 0 ? void 0 : _a.get(key);
1003
+ const narrowedTdEntry = (_a = classType.priv.typedDictNarrowedEntries) === null || _a === void 0 ? void 0 : _a.get(key);
1106
1004
  if (narrowedTdEntry === null || narrowedTdEntry === void 0 ? void 0 : narrowedTdEntry.isProvided) {
1107
1005
  return classType;
1108
1006
  }
1109
- const narrowedEntries = classType.typedDictNarrowedEntries
1110
- ? new Map(classType.typedDictNarrowedEntries)
1007
+ const narrowedEntries = classType.priv.typedDictNarrowedEntries
1008
+ ? new Map(classType.priv.typedDictNarrowedEntries)
1111
1009
  : new Map();
1112
1010
  narrowedEntries.set(key, {
1113
1011
  isProvided: true,