From dc62d167ad918ded4896412c5f7496e19dd5c79e Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Mon, 13 Oct 2014 16:23:01 +0400 Subject: [PATCH] Add user-data delegate for non-nullable properties --- .../org/jetbrains/jet/lang/psi/userDataUtil.kt | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/userDataUtil.kt b/compiler/frontend/src/org/jetbrains/jet/lang/psi/userDataUtil.kt index 62f58fd0bfb..1b50a645bcd 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/userDataUtil.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/userDataUtil.kt @@ -18,13 +18,24 @@ package org.jetbrains.jet.lang.psi import kotlin.properties.ReadWriteProperty import com.intellij.openapi.util.Key +import com.intellij.openapi.util.UserDataHolder -public class UserDataProperty(val key: Key) : ReadWriteProperty { - override fun get(thisRef: JetFile, desc: kotlin.PropertyMetadata): T? { +public class UserDataProperty(val key: Key, val default: T? = null) : ReadWriteProperty { + override fun get(thisRef: R, desc: kotlin.PropertyMetadata): T? { return thisRef.getUserData(key) } - override fun set(thisRef: JetFile, desc: kotlin.PropertyMetadata, value: T?) { + override fun set(thisRef: R, desc: kotlin.PropertyMetadata, value: T?) { + thisRef.putUserData(key, value) + } +} + +public class NotNullableUserDataProperty(val key: Key, val defaultValue: T) : ReadWriteProperty { + override fun get(thisRef: R, desc: kotlin.PropertyMetadata): T { + return thisRef.getUserData(key) ?: defaultValue + } + + override fun set(thisRef: R, desc: kotlin.PropertyMetadata, value: T) { thisRef.putUserData(key, value) } } \ No newline at end of file