diff --git a/utbot-framework/src/main/kotlin/org/utbot/framework/codegen/tree/CgMethodConstructor.kt b/utbot-framework/src/main/kotlin/org/utbot/framework/codegen/tree/CgMethodConstructor.kt index 617b83b947..985e6af8d2 100644 --- a/utbot-framework/src/main/kotlin/org/utbot/framework/codegen/tree/CgMethodConstructor.kt +++ b/utbot-framework/src/main/kotlin/org/utbot/framework/codegen/tree/CgMethodConstructor.kt @@ -151,6 +151,7 @@ import org.utbot.framework.plugin.api.util.doubleStreamClassId import org.utbot.framework.plugin.api.util.doubleStreamToArrayMethodId import org.utbot.framework.plugin.api.util.intStreamClassId import org.utbot.framework.plugin.api.util.intStreamToArrayMethodId +import org.utbot.framework.plugin.api.util.isPackagePrivate import org.utbot.framework.plugin.api.util.isSubtypeOf import org.utbot.framework.plugin.api.util.longStreamClassId import org.utbot.framework.plugin.api.util.longStreamToArrayMethodId @@ -1112,7 +1113,11 @@ open class CgMethodConstructor(val context: CgContext) : CgContextOwner by conte private fun FieldId.getAccessExpression(variable: CgVariable): CgExpression = // Can directly access field only if it is declared in variable class (or in its ancestors) // and is accessible from current package - if (variable.type.hasField(this) && canBeReadFrom(context)) { + if (variable.type.hasField(this) + //TODO: think about moving variable type checks into [isAccessibleFrom] after contest + && (!isPackagePrivate || variable.type.packageName == context.testClassPackageName) + && canBeReadFrom(context) + ) { if (jField.isStatic) CgStaticFieldAccess(this) else CgFieldAccess(variable, this) } else { utilsClassId[getFieldValue](variable, this.declaringClass.name, this.name)