@zzzen/pyright-internal 1.2.0-dev.20240707 → 1.2.0-dev.20240721

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 (184) 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 +506 -512
  4. package/dist/analyzer/binder.js.map +1 -1
  5. package/dist/analyzer/checker.js +672 -655
  6. package/dist/analyzer/checker.js.map +1 -1
  7. package/dist/analyzer/codeFlowEngine.d.ts +5 -3
  8. package/dist/analyzer/codeFlowEngine.js +112 -103
  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.js +70 -66
  13. package/dist/analyzer/constraintSolver.js.map +1 -1
  14. package/dist/analyzer/constructorTransform.d.ts +1 -2
  15. package/dist/analyzer/constructorTransform.js +26 -27
  16. package/dist/analyzer/constructorTransform.js.map +1 -1
  17. package/dist/analyzer/constructors.d.ts +2 -2
  18. package/dist/analyzer/constructors.js +95 -190
  19. package/dist/analyzer/constructors.js.map +1 -1
  20. package/dist/analyzer/dataClasses.js +110 -179
  21. package/dist/analyzer/dataClasses.js.map +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 +78 -79
  25. package/dist/analyzer/decorators.js.map +1 -1
  26. package/dist/analyzer/enums.js +70 -56
  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.js +194 -145
  38. package/dist/analyzer/operations.js.map +1 -1
  39. package/dist/analyzer/packageTypeVerifier.js +66 -62
  40. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  41. package/dist/analyzer/parameterUtils.d.ts +4 -4
  42. package/dist/analyzer/parameterUtils.js +30 -47
  43. package/dist/analyzer/parameterUtils.js.map +1 -1
  44. package/dist/analyzer/parseTreeUtils.d.ts +1 -0
  45. package/dist/analyzer/parseTreeUtils.js +294 -272
  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 +178 -145
  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 +82 -147
  54. package/dist/analyzer/properties.js.map +1 -1
  55. package/dist/analyzer/protocols.js +29 -25
  56. package/dist/analyzer/protocols.js.map +1 -1
  57. package/dist/analyzer/sourceFile.js +3 -3
  58. package/dist/analyzer/sourceFile.js.map +1 -1
  59. package/dist/analyzer/sourceMapper.js +20 -19
  60. package/dist/analyzer/sourceMapper.js.map +1 -1
  61. package/dist/analyzer/staticExpressions.js +83 -84
  62. package/dist/analyzer/staticExpressions.js.map +1 -1
  63. package/dist/analyzer/testWalker.js +15 -3
  64. package/dist/analyzer/testWalker.js.map +1 -1
  65. package/dist/analyzer/tracePrinter.js +20 -20
  66. package/dist/analyzer/tracePrinter.js.map +1 -1
  67. package/dist/analyzer/typeDocStringUtils.js +25 -25
  68. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  69. package/dist/analyzer/typeEvaluator.js +2443 -2350
  70. package/dist/analyzer/typeEvaluator.js.map +1 -1
  71. package/dist/analyzer/typeEvaluatorTypes.d.ts +13 -9
  72. package/dist/analyzer/typeEvaluatorTypes.js +7 -1
  73. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  74. package/dist/analyzer/typeGuards.js +212 -215
  75. package/dist/analyzer/typeGuards.js.map +1 -1
  76. package/dist/analyzer/typePrinter.js +118 -115
  77. package/dist/analyzer/typePrinter.js.map +1 -1
  78. package/dist/analyzer/typeStubWriter.js +104 -103
  79. package/dist/analyzer/typeStubWriter.js.map +1 -1
  80. package/dist/analyzer/typeUtils.d.ts +30 -15
  81. package/dist/analyzer/typeUtils.js +534 -436
  82. package/dist/analyzer/typeUtils.js.map +1 -1
  83. package/dist/analyzer/typeVarContext.js +8 -8
  84. package/dist/analyzer/typeVarContext.js.map +1 -1
  85. package/dist/analyzer/typeWalker.js +13 -10
  86. package/dist/analyzer/typeWalker.js.map +1 -1
  87. package/dist/analyzer/typedDicts.js +97 -199
  88. package/dist/analyzer/typedDicts.js.map +1 -1
  89. package/dist/analyzer/types.d.ts +152 -106
  90. package/dist/analyzer/types.js +695 -496
  91. package/dist/analyzer/types.js.map +1 -1
  92. package/dist/commands/dumpFileDebugInfoCommand.js +34 -34
  93. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  94. package/dist/common/fileSystem.d.ts +1 -0
  95. package/dist/common/fileSystem.js.map +1 -1
  96. package/dist/common/fullAccessHost.js +6 -4
  97. package/dist/common/fullAccessHost.js.map +1 -1
  98. package/dist/common/realFileSystem.d.ts +1 -0
  99. package/dist/common/realFileSystem.js +4 -0
  100. package/dist/common/realFileSystem.js.map +1 -1
  101. package/dist/common/textEditTracker.js +14 -14
  102. package/dist/common/textEditTracker.js.map +1 -1
  103. package/dist/languageService/autoImporter.js +10 -10
  104. package/dist/languageService/autoImporter.js.map +1 -1
  105. package/dist/languageService/callHierarchyProvider.js +23 -23
  106. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  107. package/dist/languageService/completionProvider.js +153 -151
  108. package/dist/languageService/completionProvider.js.map +1 -1
  109. package/dist/languageService/definitionProvider.d.ts +1 -1
  110. package/dist/languageService/definitionProvider.js +3 -1
  111. package/dist/languageService/definitionProvider.js.map +1 -1
  112. package/dist/languageService/documentSymbolCollector.js +19 -19
  113. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  114. package/dist/languageService/hoverProvider.js +36 -27
  115. package/dist/languageService/hoverProvider.js.map +1 -1
  116. package/dist/languageService/importSorter.js +8 -8
  117. package/dist/languageService/importSorter.js.map +1 -1
  118. package/dist/languageService/referencesProvider.d.ts +10 -4
  119. package/dist/languageService/referencesProvider.js +30 -18
  120. package/dist/languageService/referencesProvider.js.map +1 -1
  121. package/dist/languageService/renameProvider.js +21 -4
  122. package/dist/languageService/renameProvider.js.map +1 -1
  123. package/dist/languageService/signatureHelpProvider.d.ts +1 -1
  124. package/dist/languageService/signatureHelpProvider.js +6 -6
  125. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  126. package/dist/languageService/symbolIndexer.js +3 -3
  127. package/dist/languageService/symbolIndexer.js.map +1 -1
  128. package/dist/languageService/tooltipUtils.js +13 -13
  129. package/dist/languageService/tooltipUtils.js.map +1 -1
  130. package/dist/localization/localize.d.ts +4 -3
  131. package/dist/localization/localize.js +2 -1
  132. package/dist/localization/localize.js.map +1 -1
  133. package/dist/localization/package.nls.cs.json +0 -1
  134. package/dist/localization/package.nls.de.json +0 -1
  135. package/dist/localization/package.nls.en-us.json +2 -1
  136. package/dist/localization/package.nls.es.json +0 -1
  137. package/dist/localization/package.nls.fr.json +0 -1
  138. package/dist/localization/package.nls.it.json +0 -1
  139. package/dist/localization/package.nls.ja.json +0 -1
  140. package/dist/localization/package.nls.ko.json +0 -1
  141. package/dist/localization/package.nls.pl.json +0 -1
  142. package/dist/localization/package.nls.pt-br.json +0 -1
  143. package/dist/localization/package.nls.qps-ploc.json +0 -1
  144. package/dist/localization/package.nls.ru.json +0 -1
  145. package/dist/localization/package.nls.tr.json +0 -1
  146. package/dist/localization/package.nls.zh-cn.json +0 -1
  147. package/dist/localization/package.nls.zh-tw.json +0 -1
  148. package/dist/parser/parseNodes.d.ts +471 -402
  149. package/dist/parser/parseNodes.js +629 -356
  150. package/dist/parser/parseNodes.js.map +1 -1
  151. package/dist/parser/parser.d.ts +1 -0
  152. package/dist/parser/parser.js +345 -300
  153. package/dist/parser/parser.js.map +1 -1
  154. package/dist/tests/classDeclaration.test.js +14 -14
  155. package/dist/tests/classDeclaration.test.js.map +1 -1
  156. package/dist/tests/fourslash/rename.args.fourslash.d.ts +1 -0
  157. package/dist/tests/fourslash/rename.args.fourslash.js +71 -0
  158. package/dist/tests/fourslash/rename.args.fourslash.js.map +1 -0
  159. package/dist/tests/harness/vfs/filesystem.d.ts +3 -2
  160. package/dist/tests/harness/vfs/filesystem.js +6 -2
  161. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  162. package/dist/tests/importResolver.test.js +4 -3
  163. package/dist/tests/importResolver.test.js.map +1 -1
  164. package/dist/tests/parseTreeUtils.test.js +5 -5
  165. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  166. package/dist/tests/parser.test.js +8 -8
  167. package/dist/tests/parser.test.js.map +1 -1
  168. package/dist/tests/sourceMapperUtils.test.js +7 -7
  169. package/dist/tests/sourceMapperUtils.test.js.map +1 -1
  170. package/dist/tests/typeEvaluator1.test.js +17 -0
  171. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  172. package/dist/tests/typeEvaluator2.test.js +4 -0
  173. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  174. package/dist/tests/typeEvaluator3.test.js +8 -3
  175. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  176. package/dist/tests/typeEvaluator4.test.js +10 -6
  177. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  178. package/dist/tests/typeEvaluator6.test.js +6 -2
  179. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  180. package/dist/tests/typeEvaluator7.test.js +7 -3
  181. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  182. package/dist/tests/typePrinter.test.js +14 -39
  183. package/dist/tests/typePrinter.test.js.map +1 -1
  184. package/package.json +1 -1
