From 344a57f2d53a6de99f5380daa6c187d0486ee24c Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 2 Oct 2013 12:51:45 +0400 Subject: [PATCH] isComputed() supported for lazy values --- .../org/jetbrains/jet/storage/LockBasedStorageManager.java | 5 +++++ .../src/org/jetbrains/jet/storage/NotNullLazyValue.java | 3 +++ .../src/org/jetbrains/jet/storage/NullableLazyValue.java | 3 +++ .../src/org/jetbrains/jet/storage/NullableLazyValueImpl.java | 3 ++- 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/core/util.runtime/src/org/jetbrains/jet/storage/LockBasedStorageManager.java b/core/util.runtime/src/org/jetbrains/jet/storage/LockBasedStorageManager.java index 1c505f0a3b5..a32d79741c1 100644 --- a/core/util.runtime/src/org/jetbrains/jet/storage/LockBasedStorageManager.java +++ b/core/util.runtime/src/org/jetbrains/jet/storage/LockBasedStorageManager.java @@ -155,6 +155,11 @@ public class LockBasedStorageManager implements StorageManager { this.computable = computable; } + @Override + public boolean isComputed() { + return value != NOT_COMPUTED && value != COMPUTING; + } + @Override public T compute() { Object _value = value; diff --git a/core/util.runtime/src/org/jetbrains/jet/storage/NotNullLazyValue.java b/core/util.runtime/src/org/jetbrains/jet/storage/NotNullLazyValue.java index cd74f3c60bc..456a10dd041 100644 --- a/core/util.runtime/src/org/jetbrains/jet/storage/NotNullLazyValue.java +++ b/core/util.runtime/src/org/jetbrains/jet/storage/NotNullLazyValue.java @@ -23,4 +23,7 @@ public interface NotNullLazyValue extends Computable { @Override @NotNull T compute(); + + // Needed for proper toString() behaviors + boolean isComputed(); } diff --git a/core/util.runtime/src/org/jetbrains/jet/storage/NullableLazyValue.java b/core/util.runtime/src/org/jetbrains/jet/storage/NullableLazyValue.java index eb21420a6da..8a124e621df 100644 --- a/core/util.runtime/src/org/jetbrains/jet/storage/NullableLazyValue.java +++ b/core/util.runtime/src/org/jetbrains/jet/storage/NullableLazyValue.java @@ -23,4 +23,7 @@ public interface NullableLazyValue extends Computable { @Override @Nullable T compute(); + + // Needed for proper toString() behaviors + boolean isComputed(); } diff --git a/core/util.runtime/src/org/jetbrains/jet/storage/NullableLazyValueImpl.java b/core/util.runtime/src/org/jetbrains/jet/storage/NullableLazyValueImpl.java index 50500a146e9..3c4db4f66d3 100644 --- a/core/util.runtime/src/org/jetbrains/jet/storage/NullableLazyValueImpl.java +++ b/core/util.runtime/src/org/jetbrains/jet/storage/NullableLazyValueImpl.java @@ -30,8 +30,9 @@ public abstract class NullableLazyValueImpl implements NullableLazyValue { @Nullable private Object value = State.NOT_COMPUTED; + @Override public boolean isComputed() { - return value != State.NOT_COMPUTED; + return value != State.NOT_COMPUTED && value != State.COMPUTING; } @Override