Skip to content

Commit e01920b

Browse files
committed
Add comments
1 parent 31ddce3 commit e01920b

File tree

2 files changed

+9
-10
lines changed

2 files changed

+9
-10
lines changed

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/model/constructor/tree/CgVariableConstructor.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,11 +218,11 @@ internal class CgVariableConstructor(val context: CgContext) :
218218
}
219219
is UtExecutableCallModel -> {
220220
val call = createCgExecutableCallFromUtExecutableCall(statementModel)
221-
val callOrAccess = replaceCgExecutableCallWithFieldAccessIfNeeded(call)
221+
val callOrAccess: CgStatement = replaceCgExecutableCallWithFieldAccessIfNeeded(call)
222222
if (callOrAccess is CgExecutableCall)
223-
+callOrAccess
223+
+callOrAccess // smart-cast => CgExecutableCall.unaryPlus()
224224
else
225-
+callOrAccess
225+
+callOrAccess // CgStatement.unaryPlus()
226226
}
227227
}
228228
}

utbot-framework/src/main/kotlin/org/utbot/framework/codegen/model/util/FieldIdUtil.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,6 @@ import org.utbot.framework.plugin.api.util.voidClassId
1515
*/
1616
// TODO: change parameter from packageName: String to context: CgContext in ClassId.isAccessibleFrom and ExecutableId.isAccessibleFrom ?
1717
private fun FieldId.isAccessibleFrom(context: CgContext): Boolean {
18-
/*if (context.codegenLanguage == CodegenLanguage.KOTLIN) {
19-
// Here we call field accessible iff its getter is accessible, checks for setter are made in FieldId.canBeSetIn
20-
if (!isStatic && isAccessibleViaGetterFrom(context))
21-
return true
22-
}*/
2318
val packageName = context.testClassPackageName
2419
val isClassAccessible = declaringClass.isAccessibleFrom(packageName)
2520
val isAccessibleByVisibility = isPublic || (declaringClass.packageName == packageName && (isPackagePrivate || isProtected))
@@ -31,8 +26,12 @@ private fun FieldId.isAccessibleFrom(context: CgContext): Boolean {
3126
private fun FieldId.canBeReadViaGetterFrom(context: CgContext): Boolean =
3227
declaringClass.allMethods.contains(getter) && getter.isAccessibleFrom(context.testClassPackageName)
3328

29+
/**
30+
* Returns whether you can read field's value without reflection
31+
*/
3432
internal infix fun FieldId.canBeReadFrom(context: CgContext): Boolean {
3533
if (context.codegenLanguage == CodegenLanguage.KOTLIN) {
34+
// Kotlin will allow direct field access for non-static fields with accessible getter
3635
if (!isStatic && canBeReadViaGetterFrom(context))
3736
return true
3837
}
@@ -48,8 +47,8 @@ private fun FieldId.canBeSetViaSetterFrom(context: CgContext): Boolean =
4847
*/
4948
internal fun FieldId.canBeSetFrom(context: CgContext): Boolean {
5049
if (context.codegenLanguage == CodegenLanguage.KOTLIN) {
51-
// Kotlin will allow direct write access if both getter and setter is defined (even if the field is final)
52-
// TODO: add comment about final public and final private fields
50+
// Kotlin will allow direct write access if both getter and setter is defined
51+
// !isAccessibleFrom(context) is important here because above rule applies to final fields only if they are not accessible in Java terms
5352
if (!isAccessibleFrom(context) && !isStatic && canBeReadViaGetterFrom(context) && canBeSetViaSetterFrom(context)) {
5453
return true
5554
}

0 commit comments

Comments
 (0)