@@ -56,34 +56,24 @@ function synthesizeDataClassMethods(evaluator, node, classType, isNamedTuple, sk
56
56
  (0, debug_1.assert)(types_1.ClassType.isDataClass(classType) || isNamedTuple);
57
57
  const classTypeVar = (0, typeUtils_1.synthesizeTypeVarForSelfCls)(classType, /* isClsParam */ true);
58
58
  const newType = types_1.FunctionType.createSynthesizedInstance('__new__', 1 /* FunctionTypeFlags.ConstructorMethod */);
59
- newType.details.constructorTypeVarScopeId = (0, typeUtils_1.getTypeVarScopeId)(classType);
59
+ newType.priv.constructorTypeVarScopeId = (0, typeUtils_1.getTypeVarScopeId)(classType);
60
60
  const initType = types_1.FunctionType.createSynthesizedInstance('__init__');
61
- initType.details.constructorTypeVarScopeId = (0, typeUtils_1.getTypeVarScopeId)(classType);
61
+ initType.priv.constructorTypeVarScopeId = (0, typeUtils_1.getTypeVarScopeId)(classType);
62
62
  // Generate both a __new__ and an __init__ method. The parameters of the
63
63
  // __new__ method are based on field definitions for NamedTuple classes,
64
64
  // and the parameters of the __init__ method are based on field definitions
65
65
  // in other cases.
66
- types_1.FunctionType.addParameter(newType, {
67
- category: 0 /* ParameterCategory.Simple */,
68
- name: 'cls',
69
- type: classTypeVar,
70
- hasDeclaredType: true,
71
- });
66
+ types_1.FunctionType.addParameter(newType, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, classTypeVar, types_1.FunctionParamFlags.TypeDeclared, 'cls'));
72
67
  if (!isNamedTuple) {
73
68
  types_1.FunctionType.addDefaultParameters(newType);
74
69
  }
75
- newType.details.declaredReturnType = (0, typeUtils_1.convertToInstance)(classTypeVar);
76
- const selfParam = {
77
- category: 0 /* ParameterCategory.Simple */,
78
- name: 'self',
79
- type: (0, typeUtils_1.synthesizeTypeVarForSelfCls)(classType, /* isClsParam */ false),
80
- hasDeclaredType: true,
81
- };
70
+ newType.shared.declaredReturnType = (0, typeUtils_1.convertToInstance)(classTypeVar);
71
+ const selfParam = types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, (0, typeUtils_1.synthesizeTypeVarForSelfCls)(classType, /* isClsParam */ false), types_1.FunctionParamFlags.TypeDeclared, 'self');
82
72
  types_1.FunctionType.addParameter(initType, selfParam);
83
73
  if (isNamedTuple) {
84
74
  types_1.FunctionType.addDefaultParameters(initType);
85
75
  }
86
- initType.details.declaredReturnType = evaluator.getNoneType();
76
+ initType.shared.declaredReturnType = evaluator.getNoneType();
87
77
  // Maintain a list of all dataclass entries (including
88
78
  // those from inherited classes) plus a list of only those
89
79
  // entries added by this class.
