Made single parameter of Renderer.render() @NotNull, because argument was almost never @Nullable on call-sites.

This commit is contained in:
Evgeny Gerashchenko
2012-04-12 18:27:29 +04:00
parent 46d929efa1
commit 7be6fe84be
10 changed files with 41 additions and 46 deletions
@@ -18,7 +18,6 @@ package org.jetbrains.jet.compiler;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.diagnostics.*;
import org.jetbrains.jet.lang.psi.JetFile;
@@ -41,7 +40,7 @@ public class DefaultDiagnosticRenderer implements DiagnosticRenderer<Diagnostic>
factoryToRenderer.put(EXCEPTION_WHILE_ANALYZING, new DiagnosticWithParameters1Renderer<JetFile, Throwable>("{0}", new Renderer<Throwable>() {
@NotNull
@Override
public String render(@Nullable Throwable e) {
public String render(@NotNull Throwable e) {
return e.getClass().getSimpleName() + ": " + e.getMessage();
}
}));
@@ -49,10 +48,7 @@ public class DefaultDiagnosticRenderer implements DiagnosticRenderer<Diagnostic>
@NotNull
@Override
public String render(@Nullable Diagnostic diagnostic) {
if (diagnostic == null) {
throw new IllegalArgumentException("Diagnostic passed to diagnostic renderer cannot be null");
}
public String render(@NotNull Diagnostic diagnostic) {
DiagnosticRenderer renderer = factoryToRenderer.get(diagnostic.getFactory());
if (renderer == null) {
return diagnostic.getMessage(); // TODO throw IllegalArgumentException instead
@@ -72,8 +68,8 @@ public class DefaultDiagnosticRenderer implements DiagnosticRenderer<Diagnostic>
@NotNull
@Override
public String render(@Nullable DiagnosticWithParameters1<E, A> diagnostic) {
return diagnostic == null ? "null" : messageFormat.format(new Object[]{rendererForA.render(diagnostic.getA())});
public String render(@NotNull DiagnosticWithParameters1<E, A> diagnostic) {
return messageFormat.format(new Object[]{rendererForA.render(diagnostic.getA())});
}
}
}
@@ -41,7 +41,7 @@ public class AmbiguousDescriptorDiagnosticFactory extends DiagnosticFactory1<Psi
new Renderer<Collection<? extends ResolvedCall<? extends CallableDescriptor>>>() {
@NotNull
@Override
public String render(@Nullable Collection<? extends ResolvedCall<? extends CallableDescriptor>> argument) {
public String render(@NotNull Collection<? extends ResolvedCall<? extends CallableDescriptor>> argument) {
StringBuilder stringBuilder = new StringBuilder("\n");
for (ResolvedCall<? extends CallableDescriptor> call : argument) {
stringBuilder.append(DescriptorRenderer.TEXT.render(call.getResultingDescriptor())).append("\n");
@@ -17,7 +17,6 @@
package org.jetbrains.jet.lang.diagnostics;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* @author Evgeny Gerashchenko
@@ -26,5 +25,5 @@ import org.jetbrains.annotations.Nullable;
public interface DiagnosticRenderer<D extends Diagnostic> extends Renderer<D> {
@NotNull
@Override
String render(@Nullable D diagnostic);
String render(@NotNull D diagnostic);
}
@@ -49,7 +49,7 @@ public interface Errors {
DiagnosticFactory1<JetFile, Throwable> EXCEPTION_WHILE_ANALYZING = DiagnosticFactory1.create(ERROR, "{0}", new Renderer<Throwable>() {
@NotNull
@Override
public String render(@Nullable Throwable e) {
public String render(@NotNull Throwable e) {
return e.getClass().getSimpleName() + ": " + e.getMessage();
}
});
@@ -70,8 +70,7 @@ public interface Errors {
new Renderer<Collection<JetKeywordToken>>() {
@NotNull
@Override
public String render(@Nullable Collection<JetKeywordToken> element) {
assert element != null;
public String render(@NotNull Collection<JetKeywordToken> element) {
StringBuilder sb = new StringBuilder();
for (Iterator<JetKeywordToken> iterator = element.iterator(); iterator.hasNext(); ) {
JetKeywordToken modifier = iterator.next();
@@ -337,8 +336,7 @@ public interface Errors {
DiagnosticFactory1<JetExpression, JetExpression> EXPRESSION_EXPECTED = DiagnosticFactory1.create(ERROR, "{0} is not an expression, and only expression are allowed here", new Renderer<JetExpression>() {
@NotNull
@Override
public String render(@Nullable JetExpression expression) {
assert expression != null;
public String render(@NotNull JetExpression expression) {
String expressionType = expression.toString();
return expressionType.substring(0, 1) + expressionType.substring(1).toLowerCase();
}
@@ -424,8 +422,8 @@ public interface Errors {
DiagnosticFactory2<JetSimpleNameExpression, JetTypeConstraint, JetTypeParameterListOwner> NAME_IN_CONSTRAINT_IS_NOT_A_TYPE_PARAMETER = DiagnosticFactory2.create(ERROR, "{0} does not refer to a type parameter of {1}", new Renderer<JetTypeConstraint>() {
@NotNull
@Override
public String render(@Nullable JetTypeConstraint typeConstraint) {
assert typeConstraint != null;
public String render(@NotNull JetTypeConstraint typeConstraint) {
//noinspection ConstantConditions
return typeConstraint.getSubjectTypeParameterName().getReferencedName();
}
}, NAME);
@@ -446,7 +444,7 @@ public interface Errors {
DiagnosticFactory3.create(ERROR, "Type parameter {0} of {1} has inconsistent values: {2}", NAME, DescriptorRenderer.TEXT, new Renderer<Collection<JetType>>() {
@NotNull
@Override
public String render(@Nullable Collection<JetType> types) {
public String render(@NotNull Collection<JetType> types) {
StringBuilder builder = new StringBuilder();
for (Iterator<JetType> iterator = types.iterator(); iterator.hasNext(); ) {
JetType jetType = iterator.next();
@@ -462,7 +460,8 @@ public interface Errors {
DiagnosticFactory3<JetBinaryExpression, JetSimpleNameExpression, JetType, JetType> EQUALITY_NOT_APPLICABLE = DiagnosticFactory3.create(ERROR, "Operator {0} cannot be applied to {1} and {2}", new Renderer<JetSimpleNameExpression>() {
@NotNull
@Override
public String render(@Nullable JetSimpleNameExpression nameExpression) {
public String render(@NotNull JetSimpleNameExpression nameExpression) {
//noinspection ConstantConditions
return nameExpression.getReferencedName();
}
}, TO_STRING, TO_STRING);
@@ -537,8 +536,7 @@ public interface Errors {
DiagnosticFactory1<JetElement, Integer> WRONG_NUMBER_OF_TYPE_ARGUMENTS = DiagnosticFactory1.create(ERROR, "{0} type arguments expected", new Renderer<Integer>() {
@NotNull
@Override
public String render(@Nullable Integer argument) {
assert argument != null;
public String render(@NotNull Integer argument) {
return argument == 0 ? "No" : argument.toString();
}
});
@@ -16,15 +16,12 @@
package org.jetbrains.jet.lang.diagnostics;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* @author abreslav
*/
public interface Renderer<P> {
public interface Renderer<O> {
@NotNull
String render(@Nullable P element);
String render(@NotNull O object);
}
@@ -18,7 +18,6 @@ package org.jetbrains.jet.lang.diagnostics;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.Named;
import org.jetbrains.jet.lang.psi.JetClass;
import org.jetbrains.jet.lang.psi.JetClassOrObject;
@@ -32,8 +31,8 @@ public class Renderers {
public static final Renderer<Object> TO_STRING = new Renderer<Object>() {
@NotNull
@Override
public String render(@Nullable Object element) {
return element == null ? "null" : element.toString();
public String render(@NotNull Object element) {
return element.toString();
}
@Override
@@ -45,8 +44,7 @@ public class Renderers {
public static final Renderer<Object> NAME = new Renderer<Object>() {
@NotNull
@Override
public String render(@Nullable Object element) {
if (element == null) return "null";
public String render(@NotNull Object element) {
if (element instanceof Named) {
return ((Named) element).getName();
}
@@ -57,8 +55,7 @@ public class Renderers {
public static final Renderer<PsiElement> ELEMENT_TEXT = new Renderer<PsiElement>() {
@NotNull
@Override
public String render(@Nullable PsiElement element) {
if (element == null) return "null";
public String render(@NotNull PsiElement element) {
return element.getText();
}
};
@@ -66,8 +63,7 @@ public class Renderers {
public static final Renderer<JetClassOrObject> RENDER_CLASS_OR_OBJECT = new Renderer<JetClassOrObject>() {
@NotNull
@Override
public String render(@Nullable JetClassOrObject classOrObject) {
assert classOrObject != null;
public String render(@NotNull JetClassOrObject classOrObject) {
String name = classOrObject.getName() != null ? " '" + classOrObject.getName() + "'" : "";
if (classOrObject instanceof JetClass) {
return "Class" + name;
@@ -80,8 +76,7 @@ public class Renderers {
public static final Renderer<JetType> RENDER_TYPE = new Renderer<JetType>() {
@NotNull
@Override
public String render(@Nullable JetType type) {
assert type != null;
public String render(@NotNull JetType type) {
return DescriptorRenderer.TEXT.renderType(type);
}
};
@@ -209,8 +209,7 @@ public class DescriptorRenderer implements Renderer<DeclarationDescriptor> {
@NotNull
@Override
public String render(DeclarationDescriptor declarationDescriptor) {
if (declarationDescriptor == null) return lt() + "null>";
public String render(@NotNull DeclarationDescriptor declarationDescriptor) {
StringBuilder stringBuilder = new StringBuilder();
declarationDescriptor.accept(rootVisitor, stringBuilder);
if (shouldRenderDefinedIn()) {
@@ -23,6 +23,8 @@ import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.CompileCompilerDependenciesTest;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
@@ -185,7 +187,7 @@ public abstract class ExpectedResolveData {
assertTrue(
"Must have been unresolved: " +
renderReferenceInContext(referenceExpression) +
" but was resolved to " + DescriptorRenderer.TEXT.render(bindingContext.get(REFERENCE_TARGET, referenceExpression)),
" but was resolved to " + renderNullableDescriptor(bindingContext.get(REFERENCE_TARGET, referenceExpression)),
unresolvedReferences.contains(referenceExpression));
continue;
}
@@ -193,7 +195,7 @@ public abstract class ExpectedResolveData {
assertTrue(
"Must have been resolved to multiple descriptors: " +
renderReferenceInContext(referenceExpression) +
" but was resolved to " + DescriptorRenderer.TEXT.render(bindingContext.get(REFERENCE_TARGET, referenceExpression)),
" but was resolved to " + renderNullableDescriptor(bindingContext.get(REFERENCE_TARGET, referenceExpression)),
bindingContext.get(AMBIGUOUS_REFERENCE_TARGET, referenceExpression) != null);
continue;
}
@@ -201,7 +203,7 @@ public abstract class ExpectedResolveData {
assertTrue(
"Must have been resolved to null: " +
renderReferenceInContext(referenceExpression) +
" but was resolved to " + DescriptorRenderer.TEXT.render(bindingContext.get(REFERENCE_TARGET, referenceExpression)),
" but was resolved to " + renderNullableDescriptor(bindingContext.get(REFERENCE_TARGET, referenceExpression)),
bindingContext.get(REFERENCE_TARGET, referenceExpression) == null
);
continue;
@@ -210,7 +212,7 @@ public abstract class ExpectedResolveData {
assertTrue(
"Must have been resolved to error: " +
renderReferenceInContext(referenceExpression) +
" but was resolved to " + DescriptorRenderer.TEXT.render(bindingContext.get(REFERENCE_TARGET, referenceExpression)),
" but was resolved to " + renderNullableDescriptor(bindingContext.get(REFERENCE_TARGET, referenceExpression)),
ErrorUtils.isError(bindingContext.get(REFERENCE_TARGET, referenceExpression))
);
continue;
@@ -355,4 +357,9 @@ public abstract class ExpectedResolveData {
T result = (T) element;
return result;
}
@NotNull
private static String renderNullableDescriptor(@Nullable DeclarationDescriptor d) {
return d == null ? "<null>" : DescriptorRenderer.TEXT.render(d);
}
}
@@ -35,6 +35,7 @@ import com.intellij.util.PsiNavigateUtil;
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.Modality;
import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetNamedFunction;
import org.jetbrains.jet.lang.psi.JetProperty;
@@ -132,7 +133,10 @@ public class JetLineMarkerProvider implements LineMarkerProvider {
public String getElementText(PsiElement element) {
if (element instanceof JetNamedFunction) {
JetNamedFunction function = (JetNamedFunction) element;
return DescriptorRenderer.HTML.render(bindingContext.get(BindingContext.FUNCTION, function));
SimpleFunctionDescriptor fd =
bindingContext.get(BindingContext.FUNCTION, function);
assert fd != null;
return DescriptorRenderer.HTML.render(fd);
}
return super.getElementText(element);
}
@@ -125,7 +125,7 @@ class DecompiledDataFactory {
return r;
}
private void appendDescriptor(DeclarationDescriptor descriptor, String indent) {
private void appendDescriptor(@NotNull DeclarationDescriptor descriptor, String indent) {
int startOffset = myBuilder.length();
String renderedDescriptor = DescriptorRenderer.COMPACT.render(descriptor);
renderedDescriptor = renderedDescriptor.replace("= ...", "= " + DECOMPILED_COMMENT);