From c0ce15ddfb638db420e52ca5ac9d02d2ba445c7b Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Wed, 26 Dec 2012 23:50:13 +0400 Subject: [PATCH] Made parameter of renderType() @NotNull. --- .../jetbrains/jet/renderer/DescriptorRenderer.java | 2 +- .../jet/renderer/DescriptorRendererImpl.java | 13 +++++-------- .../jetbrains/jet/types/TypeSubstitutorTest.java | 11 ++++++++--- .../jet/plugin/highlighter/IdeErrorMessages.java | 5 ++++- .../structureView/JetStructureViewElement.java | 1 + 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRenderer.java b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRenderer.java index 9101d3e48cd..e57be4e21ad 100644 --- a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRenderer.java +++ b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRenderer.java @@ -45,7 +45,7 @@ public interface DescriptorRenderer extends Renderer { DescriptorRenderer HTML = new DescriptorRendererBuilder().setTextFormat(TextFormat.HTML).build(); @NotNull - String renderType(@Nullable JetType type); + String renderType(@NotNull JetType type); @NotNull @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java index 4e6b54c5f6c..02b8c922c33 100644 --- a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java @@ -21,7 +21,6 @@ import com.google.common.collect.Sets; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.annotations.Annotated; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; @@ -180,15 +179,12 @@ public class DescriptorRendererImpl implements DescriptorRenderer { /* TYPES RENDERING */ @NotNull @Override - public String renderType(@Nullable JetType type) { + public String renderType(@NotNull JetType type) { return escape(renderTypeWithoutEscape(type)); } - private String renderTypeWithoutEscape(@Nullable JetType type) { - if (type == null) { - return "[NULL]"; - } - else if (type == CallResolverUtil.DONT_CARE || type == CallResolverUtil.CANT_INFER) { + private String renderTypeWithoutEscape(@NotNull JetType type) { + if (type == CallResolverUtil.DONT_CARE || type == CallResolverUtil.CANT_INFER) { return "???"; } else if (type == CallResolverUtil.PLACEHOLDER_FUNCTION_TYPE) { @@ -432,7 +428,8 @@ public class DescriptorRendererImpl implements DescriptorRenderer { renderName(function, builder); renderValueParameters(function, builder); - builder.append(" : ").append(escape(renderType(function.getReturnType()))); + JetType returnType = function.getReturnType(); + builder.append(" : ").append(returnType == null ? "[NULL]" : escape(renderType(returnType))); renderWhereSuffix(function.getTypeParameters(), builder); } diff --git a/compiler/tests/org/jetbrains/jet/types/TypeSubstitutorTest.java b/compiler/tests/org/jetbrains/jet/types/TypeSubstitutorTest.java index 9b7381e7e7c..a743f20fd27 100644 --- a/compiler/tests/org/jetbrains/jet/types/TypeSubstitutorTest.java +++ b/compiler/tests/org/jetbrains/jet/types/TypeSubstitutorTest.java @@ -53,7 +53,6 @@ import java.util.Map; @SuppressWarnings("unchecked") public class TypeSubstitutorTest extends KotlinTestWithEnvironment { - public static final String ILLEGAL_SUBSTITUTION = "[NULL]"; private JetScope scope; private InjectorForTests injector; @@ -106,7 +105,13 @@ public class TypeSubstitutorTest extends KotlinTestWithEnvironment { JetType result = substitutor.substitute(initialType, Variance.INVARIANT); - assertEquals(expectedTypeStr, DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(result)); + if (expectedTypeStr == null) { + assertNull(result); + } + else { + assertNotNull(result); + assertEquals(expectedTypeStr, DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(result)); + } } private Map stringsToSubstitutionMap(Pair[] substitutionStrs) { @@ -218,7 +223,7 @@ public class TypeSubstitutorTest extends KotlinTestWithEnvironment { public void testInOutProjection() throws Exception { doTest( - ILLEGAL_SUBSTITUTION, + null, "C", map("T", "out String") ); diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/IdeErrorMessages.java b/idea/src/org/jetbrains/jet/plugin/highlighter/IdeErrorMessages.java index 905b11896c1..739338f9d2d 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/IdeErrorMessages.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/IdeErrorMessages.java @@ -20,6 +20,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor; import org.jetbrains.jet.lang.diagnostics.Diagnostic; import org.jetbrains.jet.lang.diagnostics.rendering.*; +import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.renderer.DescriptorRenderer; import static org.jetbrains.jet.lang.diagnostics.Errors.*; @@ -86,7 +87,9 @@ public class IdeErrorMessages { @NotNull @Override public String render(@NotNull CallableMemberDescriptor object) { - return DescriptorRenderer.HTML.renderType(object.getReturnType()); + JetType returnType = object.getReturnType(); + assert returnType != null; + return DescriptorRenderer.HTML.renderType(returnType); } }, DescriptorRenderer.HTML); diff --git a/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewElement.java b/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewElement.java index 44c07073f2f..9fbb02508fe 100644 --- a/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewElement.java +++ b/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewElement.java @@ -215,6 +215,7 @@ public class JetStructureViewElement implements StructureViewTreeElement { textBuilder.append("(").append(parametersString).append(")"); JetType returnType = functionDescriptor.getReturnType(); + assert returnType != null; textBuilder.append(":").append(DescriptorRenderer.TEXT.renderType(returnType)); } else if (descriptor instanceof VariableDescriptor) {