@@ -144,89 +134,81 @@ function synthesizeDataClassMethods(evaluator, node, classType, isNamedTuple, sk
144
134
  let variableTypeEvaluator;
145
135
  let hasDefaultValue = false;
146
136
  let isKeywordOnly = types_1.ClassType.isDataClassKeywordOnly(classType) || sawKeywordOnlySeparator;
147
- let defaultValueExpression;
148
137
  let includeInInit = true;
149
138
  let converter;
150
139
  if (statement.nodeType === 3 /* ParseNodeType.Assignment */) {
151
- if (statement.leftExpression.nodeType === 54 /* ParseNodeType.TypeAnnotation */ &&
152
- statement.leftExpression.valueExpression.nodeType === 38 /* ParseNodeType.Name */) {
153
- variableNameNode = statement.leftExpression.valueExpression;
140
+ if (statement.d.leftExpr.nodeType === 54 /* ParseNodeType.TypeAnnotation */ &&
141
+ statement.d.leftExpr.d.valueExpr.nodeType === 38 /* ParseNodeType.Name */) {
142
+ variableNameNode = statement.d.leftExpr.d.valueExpr;
154
143
  const assignmentStatement = statement;
155
- variableTypeEvaluator = () => evaluator.getTypeOfAnnotation(assignmentStatement.leftExpression.typeAnnotation, {
144
+ variableTypeEvaluator = () => evaluator.getTypeOfAnnotation(assignmentStatement.d.leftExpr.d.annotation, {
156
145
  isVariableAnnotation: true,
157
146
  allowFinal: true,
158
147
  allowClassVar: true,
159
148
  });
160
149
  }
161
150
  hasDefaultValue = true;
162
- defaultValueExpression = statement.rightExpression;
163
151
  // If the RHS of the assignment is assigning a field instance where the
164
152
  // "init" parameter is set to false, do not include it in the init method.
165
- if (statement.rightExpression.nodeType === 9 /* ParseNodeType.Call */) {
166
- const callTypeResult = evaluator.getTypeOfExpression(statement.rightExpression.leftExpression, 2 /* EvalFlags.CallBaseDefaults */);
153
+ if (statement.d.rightExpr.nodeType === 9 /* ParseNodeType.Call */) {
154
+ const callTypeResult = evaluator.getTypeOfExpression(statement.d.rightExpr.d.leftExpr, 2 /* EvalFlags.CallBaseDefaults */);
167
155
  const callType = callTypeResult.type;
168
156
  if (!isNamedTuple &&
169
- isDataclassFieldConstructor(callType, ((_b = classType.details.dataClassBehaviors) === null || _b === void 0 ? void 0 : _b.fieldDescriptorNames) || [])) {
170
- const initArg = statement.rightExpression.arguments.find((arg) => { var _a; return ((_a = arg.name) === null || _a === void 0 ? void 0 : _a.value) === 'init'; });
171
- if (initArg && initArg.valueExpression) {
157
+ isDataclassFieldConstructor(callType, ((_b = classType.shared.dataClassBehaviors) === null || _b === void 0 ? void 0 : _b.fieldDescriptorNames) || [])) {
158
+ const initArg = statement.d.rightExpr.d.args.find((arg) => { var _a; return ((_a = arg.d.name) === null || _a === void 0 ? void 0 : _a.d.value) === 'init'; });
159
+ if (initArg && initArg.d.valueExpr) {
172
160
  const fileInfo = AnalyzerNodeInfo.getFileInfo(node);
173
161
  includeInInit =
174
- (_c = (0, staticExpressions_1.evaluateStaticBoolExpression)(initArg.valueExpression, fileInfo.executionEnvironment, fileInfo.definedConstants)) !== null && _c !== void 0 ? _c : includeInInit;
162
+ (_c = (0, staticExpressions_1.evaluateStaticBoolExpression)(initArg.d.valueExpr, fileInfo.executionEnvironment, fileInfo.definedConstants)) !== null && _c !== void 0 ? _c : includeInInit;
175
163
  }
176
164
  else {
177
165
  includeInInit =
178
- (_d = getDefaultArgValueForFieldSpecifier(evaluator, statement.rightExpression, callTypeResult, 'init')) !== null && _d !== void 0 ? _d : includeInInit;
166
+ (_d = getDefaultArgValueForFieldSpecifier(evaluator, statement.d.rightExpr, callTypeResult, 'init')) !== null && _d !== void 0 ? _d : includeInInit;
179
167
  }
180
- const kwOnlyArg = statement.rightExpression.arguments.find((arg) => { var _a; return ((_a = arg.name) === null || _a === void 0 ? void 0 : _a.value) === 'kw_only'; });
181
- if (kwOnlyArg && kwOnlyArg.valueExpression) {
168
+ const kwOnlyArg = statement.d.rightExpr.d.args.find((arg) => { var _a; return ((_a = arg.d.name) === null || _a === void 0 ? void 0 : _a.d.value) === 'kw_only'; });
169
+ if (kwOnlyArg && kwOnlyArg.d.valueExpr) {
182
170
  const fileInfo = AnalyzerNodeInfo.getFileInfo(node);
183
171
  isKeywordOnly =
184
- (_e = (0, staticExpressions_1.evaluateStaticBoolExpression)(kwOnlyArg.valueExpression, fileInfo.executionEnvironment, fileInfo.definedConstants)) !== null && _e !== void 0 ? _e : isKeywordOnly;
172
+ (_e = (0, staticExpressions_1.evaluateStaticBoolExpression)(kwOnlyArg.d.valueExpr, fileInfo.executionEnvironment, fileInfo.definedConstants)) !== null && _e !== void 0 ? _e : isKeywordOnly;
185
173
  }
186
174
  else {
187
175
  isKeywordOnly =
188
- (_f = getDefaultArgValueForFieldSpecifier(evaluator, statement.rightExpression, callTypeResult, 'kw_only')) !== null && _f !== void 0 ? _f : isKeywordOnly;
176
+ (_f = getDefaultArgValueForFieldSpecifier(evaluator, statement.d.rightExpr, callTypeResult, 'kw_only')) !== null && _f !== void 0 ? _f : isKeywordOnly;
189
177
  }
190
- const defaultArg = statement.rightExpression.arguments.find((arg) => {
178
+ const defaultArg = statement.d.rightExpr.d.args.find((arg) => {
191
179
  var _a, _b, _c;
192
- return ((_a = arg.name) === null || _a === void 0 ? void 0 : _a.value) === 'default' ||
193
- ((_b = arg.name) === null || _b === void 0 ? void 0 : _b.value) === 'default_factory' ||
194
- ((_c = arg.name) === null || _c === void 0 ? void 0 : _c.value) === 'factory';
180
+ return ((_a = arg.d.name) === null || _a === void 0 ? void 0 : _a.d.value) === 'default' ||
181
+ ((_b = arg.d.name) === null || _b === void 0 ? void 0 : _b.d.value) === 'default_factory' ||
182
+ ((_c = arg.d.name) === null || _c === void 0 ? void 0 : _c.d.value) === 'factory';
195
183
  });
196
184
  hasDefaultValue = !!defaultArg;
197
- if (defaultArg === null || defaultArg === void 0 ? void 0 : defaultArg.valueExpression) {
198
- defaultValueExpression = defaultArg.valueExpression;
199
- }
200
- const aliasArg = statement.rightExpression.arguments.find((arg) => { var _a; return ((_a = arg.name) === null || _a === void 0 ? void 0 : _a.value) === 'alias'; });
185
+ const aliasArg = statement.d.rightExpr.d.args.find((arg) => { var _a; return ((_a = arg.d.name) === null || _a === void 0 ? void 0 : _a.d.value) === 'alias'; });
201
186
  if (aliasArg) {
202
- const valueType = evaluator.getTypeOfExpression(aliasArg.valueExpression).type;
187
+ const valueType = evaluator.getTypeOfExpression(aliasArg.d.valueExpr).type;
203
188
  if ((0, types_1.isClassInstance)(valueType) &&
204
189
  types_1.ClassType.isBuiltIn(valueType, 'str') &&
205
190
  (0, typeUtils_1.isLiteralType)(valueType)) {
206
- aliasName = valueType.literalValue;
191
+ aliasName = valueType.priv.literalValue;
207
192
  }
208
193
  }
209
- const converterArg = statement.rightExpression.arguments.find((arg) => { var _a; return ((_a = arg.name) === null || _a === void 0 ? void 0 : _a.value) === 'converter'; });
210
- if (converterArg && converterArg.valueExpression) {
211
- // Converter support is dependent on PEP 712, which has not yet been approved.
212
- if (AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.enableExperimentalFeatures) {
213
- converter = converterArg;
214
- }
194
+ const converterArg = statement.d.rightExpr.d.args.find((arg) => { var _a; return ((_a = arg.d.name) === null || _a === void 0 ? void 0 : _a.d.value) === 'converter'; });
195
+ if (converterArg && converterArg.d.valueExpr) {
196
+ converter = converterArg;
215
197
  }
216
198
  }
217
199
  }
218
200
  }
219
201
  else if (statement.nodeType === 54 /* ParseNodeType.TypeAnnotation */) {
220
- if (statement.valueExpression.nodeType === 38 /* ParseNodeType.Name */) {
221
- variableNameNode = statement.valueExpression;
202
+ if (statement.d.valueExpr.nodeType === 38 /* ParseNodeType.Name */) {
203
+ variableNameNode = statement.d.valueExpr;
222
204
  const annotationStatement = statement;
223
- variableTypeEvaluator = () => evaluator.getTypeOfAnnotation(annotationStatement.typeAnnotation, {
205
+ variableTypeEvaluator = () => evaluator.getTypeOfAnnotation(annotationStatement.d.annotation, {
224
206
  isVariableAnnotation: true,
225
207
  allowFinal: true,
226
208
  allowClassVar: true,
227
209
  });
228
210
  // Is this a KW_ONLY separator introduced in Python 3.10?
229
- if (!isNamedTuple && statement.valueExpression.value === '_') {
211
+ if (!isNamedTuple && statement.d.valueExpr.d.value === '_') {
230
212
  const annotatedType = variableTypeEvaluator();
231
213
  if ((0, types_1.isClassInstance)(annotatedType) && types_1.ClassType.isBuiltIn(annotatedType, 'KW_ONLY')) {
232
214
  sawKeywordOnlySeparator = true;
@@ -237,7 +219,7 @@ function synthesizeDataClassMethods(evaluator, node, classType, isNamedTuple, sk
237
219
  }
238
220
  }
239
221
  if (variableNameNode && variableTypeEvaluator) {
240
- const variableName = variableNameNode.value;
222
+ const variableName = variableNameNode.d.value;
241
223
  // Don't include class vars. PEP 557 indicates that they shouldn't
242
224
  // be considered data class entries.
243
225
  const variableSymbol = types_1.ClassType.getSymbolTable(classType).get(variableName);
@@ -256,7 +238,6 @@ function synthesizeDataClassMethods(evaluator, node, classType, isNamedTuple, sk
256
238
  alias: aliasName,
257
239
  isKeywordOnly: false,
258
240
  hasDefault: hasDefaultValue,
259
- defaultValueExpression,
260
241
  includeInInit,
261
242
  nameNode: variableNameNode,
262
243
  type: types_1.UnknownType.create(),
@@ -275,7 +256,6 @@ function synthesizeDataClassMethods(evaluator, node, classType, isNamedTuple, sk
275
256
  alias: aliasName,
276
257
  isKeywordOnly,
277
258
  hasDefault: hasDefaultValue,
278
- defaultValueExpression,
279
259
  includeInInit,
280
260
  nameNode: variableNameNode,
281
261
  type: types_1.UnknownType.create(),
@@ -299,7 +279,6 @@ function synthesizeDataClassMethods(evaluator, node, classType, isNamedTuple, sk
299
279
  // causes overridden variables to "inherit" default values from parent classes.
300
280
  if (!dataClassEntry.hasDefault && oldEntry.hasDefault && oldEntry.includeInInit) {
301
281
  dataClassEntry.hasDefault = true;
302
- dataClassEntry.defaultValueExpression = oldEntry.defaultValueExpression;
303
282
  hasDefaultValue = true;
304
283
  // Warn the user of this case because it can result in type errors if the
305
284
  // default value is incompatible with the new type.
@@ -340,16 +319,16 @@ function synthesizeDataClassMethods(evaluator, node, classType, isNamedTuple, sk
340
319
  }
341
320
  // If the RHS of the assignment is assigning a field instance where the
342
321
  // "init" parameter is set to false, do not include it in the init method.
343
- if (statement.rightExpression.nodeType === 9 /* ParseNodeType.Call */) {
344
- const callType = evaluator.getTypeOfExpression(statement.rightExpression.leftExpression, 2 /* EvalFlags.CallBaseDefaults */).type;
345
- if (isDataclassFieldConstructor(callType, ((_g = classType.details.dataClassBehaviors) === null || _g === void 0 ? void 0 : _g.fieldDescriptorNames) || [])) {
346
- evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassFieldWithoutAnnotation(), statement.rightExpression);
322
+ if (statement.d.rightExpr.nodeType === 9 /* ParseNodeType.Call */) {
323
+ const callType = evaluator.getTypeOfExpression(statement.d.rightExpr.d.leftExpr, 2 /* EvalFlags.CallBaseDefaults */).type;
324
+ if (isDataclassFieldConstructor(callType, ((_g = classType.shared.dataClassBehaviors) === null || _g === void 0 ? void 0 : _g.fieldDescriptorNames) || [])) {
325
+ evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassFieldWithoutAnnotation(), statement.d.rightExpr);
347
326
  }
348
327
  }
349
328
  }
350
329
  });
351
330
  if (!isNamedTuple) {
352
- classType.details.dataClassEntries = localDataClassEntries;
331
+ classType.shared.dataClassEntries = localDataClassEntries;
353
332
  }
354
333
  // Now that the dataClassEntries field has been set with a complete list
355
334
  // of local data class entries for this class, perform deferred type
@@ -382,17 +361,10 @@ function synthesizeDataClassMethods(evaluator, node, classType, isNamedTuple, sk
382
361
  symbolTable.set(entry.name, getDescriptorForConverterField(evaluator, node, entry.converter, entry.name, fieldType, effectiveType));
383
362
  }
384
363
  const effectiveName = entry.alias || entry.name;
385
- if (!entry.alias && entry.nameNode && (0, symbolNameUtils_1.isPrivateName)(entry.nameNode.value)) {
364
+ if (!entry.alias && entry.nameNode && (0, symbolNameUtils_1.isPrivateName)(entry.nameNode.d.value)) {
386
365
  evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassFieldWithPrivateName(), entry.nameNode);
387
366
  }
388
- const functionParam = {
389
- category: 0 /* ParameterCategory.Simple */,
390
- name: effectiveName,
391
- hasDefault: entry.hasDefault,
392
- defaultValueExpression: entry.defaultValueExpression,
393
- type: effectiveType,
394
- hasDeclaredType: true,
395
- };
367
+ const functionParam = types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, effectiveType, types_1.FunctionParamFlags.TypeDeclared, effectiveName, entry.hasDefault ? entry.type : undefined);
396
368
  if (entry.isKeywordOnly) {
397
369
  keywordOnlyParams.push(functionParam);
398
370
  }
@@ -435,13 +407,8 @@ function synthesizeDataClassMethods(evaluator, node, classType, isNamedTuple, sk
435
407
  const synthesizeComparisonMethod = (operator, paramType) => {
436
408
  const operatorMethod = types_1.FunctionType.createSynthesizedInstance(operator);
437
409
  types_1.FunctionType.addParameter(operatorMethod, selfParam);
438
- types_1.FunctionType.addParameter(operatorMethod, {
439
- category: 0 /* ParameterCategory.Simple */,
440
- name: 'other',
441
- type: paramType,
442
- hasDeclaredType: true,
443
- });
444
- operatorMethod.details.declaredReturnType = evaluator.getBuiltInObject(node, 'bool');
410
+ types_1.FunctionType.addParameter(operatorMethod, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, paramType, types_1.FunctionParamFlags.TypeDeclared, 'other'));
411
+ operatorMethod.shared.declaredReturnType = evaluator.getBuiltInObject(node, 'bool');
445
412
  // If a method of this name already exists, don't override it.
446
413
  if (!symbolTable.get(operator)) {
447
414
  symbolTable.set(operator, symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, operatorMethod));
@@ -470,7 +437,7 @@ function synthesizeDataClassMethods(evaluator, node, classType, isNamedTuple, sk
470
437
  if (synthesizeHashFunction) {
471
438
  const hashMethod = types_1.FunctionType.createSynthesizedInstance('__hash__');
472
439
  types_1.FunctionType.addParameter(hashMethod, selfParam);
473
- hashMethod.details.declaredReturnType = evaluator.getBuiltInObject(node, 'int');
440
+ hashMethod.shared.declaredReturnType = evaluator.getBuiltInObject(node, 'int');
474
441
  symbolTable.set('__hash__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */ | 4096 /* SymbolFlags.IgnoredForOverrideChecks */, hashMethod));
475
442
  }
476
443
  else if (synthesizeHashNone && !skipSynthesizeHash) {
@@ -484,8 +451,8 @@ function synthesizeDataClassMethods(evaluator, node, classType, isNamedTuple, sk
484
451
  if (!isNamedTuple) {
485
452
  symbolTable.set('__dataclass_fields__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */ | 128 /* SymbolFlags.ClassVar */, dictType));
486
453
  }
487
- if (types_1.ClassType.isDataClassGenerateSlots(classType) && classType.details.localSlotsNames === undefined) {
488
- classType.details.localSlotsNames = localDataClassEntries.map((entry) => entry.name);
454
+ if (types_1.ClassType.isDataClassGenerateSlots(classType) && classType.shared.localSlotsNames === undefined) {
455
+ classType.shared.localSlotsNames = localDataClassEntries.map((entry) => entry.name);
489
456
  }
490
457
  // Should we synthesize a __slots__ symbol?
491
458
  if (types_1.ClassType.isDataClassGenerateSlots(classType)) {
@@ -516,7 +483,7 @@ function getDefaultArgValueForFieldSpecifier(evaluator, callNode, callTypeResult
516
483
  callTarget = callType;
517
484
  }
518
485
  else if ((0, types_1.isOverloadedFunction)(callType)) {
519
- callTarget = evaluator.getBestOverloadForArguments(callNode, { type: callType, isIncomplete: callTypeResult.isIncomplete }, callNode.arguments);
486
+ callTarget = evaluator.getBestOverloadForArguments(callNode, { type: callType, isIncomplete: callTypeResult.isIncomplete }, callNode.d.args.map((arg) => (0, typeUtils_1.convertArgumentNodeToFunctionArgument)(arg)));
520
487
  }
521
488
  else if ((0, types_1.isInstantiableClass)(callType)) {
522
489
  const initMethodResult = (0, constructors_1.getBoundInitMethod)(evaluator, callNode, callType);
@@ -525,25 +492,24 @@ function getDefaultArgValueForFieldSpecifier(evaluator, callNode, callTypeResult
525
492
  callTarget = initMethodResult.type;
526
493
  }
527
494
  else if ((0, types_1.isOverloadedFunction)(initMethodResult.type)) {
528
- callTarget = evaluator.getBestOverloadForArguments(callNode, { type: initMethodResult.type }, callNode.arguments);
495
+ callTarget = evaluator.getBestOverloadForArguments(callNode, { type: initMethodResult.type }, callNode.d.args.map((arg) => (0, typeUtils_1.convertArgumentNodeToFunctionArgument)(arg)));
529
496
  }
530
497
  }
531
498
  }
532
499
  if (callTarget) {
533
- const initParam = callTarget.details.parameters.find((p) => p.name === paramName);
500
+ const initParam = callTarget.shared.parameters.find((p) => p.name === paramName);
534
501
  if (initParam) {
535
502
  // Is the parameter type a literal bool?
536
- if (initParam.hasDeclaredType &&
503
+ if (types_1.FunctionParam.isTypeDeclared(initParam) &&
537
504
  (0, types_1.isClass)(initParam.type) &&
538
- typeof initParam.type.literalValue === 'boolean') {
539
- return initParam.type.literalValue;
505
+ typeof initParam.type.priv.literalValue === 'boolean') {
506
+ return initParam.type.priv.literalValue;
540
507
  }
541
508
  // Is the default argument value a literal bool?
542
- if (initParam.defaultValueExpression &&
543
- initParam.defaultType &&
509
+ if (initParam.defaultType &&
544
510
  (0, types_1.isClass)(initParam.defaultType) &&
545
- typeof initParam.defaultType.literalValue === 'boolean') {
546
- return initParam.defaultType.literalValue;
511
+ typeof initParam.defaultType.priv.literalValue === 'boolean') {
512
+ return initParam.defaultType.priv.literalValue;
547
513
  }
548
514
  }
549
515
  }
@@ -553,23 +519,18 @@ function getDefaultArgValueForFieldSpecifier(evaluator, callNode, callTypeResult
553
519
  // fieldType is returned.
554
520
  function getConverterInputType(evaluator, converterNode, fieldType, fieldName) {
555
521
  var _a;
556
- const converterType = getConverterAsFunction(evaluator, evaluator.getTypeOfExpression(converterNode.valueExpression).type);
522
+ const converterType = getConverterAsFunction(evaluator, evaluator.getTypeOfExpression(converterNode.d.valueExpr).type);
557
523
  if (!converterType) {
558
524
  return fieldType;
559
525
  }
560
526
  // Create synthesized function of the form Callable[[T], fieldType] which
561
527
  // will be used to check compatibility of the provided converter.
562
528
  const typeVar = types_1.TypeVarType.createInstance('__converterInput');
563
- typeVar.scopeId = (0, parseTreeUtils_1.getScopeIdForNode)(converterNode);
529
+ typeVar.priv.scopeId = (0, parseTreeUtils_1.getScopeIdForNode)(converterNode);
564
530
  const targetFunction = types_1.FunctionType.createSynthesizedInstance('');
565
- targetFunction.details.typeVarScopeId = typeVar.scopeId;
566
- targetFunction.details.declaredReturnType = fieldType;
567
- types_1.FunctionType.addParameter(targetFunction, {
568
- category: 0 /* ParameterCategory.Simple */,
569
- name: '__input',
570
- type: typeVar,
571
- hasDeclaredType: true,
572
- });
531
+ targetFunction.shared.typeVarScopeId = typeVar.priv.scopeId;
532
+ targetFunction.shared.declaredReturnType = fieldType;
533
+ types_1.FunctionType.addParameter(targetFunction, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, typeVar, types_1.FunctionParamFlags.TypeDeclared | types_1.FunctionParamFlags.NameSynthesized, '__input'));
573
534
  types_1.FunctionType.addPositionOnlyParameterSeparator(targetFunction);
574
535
  if ((0, types_1.isFunction)(converterType) || (0, types_1.isOverloadedFunction)(converterType)) {
575
536
  const acceptedTypes = [];
@@ -581,7 +542,7 @@ function getConverterInputType(evaluator, converterNode, fieldType, fieldName) {
581
542
  /* diag */ undefined, returnTypeVarContext)) {
582
543
  signature = (0, typeUtils_1.applySolvedTypeVars)(signature, returnTypeVarContext);
583
544
  }
584
- const inputTypeVarContext = new typeVarContext_1.TypeVarContext(typeVar.scopeId);
545
+ const inputTypeVarContext = new typeVarContext_1.TypeVarContext(typeVar.priv.scopeId);
585
546
  if (evaluator.assignType(targetFunction, signature, diagAddendum, inputTypeVarContext)) {
586
547
  const overloadSolution = (0, typeUtils_1.applySolvedTypeVars)(typeVar, inputTypeVarContext, {
587
548
  unknownIfNotFound: true,
@@ -602,7 +563,7 @@ function getConverterInputType(evaluator, converterNode, fieldType, fieldName) {
602
563
  }
603
564
  else {
604
565
  evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassConverterOverloads().format({
605
- funcName: converterType.overloads[0].details.name || '<anonymous function>',
566
+ funcName: converterType.priv.overloads[0].shared.name || '<anonymous function>',
606
567
  fieldType: evaluator.printType(fieldType),
607
568
  fieldName: fieldName,
608
569
  }) + diagAddendum.getString(), converterNode);
@@ -624,7 +585,7 @@ function getConverterAsFunction(evaluator, converterType) {
624
585
  // choose the first of the two subtypes, which typically corresponds
625
586
  // to the __init__ method (rather than the __new__ method).
626
587
  if ((0, types_1.isUnion)(fromConstructor)) {
627
- fromConstructor = fromConstructor.subtypes[0];
588
+ fromConstructor = fromConstructor.priv.subtypes[0];
628
589
  }
629
590
  if ((0, types_1.isFunction)(fromConstructor) || (0, types_1.isOverloadedFunction)(fromConstructor)) {
630
591
  return fromConstructor;
@@ -644,52 +605,22 @@ function getDescriptorForConverterField(evaluator, dataclassNode, converterNode,
644
605
  const descriptorName = `__converterDescriptor_${fieldName}`;
645
606
  const descriptorClass = types_1.ClassType.createInstantiable(descriptorName, (0, parseTreeUtils_1.getClassFullName)(converterNode, fileInfo.moduleName, descriptorName), fileInfo.moduleName, fileInfo.fileUri, 0 /* ClassTypeFlags.None */, (0, parseTreeUtils_1.getTypeSourceId)(converterNode),
646
607
  /* declaredMetaclass */ undefined, (0, types_1.isInstantiableClass)(typeMetaclass) ? typeMetaclass : types_1.UnknownType.create());
647
- descriptorClass.details.baseClasses.push(evaluator.getBuiltInType(dataclassNode, 'object'));
608
+ descriptorClass.shared.baseClasses.push(evaluator.getBuiltInType(dataclassNode, 'object'));
648
609
  (0, typeUtils_1.computeMroLinearization)(descriptorClass);
649
610
  const fields = types_1.ClassType.getSymbolTable(descriptorClass);
650
611
  const selfType = (0, typeUtils_1.synthesizeTypeVarForSelfCls)(descriptorClass, /* isClsParam */ false);
651
612
  const setFunction = types_1.FunctionType.createSynthesizedInstance('__set__');
652
- types_1.FunctionType.addParameter(setFunction, {
653
- category: 0 /* ParameterCategory.Simple */,
654
- name: 'self',
655
- type: selfType,
656
- hasDeclaredType: true,
657
- });
658
- types_1.FunctionType.addParameter(setFunction, {
659
- category: 0 /* ParameterCategory.Simple */,
660
- name: 'obj',
661
- type: types_1.AnyType.create(),
662
- hasDeclaredType: true,
663
- });
664
- types_1.FunctionType.addParameter(setFunction, {
665
- category: 0 /* ParameterCategory.Simple */,
666
- name: 'value',
667
- type: setType,
668
- hasDeclaredType: true,
669
- });
670
- setFunction.details.declaredReturnType = evaluator.getNoneType();
613
+ types_1.FunctionType.addParameter(setFunction, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, selfType, types_1.FunctionParamFlags.TypeDeclared, 'self'));
614
+ types_1.FunctionType.addParameter(setFunction, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, types_1.AnyType.create(), types_1.FunctionParamFlags.TypeDeclared, 'obj'));
615
+ types_1.FunctionType.addParameter(setFunction, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, setType, types_1.FunctionParamFlags.TypeDeclared, 'value'));
616
+ setFunction.shared.declaredReturnType = evaluator.getNoneType();
671
617
  const setSymbol = symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, setFunction);
672
618
  fields.set('__set__', setSymbol);
673
619
  const getFunction = types_1.FunctionType.createSynthesizedInstance('__get__');
674
- types_1.FunctionType.addParameter(getFunction, {
675
- category: 0 /* ParameterCategory.Simple */,
676
- name: 'self',
677
- type: selfType,
678
- hasDeclaredType: true,
679
- });
680
- types_1.FunctionType.addParameter(getFunction, {
681
- category: 0 /* ParameterCategory.Simple */,
682
- name: 'obj',
683
- type: types_1.AnyType.create(),
684
- hasDeclaredType: true,
685
- });
686
- types_1.FunctionType.addParameter(getFunction, {
687
- category: 0 /* ParameterCategory.Simple */,
688
- name: 'objtype',
689
- type: types_1.AnyType.create(),
690
- hasDeclaredType: true,
691
- });
692
- getFunction.details.declaredReturnType = getType;
620
+ types_1.FunctionType.addParameter(getFunction, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, selfType, types_1.FunctionParamFlags.TypeDeclared, 'self'));
621
+ types_1.FunctionType.addParameter(getFunction, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, types_1.AnyType.create(), types_1.FunctionParamFlags.TypeDeclared, 'obj'));
622
+ types_1.FunctionType.addParameter(getFunction, types_1.FunctionParam.create(0 /* ParameterCategory.Simple */, types_1.AnyType.create(), types_1.FunctionParamFlags.TypeDeclared, 'objtype'));
623
+ getFunction.shared.declaredReturnType = getType;
693
624
  const getSymbol = symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, getFunction);
694
625
  fields.set('__get__', getSymbol);
695
626
  return symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, types_1.ClassType.cloneAsInstance(descriptorClass));
@@ -754,13 +685,13 @@ exports.addInheritedDataClassEntries = addInheritedDataClassEntries;
754
685
  function isDataclassFieldConstructor(type, fieldDescriptorNames) {
755
686
  let callName;
756
687
  if ((0, types_1.isFunction)(type)) {
757
- callName = type.details.fullName;
688
+ callName = type.shared.fullName;
758
689
  }
759
690
  else if ((0, types_1.isOverloadedFunction)(type)) {
760
- callName = type.overloads[0].details.fullName;
691
+ callName = type.priv.overloads[0].shared.fullName;
761
692
  }
762
693
  else if ((0, types_1.isInstantiableClass)(type)) {
763
- callName = type.details.fullName;
694
+ callName = type.shared.fullName;
764
695
  }
765
696
  if (!callName) {
766
697
  return false;
@@ -781,43 +712,43 @@ function validateDataClassTransformDecorator(evaluator, node) {
781
712
  };
782
713
  const fileInfo = AnalyzerNodeInfo.getFileInfo(node);
783
714
  // Parse the arguments to the call.
784
- node.arguments.forEach((arg) => {
785
- if (!arg.name || arg.argumentCategory !== 0 /* ArgumentCategory.Simple */) {
715
+ node.d.args.forEach((arg) => {
716
+ if (!arg.d.name || arg.d.argCategory !== 0 /* ArgumentCategory.Simple */) {
786
717
  evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportCallIssue, localize_1.LocMessage.dataClassTransformPositionalParam(), arg);
787
718
  return;
788
719
  }
789
- switch (arg.name.value) {
720
+ switch (arg.d.name.d.value) {
790
721
  case 'kw_only_default': {
791
- const value = (0, staticExpressions_1.evaluateStaticBoolExpression)(arg.valueExpression, fileInfo.executionEnvironment, fileInfo.definedConstants);
722
+ const value = (0, staticExpressions_1.evaluateStaticBoolExpression)(arg.d.valueExpr, fileInfo.executionEnvironment, fileInfo.definedConstants);
792
723
  if (value === undefined) {
793
- evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassTransformExpectedBoolLiteral(), arg.valueExpression);
724
+ evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassTransformExpectedBoolLiteral(), arg.d.valueExpr);
794
725
  return;
795
726
  }
796
727
  behaviors.keywordOnly = value;
797
728
  break;
798
729
  }
799
730
  case 'eq_default': {
800
- const value = (0, staticExpressions_1.evaluateStaticBoolExpression)(arg.valueExpression, fileInfo.executionEnvironment, fileInfo.definedConstants);
731
+ const value = (0, staticExpressions_1.evaluateStaticBoolExpression)(arg.d.valueExpr, fileInfo.executionEnvironment, fileInfo.definedConstants);
801
732
  if (value === undefined) {
802
- evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassTransformExpectedBoolLiteral(), arg.valueExpression);
733
+ evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassTransformExpectedBoolLiteral(), arg.d.valueExpr);
803
734
  return;
804
735
  }
805
736
  behaviors.skipGenerateEq = !value;
806
737
  break;
807
738
  }
808
739
  case 'order_default': {
809
- const value = (0, staticExpressions_1.evaluateStaticBoolExpression)(arg.valueExpression, fileInfo.executionEnvironment, fileInfo.definedConstants);
740
+ const value = (0, staticExpressions_1.evaluateStaticBoolExpression)(arg.d.valueExpr, fileInfo.executionEnvironment, fileInfo.definedConstants);
810
741
  if (value === undefined) {
811
- evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassTransformExpectedBoolLiteral(), arg.valueExpression);
742
+ evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassTransformExpectedBoolLiteral(), arg.d.valueExpr);
812
743
  return;
813
744
  }
814
745
  behaviors.generateOrder = value;
815
746
  break;
816
747
  }
817
748
  case 'frozen_default': {
818
- const value = (0, staticExpressions_1.evaluateStaticBoolExpression)(arg.valueExpression, fileInfo.executionEnvironment, fileInfo.definedConstants);
749
+ const value = (0, staticExpressions_1.evaluateStaticBoolExpression)(arg.d.valueExpr, fileInfo.executionEnvironment, fileInfo.definedConstants);
819
750
  if (value === undefined) {
820
- evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassTransformExpectedBoolLiteral(), arg.valueExpression);
751
+ evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassTransformExpectedBoolLiteral(), arg.d.valueExpr);
821
752
  return;
822
753
  }
823
754
  behaviors.frozen = value;
@@ -833,30 +764,30 @@ function validateDataClassTransformDecorator(evaluator, node) {
833
764
  // form that supported this older parameter name.
834
765
  case 'field_descriptors':
835
766
  case 'field_specifiers': {
836
- const valueType = evaluator.getTypeOfExpression(arg.valueExpression).type;
767
+ const valueType = evaluator.getTypeOfExpression(arg.d.valueExpr).type;
837
768
  if (!(0, types_1.isClassInstance)(valueType) ||
838
769
  !types_1.ClassType.isBuiltIn(valueType, 'tuple') ||
839
- !valueType.tupleTypeArguments ||
840
- valueType.tupleTypeArguments.some((entry) => !(0, types_1.isInstantiableClass)(entry.type) &&
770
+ !valueType.priv.tupleTypeArguments ||
771
+ valueType.priv.tupleTypeArguments.some((entry) => !(0, types_1.isInstantiableClass)(entry.type) &&
841
772
  !(0, types_1.isFunction)(entry.type) &&
842
773
  !(0, types_1.isOverloadedFunction)(entry.type))) {
843
774
  evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassTransformFieldSpecifier().format({
844
775
  type: evaluator.printType(valueType),
845
- }), arg.valueExpression);
776
+ }), arg.d.valueExpr);
846
777
  return;
847
778
  }
848
- valueType.tupleTypeArguments.forEach((arg) => {
779
+ valueType.priv.tupleTypeArguments.forEach((arg) => {
849
780
  if ((0, types_1.isInstantiableClass)(arg.type) || (0, types_1.isFunction)(arg.type)) {
850
- behaviors.fieldDescriptorNames.push(arg.type.details.fullName);
781
+ behaviors.fieldDescriptorNames.push(arg.type.shared.fullName);
851
782
  }
852
783
  else if ((0, types_1.isOverloadedFunction)(arg.type)) {
853
- behaviors.fieldDescriptorNames.push(arg.type.overloads[0].details.fullName);
784
+ behaviors.fieldDescriptorNames.push(arg.type.priv.overloads[0].shared.fullName);
854
785
  }
855
786
  });
856
787
  break;
857
788
  }
858
789
  default:
859
- evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassTransformUnknownArgument().format({ name: arg.name.value }), arg.valueExpression);
790
+ evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassTransformUnknownArgument().format({ name: arg.d.name.d.value }), arg.d.valueExpr);
860
791
  break;
861
792
  }
862
793
  });
@@ -874,16 +805,16 @@ function getDataclassDecoratorBehaviors(type) {
874
805
  // dataclass_transform decorator. If more than one have such a decorator,
875
806
  // only the first one will be honored, as per PEP 681.
876
807
  functionType =
877
- (_a = type.overloads.find((overload) => !!overload.details.decoratorDataClassBehaviors)) !== null && _a !== void 0 ? _a : type.overloads[0];
808
+ (_a = type.priv.overloads.find((overload) => !!overload.shared.decoratorDataClassBehaviors)) !== null && _a !== void 0 ? _a : type.priv.overloads[0];
878
809
  }
879
810
  if (!functionType) {
880
811
  return undefined;
881
812
  }
882
- if (functionType.details.decoratorDataClassBehaviors) {
883
- return functionType.details.decoratorDataClassBehaviors;
813
+ if (functionType.shared.decoratorDataClassBehaviors) {
814
+ return functionType.shared.decoratorDataClassBehaviors;
884
815
  }
885
816
  // Is this the built-in dataclass? If so, return the default behaviors.
886
- if (functionType.details.fullName === 'dataclasses.dataclass') {
817
+ if (functionType.shared.fullName === 'dataclasses.dataclass') {
887
818
  return {
888
819
  fieldDescriptorNames: ['dataclasses.field', 'dataclasses.Field'],
889
820
  };
@@ -914,15 +845,15 @@ function applyDataClassBehaviorOverrideValue(evaluator, errorNode, classType, ar
914
845
  if (argValue !== undefined) {
915
846
  behaviors.frozen = argValue;
916
847
  }
917
- classType.details.baseClasses.forEach((baseClass) => {
848
+ classType.shared.baseClasses.forEach((baseClass) => {
918
849
  if ((0, types_1.isInstantiableClass)(baseClass) && types_1.ClassType.isDataClass(baseClass)) {
919
850
  if (types_1.ClassType.isDataClassFrozen(baseClass)) {
920
851
  hasFrozenBaseClass = true;
921
852
  }
922
- else if (!baseClass.details.classDataClassTransform &&
923
- !(baseClass.details.declaredMetaclass &&
924
- (0, types_1.isInstantiableClass)(baseClass.details.declaredMetaclass) &&
925
- !!baseClass.details.declaredMetaclass.details.classDataClassTransform)) {
853
+ else if (!baseClass.shared.classDataClassTransform &&
854
+ !(baseClass.shared.declaredMetaclass &&
855
+ (0, types_1.isInstantiableClass)(baseClass.shared.declaredMetaclass) &&
856
+ !!baseClass.shared.declaredMetaclass.shared.classDataClassTransform)) {
926
857
  // If this base class is unfrozen and isn't the class that directly
927
858
  // references the metaclass that provides dataclass-like behaviors,
928
859
  // we'll assume we're deriving from an unfrozen dataclass.
@@ -957,7 +888,7 @@ function applyDataClassBehaviorOverrideValue(evaluator, errorNode, classType, ar
957
888
  case 'slots':
958
889
  if (argValue === true) {
959
890
  behaviors.generateSlots = true;
960
- if (classType.details.localSlotsNames) {
891
+ if (classType.shared.localSlotsNames) {
961
892
  evaluator.addDiagnostic(diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.dataClassSlotsOverwrite(), errorNode);
962
893
  }
963
894
  }
@@ -979,11 +910,11 @@ function applyDataClassClassBehaviorOverrides(evaluator, errorNode, classType, a
979
910
  // The "frozen" behavior is not inherited from the parent class.
980
911
  // Instead, it comes from the default.
981
912
  behaviors.frozen = behaviors.frozenDefault;
982
- classType.details.dataClassBehaviors = behaviors;
913
+ classType.shared.dataClassBehaviors = behaviors;
983
914
  args.forEach((arg) => {
984
915
  if (arg.valueExpression && arg.name) {
985
- applyDataClassBehaviorOverride(evaluator, arg.name, classType, arg.name.value, arg.valueExpression, behaviors);
986
- if (arg.name.value === 'frozen') {
916
+ applyDataClassBehaviorOverride(evaluator, arg.name, classType, arg.name.d.value, arg.valueExpression, behaviors);
917
+ if (arg.name.d.value === 'frozen') {
987
918
  sawFrozenArg = true;
988
919
  }
989
920
  }
@@ -998,7 +929,7 @@ function applyDataClassClassBehaviorOverrides(evaluator, errorNode, classType, a
998
929
  exports.applyDataClassClassBehaviorOverrides = applyDataClassClassBehaviorOverrides;
999
930
  function applyDataClassDecorator(evaluator, errorNode, classType, defaultBehaviors, callNode) {
1000
931
  var _a;
1001
- applyDataClassClassBehaviorOverrides(evaluator, errorNode, classType, (_a = callNode === null || callNode === void 0 ? void 0 : callNode.arguments) !== null && _a !== void 0 ? _a : [], defaultBehaviors);
932
+ applyDataClassClassBehaviorOverrides(evaluator, errorNode, classType, ((_a = callNode === null || callNode === void 0 ? void 0 : callNode.d.args) !== null && _a !== void 0 ? _a : []).map((arg) => (0, typeUtils_1.convertArgumentNodeToFunctionArgument)(arg)), defaultBehaviors);
1002
933
  }
1003
934
  exports.applyDataClassDecorator = applyDataClassDecorator;
1004
935
  //# sourceMappingURL=dataClasses.js.map