8
8
9
9
package org.utbot.framework.plugin.api
10
10
11
+ import kotlinx.coroutines.runBlocking
11
12
import org.utbot.common.isDefaultValue
12
13
import org.utbot.common.withToStringThreadLocalReentrancyGuard
13
14
import org.utbot.framework.UtSettings
14
15
import org.utbot.framework.plugin.api.MockFramework.MOCKITO
15
16
import org.utbot.framework.plugin.api.impl.FieldIdReflectionStrategy
16
17
import org.utbot.framework.plugin.api.impl.FieldIdSootStrategy
17
- import org.utbot.framework.plugin.api.util.booleanClassId
18
- import org.utbot.framework.plugin.api.util.byteClassId
19
- import org.utbot.framework.plugin.api.util.charClassId
20
- import org.utbot.framework.plugin.api.util.constructor
21
- import org.utbot.framework.plugin.api.util.doubleClassId
18
+ import org.utbot.framework.plugin.api.util.*
22
19
import org.utbot.framework.plugin.api.util.executableId
23
- import org.utbot.framework.plugin.api.util.findFieldOrNull
24
- import org.utbot.framework.plugin.api.util.floatClassId
25
20
import org.utbot.framework.plugin.api.util.id
26
- import org.utbot.framework.plugin.api.util.intClassId
27
- import org.utbot.framework.plugin.api.util.isArray
28
- import org.utbot.framework.plugin.api.util.isPrimitive
29
- import org.utbot.framework.plugin.api.util.jClass
30
- import org.utbot.framework.plugin.api.util.longClassId
31
- import org.utbot.framework.plugin.api.util.method
32
- import org.utbot.framework.plugin.api.util.primitiveTypeJvmNameOrNull
33
- import org.utbot.framework.plugin.api.util.shortClassId
34
- import org.utbot.framework.plugin.api.util.toReferenceTypeBytecodeSignature
35
- import org.utbot.framework.plugin.api.util.voidClassId
21
+ import soot.*
22
+ import soot.jimple.JimpleBody
23
+ import soot.jimple.Stmt
36
24
import java.io.File
37
25
import java.lang.reflect.Modifier
38
26
import java.nio.file.Path
@@ -43,21 +31,6 @@ import kotlin.reflect.KFunction
43
31
import kotlin.reflect.full.instanceParameter
44
32
import kotlin.reflect.jvm.javaConstructor
45
33
import kotlin.reflect.jvm.javaType
46
- import soot.ArrayType
47
- import soot.BooleanType
48
- import soot.ByteType
49
- import soot.CharType
50
- import soot.DoubleType
51
- import soot.FloatType
52
- import soot.IntType
53
- import soot.LongType
54
- import soot.RefType
55
- import soot.ShortType
56
- import soot.SootClass
57
- import soot.Type
58
- import soot.VoidType
59
- import soot.jimple.JimpleBody
60
- import soot.jimple.Stmt
61
34
62
35
data class UtMethod <R >(
63
36
val callable : KCallable <R >,
@@ -637,9 +610,9 @@ open class ClassId(
637
610
val elementClassId : ClassId ? = null
638
611
) {
639
612
open val canonicalName: String
640
- get() = jClass.canonicalName ? : error(" ClassId $name does not have canonical name" )
613
+ get() = jClass.name ? : error(" ClassId $name does not have canonical name" )
641
614
642
- open val simpleName: String get() = jClass.simpleName
615
+ open val simpleName: String get() = jClass.name
643
616
644
617
/* *
645
618
* For regular classes this is just a simple name
@@ -651,43 +624,43 @@ open class ClassId(
651
624
.replace(Regex (" [^a-zA-Z0-9]" ), " " )
652
625
.let { if (this .isArray) it + " Array" else it }
653
626
654
- open val packageName: String get() = jClass.`package`?. name ? : " " // empty package for primitives
627
+ open val packageName: String get() = jClass.name.replaceAfterLast( " . " ) // empty package for primitives
655
628
656
629
open val isInDefaultPackage: Boolean
657
630
get() = packageName.isEmpty()
658
631
659
632
open val isPublic: Boolean
660
- get() = Modifier .isPublic( jClass.modifiers)
633
+ get() = jClass.isPublic
661
634
662
635
open val isProtected: Boolean
663
- get() = Modifier .isProtected( jClass.modifiers)
636
+ get() = jClass.isProtected
664
637
665
638
open val isPrivate: Boolean
666
- get() = Modifier .isPrivate( jClass.modifiers)
639
+ get() = jClass.isPrivate
667
640
668
641
val isPackagePrivate: Boolean
669
642
get() = ! (isPublic || isProtected || isPrivate)
670
643
671
644
open val isFinal: Boolean
672
- get() = Modifier .isFinal( jClass.modifiers)
645
+ get() = jClass.isFinal
673
646
674
647
open val isStatic: Boolean
675
- get() = Modifier .isStatic( jClass.modifiers)
648
+ get() = jClass.isStatic
676
649
677
650
open val isAbstract: Boolean
678
- get() = Modifier .isAbstract( jClass.modifiers)
651
+ get() = jClass.isAbstract
679
652
680
653
open val isAnonymous: Boolean
681
- get() = jClass.isAnonymousClass
654
+ get() = jClass.isAnonymous
682
655
683
656
open val isLocal: Boolean
684
657
get() = jClass.isLocalClass
685
658
686
659
open val isInner: Boolean
687
- get() = jClass.isMemberClass && ! isStatic
660
+ get() = jClass.isInner
688
661
689
662
open val isNested: Boolean
690
- get() = jClass.enclosingClass != null
663
+ get() = jClass.isNested
691
664
692
665
open val isSynthetic: Boolean
693
666
get() = jClass.isSynthetic
@@ -701,16 +674,20 @@ open class ClassId(
701
674
*/
702
675
// TODO for now it duplicates overridden methods JIRA:1458
703
676
open val allMethods: Sequence <MethodId >
704
- get() = generateSequence(jClass) { it.superclass }
705
- .mapNotNull { it.declaredMethods }
706
- .flatMap { it.toList() }
707
- .map { it.executableId }
677
+ get() {
678
+ return runBlocking {
679
+ generateSequence(jClass) { it.superclass }
680
+ .mapNotNull { it.methods }
681
+ .flatten()
682
+ .map { it.executableId }
683
+ }
684
+ }
708
685
709
686
/* *
710
687
* Collects all declared constructors (including private and protected) from class to sequence
711
688
*/
712
689
open val allConstructors: Sequence <ConstructorId >
713
- get() = jClass.declaredConstructors.asSequence ().map { it.executableId }
690
+ get() = jClass.methods.filtasSequence ().map { it.executableId }
714
691
715
692
open val typeParameters: TypeParameters
716
693
get() = TypeParameters ()
0 commit comments