diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java index b0e7d61e537..f3c35fd5c76 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java @@ -653,7 +653,7 @@ public class BodyResolver { if (type instanceof DeferredType) { DeferredType deferredType = (DeferredType) type; if (!deferredType.isComputed()) { - deferredType.getActualType(); + deferredType.getDelegate(); } } } @@ -676,7 +676,7 @@ public class BodyResolver { DeferredType deferredType = queue.pullFirst(); if (!deferredType.isComputed()) { try { - deferredType.getActualType(); // to compute + deferredType.getDelegate(); // to compute } catch (ReenteringLazyValueComputationException e) { // A problem should be reported while computing the type diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java index 988ade87ea0..e808f3fdc49 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java @@ -198,7 +198,7 @@ public class DeclarationsChecker { if (propertyDescriptor.getModality() == Modality.ABSTRACT) { JetType returnType = propertyDescriptor.getReturnType(); if (returnType instanceof DeferredType) { - returnType = ((DeferredType) returnType).getActualType(); + returnType = ((DeferredType) returnType).getDelegate(); } JetExpression initializer = property.getInitializer(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/DeferredType.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/DeferredType.java index 5cc0d25aec5..f9a5398f84e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/DeferredType.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/DeferredType.java @@ -19,19 +19,15 @@ package org.jetbrains.jet.lang.types; import kotlin.Function0; import kotlin.Function1; import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.descriptors.annotations.Annotations; import org.jetbrains.jet.lang.resolve.BindingTrace; -import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.storage.NotNullLazyValue; import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.util.Box; import org.jetbrains.jet.util.ReenteringLazyValueComputationException; -import java.util.List; - import static org.jetbrains.jet.lang.resolve.BindingContext.DEFERRED_TYPE; -public class DeferredType implements LazyType { +public class DeferredType extends DelegatingType implements LazyType { private static final Function1 EMPTY_CONSUMER = new Function1() { @Override @@ -85,50 +81,16 @@ public class DeferredType implements LazyType { return lazyValue.isComputed(); } - @NotNull - public JetType getActualType() { + @Override + public JetType getDelegate() { return lazyValue.invoke(); } - @Override - @NotNull - public JetScope getMemberScope() { - return getActualType().getMemberScope(); - } - - @Override - public boolean isError() { - return getActualType().isError(); - } - - @Override - @NotNull - public TypeConstructor getConstructor() { - return getActualType().getConstructor(); - } - - @Override - @NotNull - public List getArguments() { - return getActualType().getArguments(); - } - - @Override - public boolean isNullable() { - return getActualType().isNullable(); - } - - @NotNull - @Override - public Annotations getAnnotations() { - return getActualType().getAnnotations(); - } - @Override public String toString() { try { if (lazyValue.isComputed()) { - return getActualType().toString(); + return getDelegate().toString(); } else { return ""; @@ -138,14 +100,4 @@ public class DeferredType implements LazyType { return ""; } } - - @Override - public boolean equals(Object obj) { - return getActualType().equals(obj); - } - - @Override - public int hashCode() { - return getActualType().hashCode(); - } } \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java index 03e65ad66bb..0520dd70654 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java @@ -131,7 +131,7 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitor getArguments() { + return getDelegate().getArguments(); + } + + @Override + public boolean isNullable() { + return getDelegate().isNullable(); + } + + @NotNull + @Override + public JetScope getMemberScope() { + return getDelegate().getMemberScope(); + } + + @Override + public boolean isError() { + return getDelegate().isError(); + } + + @NotNull + @Override + public Annotations getAnnotations() { + return getDelegate().getAnnotations(); + } + + @Override + public int hashCode() { + return getDelegate().hashCode(); + } + + @Override + public boolean equals(Object obj) { + return getDelegate().equals(obj); + } + + @Override + public String toString() { + return getDelegate().toString(); + } +} diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixUtil.java b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixUtil.java index dcfd84c5b26..638331e60c8 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixUtil.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixUtil.java @@ -64,7 +64,7 @@ public class QuickFixUtil { if (!(descriptor instanceof CallableDescriptor)) return null; JetType type = ((CallableDescriptor) descriptor).getReturnType(); if (type instanceof DeferredType) { - type = ((DeferredType) type).getActualType(); + type = ((DeferredType) type).getDelegate(); } return type; }