@@ -21,13 +21,27 @@ internal val utbotHomePath = "${System.getProperty("user.home")}/.utbot"
2121private val defaultSettingsPath = " $utbotHomePath /settings.properties"
2222private const val defaultKeyForSettingsPath = " utbot.settings.path"
2323
24- internal class SettingDelegate <T >(val initializer : () -> T ) {
24+ /* *
25+ * Stores current values for each setting from [UtSettings].
26+ */
27+ private val settingsValues: MutableMap <KProperty <* >, Any? > = mutableMapOf ()
28+
29+ internal class SettingDelegate <T >(val property : KProperty <* >, val initializer : () -> T ) {
2530 private var value = initializer()
2631
32+ init {
33+ updateSettingValue()
34+ }
35+
2736 operator fun getValue (thisRef : Any? , property : KProperty <* >): T = value
2837
2938 operator fun setValue (thisRef : Any? , property : KProperty <* >, value : T ) {
3039 this .value = value
40+ updateSettingValue()
41+ }
42+
43+ private fun updateSettingValue () {
44+ settingsValues[property] = value
3145 }
3246}
3347
@@ -55,15 +69,13 @@ object UtSettings {
5569 defaultValue : T ,
5670 converter : (String ) -> T
5771 ): PropertyDelegateProvider <UtSettings , SettingDelegate <T >> {
58- return PropertyDelegateProvider { _, prop ->
59- SettingDelegate {
72+ return PropertyDelegateProvider { _, property ->
73+ SettingDelegate (property) {
6074 try {
61- properties.getProperty(prop .name)?.let (converter) ? : defaultValue
75+ properties.getProperty(property .name)?.let (converter) ? : defaultValue
6276 } catch (e: Throwable ) {
6377 logger.info(e) { e.message }
6478 defaultValue
65- } finally {
66- properties.putIfAbsent(prop.name, defaultValue.toString())
6779 }
6880 }
6981 }
@@ -76,7 +88,6 @@ object UtSettings {
7688 private inline fun <reified T : Enum <T >> getEnumProperty (defaultValue : T ) =
7789 getProperty(defaultValue) { enumValueOf(it) }
7890
79-
8091 /* *
8192 * Setting to disable coroutines debug explicitly.
8293 *
@@ -381,9 +392,10 @@ object UtSettings {
381392 var skipTestGenerationForSyntheticMethods by getBooleanProperty(true )
382393
383394 override fun toString (): String =
384- properties
395+ settingsValues
396+ .mapKeys { it.key.name }
385397 .entries
386- .sortedBy { it.key.toString() }
398+ .sortedBy { it.key }
387399 .joinToString(separator = System .lineSeparator()) { " \t ${it.key} =${it.value} " }
388400}
389401
0 commit comments