File tree Expand file tree Collapse file tree 2 files changed +17
-5
lines changed
utbot-framework/src/main/kotlin/org/utbot/framework/codegen/tree Expand file tree Collapse file tree 2 files changed +17
-5
lines changed Original file line number Diff line number Diff line change @@ -63,6 +63,8 @@ import org.utbot.framework.plugin.api.util.fieldClassId
63
63
import org.utbot.framework.plugin.api.util.isPrimitive
64
64
import org.utbot.framework.plugin.api.util.methodClassId
65
65
import org.utbot.framework.plugin.api.util.denotableType
66
+ import org.utbot.framework.plugin.api.util.id
67
+ import org.utbot.framework.plugin.api.util.isEnum
66
68
import org.utbot.framework.plugin.api.util.supertypeOfAnonymousClass
67
69
import java.lang.reflect.Constructor
68
70
import java.lang.reflect.Method
@@ -500,11 +502,13 @@ internal class CgStatementConstructorImpl(context: CgContext) :
500
502
}
501
503
502
504
private fun guardEnumConstantAccess (access : CgEnumConstantAccess ): ExpressionWithType {
503
- val (enumClass , constant) = access
505
+ val (enumAccessClass , constant) = access
504
506
505
- return if (enumClass .isAccessibleFrom(testClassPackageName)) {
506
- ExpressionWithType (enumClass , access)
507
+ return if (enumAccessClass .isAccessibleFrom(testClassPackageName)) {
508
+ ExpressionWithType (enumAccessClass , access)
507
509
} else {
510
+ val enumClass: ClassId =
511
+ if (enumAccessClass.isEnum) enumAccessClass else enumAccessClass.superclass!! .id
508
512
val enumClassVariable = newVar(classCgClassId) {
509
513
classClassId[forName](enumClass.name)
510
514
}
Original file line number Diff line number Diff line change @@ -58,6 +58,7 @@ import org.utbot.framework.plugin.api.util.findFieldByIdOrNull
58
58
import org.utbot.framework.plugin.api.util.id
59
59
import org.utbot.framework.plugin.api.util.intClassId
60
60
import org.utbot.framework.plugin.api.util.isArray
61
+ import org.utbot.framework.plugin.api.util.isEnum
61
62
import org.utbot.framework.plugin.api.util.isPrimitiveWrapperOrString
62
63
import org.utbot.framework.plugin.api.util.isStatic
63
64
import org.utbot.framework.plugin.api.util.stringClassId
@@ -445,8 +446,15 @@ open class CgVariableConstructor(val context: CgContext) :
445
446
}
446
447
447
448
private fun constructEnumConstant (model : UtEnumConstantModel , baseName : String? ): CgVariable {
448
- return newVar(model.classId, baseName) {
449
- CgEnumConstantAccess (model.classId, model.value.name)
449
+ val classId = model.classId
450
+
451
+ require(classId.isEnum ||
452
+ classId.isAnonymous && classId.superclass?.isEnum == true ) {
453
+ " Enum constant model $model should be a enum or an anonymous class that overrides enum methods"
454
+ }
455
+
456
+ return newVar(classId, baseName) {
457
+ CgEnumConstantAccess (classId, model.value.name)
450
458
}
451
459
}
452
460
You can’t perform that action at this time.
0 commit comments