@@ -29,6 +29,15 @@ fun Type.isPythonObjectType(): Boolean {
29
29
return description.name.prefix == listOf (" builtins" ) && description.name.name == " object"
30
30
}
31
31
32
+ fun Type.pythonTypeRepresentation (): String {
33
+ val description = pythonDescription()
34
+ val root = description.name.prefix.joinToString() + " ." + description.name.name
35
+ val params = pythonAnnotationParameters()
36
+ if (params.isEmpty())
37
+ return root
38
+ return " $root [${params.joinToString { it.pythonTypeRepresentation() }} ]"
39
+ }
40
+
32
41
class PythonTypeStorage (
33
42
val pythonObject : Type ,
34
43
val pythonBool : Type ,
@@ -74,10 +83,8 @@ sealed class PythonTypeDescription(name: Name) : TypeMetaDataWithName(name) {
74
83
open fun getMemberByName (storage : PythonTypeStorage , type : Type , name : String ): PythonAttribute ? =
75
84
// overridden for some types
76
85
getNamedMembers(type).find { it.name == name }
77
-
78
- open fun createTypeWithNewAnnotationParameters (origin : Type , newParams : List <Type >): Type =
79
- // overriden for Callable
80
- DefaultSubstitutionProvider .substituteAll(origin, newParams)
86
+ open fun createTypeWithNewAnnotationParameters (like : Type , newParams : List <Type >): Type = // overriden for Callable
87
+ DefaultSubstitutionProvider .substituteAll(like.getOrigin(), newParams)
81
88
}
82
89
83
90
sealed class PythonCompositeTypeDescription (
@@ -204,17 +211,17 @@ class PythonCallableTypeDescription(
204
211
Positional
205
212
}
206
213
207
- override fun createTypeWithNewAnnotationParameters (origin : Type , newParams : List <Type >): Type {
214
+ override fun createTypeWithNewAnnotationParameters (like : Type , newParams : List <Type >): Type {
208
215
val args = newParams.dropLast(1 )
209
216
val returnValue = newParams.last()
210
217
return createPythonCallableType(
211
- origin .parameters.size,
218
+ like .parameters.size,
212
219
argumentKinds,
213
220
argumentNames,
214
221
isClassMethod,
215
222
isStaticMethod
216
223
) { self ->
217
- val oldToNewParameters = (origin .parameters zip self.parameters).associate {
224
+ val oldToNewParameters = (like .parameters zip self.parameters).associate {
218
225
(it.first as TypeParameter ) to it.second
219
226
}
220
227
val newArgs = args.map {
0 commit comments