-
Notifications
You must be signed in to change notification settings - Fork 45
Expand file tree
/
Copy pathJsApi.kt
More file actions
121 lines (92 loc) · 3.31 KB
/
JsApi.kt
File metadata and controls
121 lines (92 loc) · 3.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package framework.api.js
import framework.api.js.util.toJsClassId
import org.utbot.framework.plugin.api.ClassId
import org.utbot.framework.plugin.api.ConstructorId
import org.utbot.framework.plugin.api.MethodId
import org.utbot.framework.plugin.api.UtModel
import org.utbot.framework.plugin.api.primitiveModelValueToClassId
import java.lang.reflect.Modifier
open class JsClassId(
private val jsName: String,
private val methods: Sequence<JsMethodId> = emptySequence(),
val constructor: JsConstructorId? = null,
private val classPackagePath: String = "",
private val classFilePath: String = "",
elementClassId: JsClassId? = null
) : ClassId(jsName, elementClassId) {
override val simpleName: String
get() = jsName
override val simpleNameWithEnclosingClasses: String
get() = jsName
override val allMethods: Sequence<JsMethodId>
get() = methods
override val allConstructors: Sequence<ConstructorId>
get() = if (constructor == null) emptySequence() else sequenceOf(constructor)
override val packageName: String
get() = classPackagePath
override val canonicalName: String
get() = jsName
override val isAnonymous: Boolean
get() = false
override val isInDefaultPackage: Boolean
get() = false
override val isInner: Boolean
get() = false
override val isLocal: Boolean
get() = false
override val isNested: Boolean
get() = false
override val isNullable: Boolean
get() = false
override val isSynthetic: Boolean
get() = false
override val outerClass: Class<*>?
get() = null
val filePath: String
get() = classFilePath
}
class JsEmptyClassId : JsClassId("empty")
class JsMethodId(
override var classId: JsClassId,
override val name: String,
private val returnTypeNotLazy: JsClassId,
private val parametersNotLazy: List<JsClassId>,
private val staticModifier: Boolean = false,
private val lazyReturnType: Lazy<JsClassId>? = null,
private val lazyParameters: Lazy<List<JsClassId>>? = null
) : MethodId(classId, name, returnTypeNotLazy, parametersNotLazy) {
override val parameters: List<JsClassId>
get() = lazyParameters?.value ?: parametersNotLazy
override val returnType: JsClassId
get() = lazyReturnType?.value ?: returnTypeNotLazy
override val modifiers: Int
get() = if (staticModifier) Modifier.STATIC else 0
}
class JsConstructorId(
override var classId: JsClassId,
override val parameters: List<JsClassId>,
) : ConstructorId(classId, parameters) {
override val modifiers: Int
get() = 0
}
class JsMultipleClassId(val classIds: List<JsClassId>) : JsClassId(classIds.joinToString(separator = "|") { it.name })
open class JsUtModel(
override val classId: JsClassId
) : UtModel(classId)
class JsNullModel(
override val classId: JsClassId
) : JsUtModel(classId) {
override fun toString() = "null"
}
class JsUndefinedModel(
classId: JsClassId
) : JsUtModel(classId) {
override fun toString() = "undefined"
}
data class JsPrimitiveModel(
val value: Any,
) : JsUtModel(jsPrimitiveModelValueToClassId(value)) {
override fun toString() = value.toString()
}
private fun jsPrimitiveModelValueToClassId(value: Any) =
primitiveModelValueToClassId(value).toJsClassId()