@@ -43,13 +43,13 @@ import java.util.IdentityHashMap
43
43
44
44
/* *
45
45
* Creates [UtAssembleModel] from any [UtModel] or it's inner models if possible
46
- * during generation test for [methodPackageName ].
46
+ * during generation test for [packageName ].
47
47
*
48
48
* Needs utContext be set and Soot be initialized.
49
49
*
50
50
* Note: Caches class related information, can be reused if classes don't change.
51
51
*/
52
- class AssembleModelGenerator (private val methodPackageName : String ) {
52
+ class AssembleModelGenerator (private val packageName : String ) {
53
53
54
54
// Instantiated models are stored to avoid cyclic references during reference graph analysis
55
55
private val instantiatedModels: IdentityHashMap <UtModel , UtReferenceModel > =
@@ -100,7 +100,7 @@ class AssembleModelGenerator(private val methodPackageName: String) {
100
100
* Note: Two identity equal [UtModel]s are represented by one instance model.
101
101
*/
102
102
fun createAssembleModels (models : List <UtModel >): IdentityHashMap <UtModel , UtModel > {
103
- val allModelsAreLocatedInPackage = models.all { it.classId.packageName.startsWith(methodPackageName )}
103
+ val allModelsAreLocatedInPackage = models.all { it.classId.packageName.startsWith(packageName )}
104
104
if (! UtSettings .useAssembleModelGenerator || ! allModelsAreLocatedInPackage) {
105
105
return IdentityHashMap <UtModel , UtModel >().apply { models.forEach { put(it, it) } }
106
106
}
@@ -257,7 +257,7 @@ class AssembleModelGenerator(private val methodPackageName: String) {
257
257
if (fieldId.isFinal) {
258
258
throw AssembleException (" Final field $fieldId can't be set in an object of the class $classId " )
259
259
}
260
- if (! fieldId.type.isAccessibleFrom(methodPackageName )) {
260
+ if (! fieldId.type.isAccessibleFrom(packageName )) {
261
261
throw AssembleException (
262
262
" Field $fieldId can't be set in an object of the class $classId because its type is inaccessible"
263
263
)
@@ -399,10 +399,10 @@ class AssembleModelGenerator(private val methodPackageName: String) {
399
399
}
400
400
401
401
private val ClassId .isVisible : Boolean
402
- get() = this .isPublic || ! this .isPrivate && this .packageName.startsWith(methodPackageName )
402
+ get() = this .isPublic || ! this .isPrivate && this .packageName.startsWith(this @AssembleModelGenerator.packageName )
403
403
404
404
private val Constructor <* >.isVisible : Boolean
405
- get() = this .isPublic || ! this .isPrivate && this .declaringClass.packageName.startsWith(methodPackageName )
405
+ get() = this .isPublic || ! this .isPrivate && this .declaringClass.packageName.startsWith(packageName )
406
406
407
407
/* *
408
408
* Creates setter or direct setter call to set a field.
@@ -416,7 +416,7 @@ class AssembleModelGenerator(private val methodPackageName: String) {
416
416
): UtStatementModel {
417
417
val declaringClassId = fieldId.declaringClass
418
418
419
- val modifiers = getOrFindSettersAndDirectAccessors(declaringClassId )
419
+ val modifiers = getOrFindSettersAndDirectAccessors(instance.classId )
420
420
val modifier = modifiers[fieldId]
421
421
? : throw AssembleException (" No setter for field ${fieldId.name} of class ${declaringClassId.name} " )
422
422
@@ -441,9 +441,7 @@ class AssembleModelGenerator(private val methodPackageName: String) {
441
441
* Finds setters and direct accessors for fields of particular class.
442
442
*/
443
443
private fun findSettersAndDirectAccessors (classId : ClassId ): Map <FieldId , StatementId > {
444
- val allModificatorsOfClass = modificatorsSearcher
445
- .findModificators(SettersAndDirectAccessors , classId)
446
- .map { it.key to it.value.filter { st -> st.classId == classId } }
444
+ val allModificatorsOfClass = modificatorsSearcher.findModificators(SettersAndDirectAccessors , classId)
447
445
448
446
return allModificatorsOfClass
449
447
.mapNotNull { (fieldId, possibleModificators) ->
@@ -459,7 +457,7 @@ class AssembleModelGenerator(private val methodPackageName: String) {
459
457
*/
460
458
private fun chooseModificator (
461
459
fieldId : FieldId ,
462
- settersAndDirectAccessors : List <StatementId >
460
+ settersAndDirectAccessors : Set <StatementId >
463
461
): StatementId ? {
464
462
val directAccessors = settersAndDirectAccessors.filterIsInstance<DirectFieldAccessId >()
465
463
if (directAccessors.any()) {
0 commit comments