Rename: Renderer -> DiagnosticParameterRenderer and move it out of descriptors module
DescriptorRenderer is no longer a renderer DescriptorRenderers should not be used to render diagnostic parameters explicitly
This commit is contained in:
+2
-2
@@ -20,9 +20,9 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages;
|
import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages;
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticFactoryToRendererMap;
|
import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticFactoryToRendererMap;
|
||||||
|
import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticParameterRenderer;
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.Renderers;
|
import org.jetbrains.kotlin.diagnostics.rendering.Renderers;
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer;
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer;
|
||||||
import org.jetbrains.kotlin.renderer.Renderer;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -30,7 +30,7 @@ import java.util.List;
|
|||||||
|
|
||||||
public class DefaultErrorMessagesJvm implements DefaultErrorMessages.Extension {
|
public class DefaultErrorMessagesJvm implements DefaultErrorMessages.Extension {
|
||||||
|
|
||||||
private static final Renderer<ConflictingJvmDeclarationsData> CONFLICTING_JVM_DECLARATIONS_DATA = new Renderer<ConflictingJvmDeclarationsData>() {
|
private static final DiagnosticParameterRenderer<ConflictingJvmDeclarationsData> CONFLICTING_JVM_DECLARATIONS_DATA = new DiagnosticParameterRenderer<ConflictingJvmDeclarationsData>() {
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String render(@NotNull ConflictingJvmDeclarationsData data) {
|
public String render(@NotNull ConflictingJvmDeclarationsData data) {
|
||||||
|
|||||||
-39
@@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.diagnostics.rendering;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
|
||||||
|
|
||||||
import java.text.MessageFormat;
|
|
||||||
|
|
||||||
public abstract class AbstractDiagnosticWithParametersRenderer<D extends Diagnostic> implements DiagnosticRenderer<D> {
|
|
||||||
@NotNull private final MessageFormat messageFormat;
|
|
||||||
|
|
||||||
protected AbstractDiagnosticWithParametersRenderer(@NotNull String message) {
|
|
||||||
messageFormat = new MessageFormat(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public String render(@NotNull D diagnostic) {
|
|
||||||
return messageFormat.format(renderParameters(diagnostic));
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public abstract Object[] renderParameters(@NotNull D diagnostic);
|
|
||||||
}
|
|
||||||
+8
-24
@@ -17,7 +17,6 @@
|
|||||||
package org.jetbrains.kotlin.diagnostics.rendering;
|
package org.jetbrains.kotlin.diagnostics.rendering;
|
||||||
|
|
||||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||||
import kotlin.Unit;
|
|
||||||
import kotlin.jvm.functions.Function1;
|
import kotlin.jvm.functions.Function1;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@@ -30,8 +29,6 @@ import org.jetbrains.kotlin.psi.KtExpression;
|
|||||||
import org.jetbrains.kotlin.psi.KtSimpleNameExpression;
|
import org.jetbrains.kotlin.psi.KtSimpleNameExpression;
|
||||||
import org.jetbrains.kotlin.psi.KtTypeConstraint;
|
import org.jetbrains.kotlin.psi.KtTypeConstraint;
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer;
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer;
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRendererOptions;
|
|
||||||
import org.jetbrains.kotlin.renderer.Renderer;
|
|
||||||
import org.jetbrains.kotlin.resolve.varianceChecker.VarianceChecker.VarianceConflictDiagnosticData;
|
import org.jetbrains.kotlin.resolve.varianceChecker.VarianceChecker.VarianceConflictDiagnosticData;
|
||||||
import org.jetbrains.kotlin.types.KotlinType;
|
import org.jetbrains.kotlin.types.KotlinType;
|
||||||
import org.jetbrains.kotlin.util.MappedExtensionProvider;
|
import org.jetbrains.kotlin.util.MappedExtensionProvider;
|
||||||
@@ -44,7 +41,6 @@ import java.util.List;
|
|||||||
|
|
||||||
import static org.jetbrains.kotlin.diagnostics.Errors.*;
|
import static org.jetbrains.kotlin.diagnostics.Errors.*;
|
||||||
import static org.jetbrains.kotlin.diagnostics.rendering.Renderers.*;
|
import static org.jetbrains.kotlin.diagnostics.rendering.Renderers.*;
|
||||||
import static org.jetbrains.kotlin.renderer.DescriptorRenderer.*;
|
|
||||||
|
|
||||||
public class DefaultErrorMessages {
|
public class DefaultErrorMessages {
|
||||||
|
|
||||||
@@ -95,18 +91,6 @@ public class DefaultErrorMessages {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final DescriptorRenderer DEPRECATION_RENDERER = DescriptorRenderer.ONLY_NAMES_WITH_SHORT_TYPES.withOptions(
|
|
||||||
new Function1<DescriptorRendererOptions, Unit>() {
|
|
||||||
@Override
|
|
||||||
public Unit invoke(DescriptorRendererOptions options) {
|
|
||||||
options.setWithoutTypeParameters(false);
|
|
||||||
options.setReceiverAfterName(false);
|
|
||||||
options.setRenderAccessors(true);
|
|
||||||
return Unit.INSTANCE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
MAP.put(UNRESOLVED_REFERENCE, "Unresolved reference: {0}", ELEMENT_TEXT);
|
MAP.put(UNRESOLVED_REFERENCE, "Unresolved reference: {0}", ELEMENT_TEXT);
|
||||||
|
|
||||||
@@ -143,7 +127,7 @@ public class DefaultErrorMessages {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
MAP.put(MEMBER_PROJECTED_OUT, "Out-projected type ''{1}'' prohibits the use of ''{0}''", DescriptorRenderer.FQ_NAMES_IN_TYPES, RENDER_TYPE);
|
MAP.put(MEMBER_PROJECTED_OUT, "Out-projected type ''{1}'' prohibits the use of ''{0}''", FQ_NAMES_IN_TYPES, RENDER_TYPE);
|
||||||
MAP.put(INCOMPATIBLE_MODIFIERS, "Modifier ''{0}'' is incompatible with ''{1}''", TO_STRING, TO_STRING);
|
MAP.put(INCOMPATIBLE_MODIFIERS, "Modifier ''{0}'' is incompatible with ''{1}''", TO_STRING, TO_STRING);
|
||||||
MAP.put(DEPRECATED_MODIFIER_PAIR, "Modifier ''{0}'' is deprecated in presence of ''{1}''", TO_STRING, TO_STRING);
|
MAP.put(DEPRECATED_MODIFIER_PAIR, "Modifier ''{0}'' is deprecated in presence of ''{1}''", TO_STRING, TO_STRING);
|
||||||
MAP.put(REPEATED_MODIFIER, "Repeated ''{0}''", TO_STRING);
|
MAP.put(REPEATED_MODIFIER, "Repeated ''{0}''", TO_STRING);
|
||||||
@@ -188,7 +172,7 @@ public class DefaultErrorMessages {
|
|||||||
MAP.put(MIXING_NAMED_AND_POSITIONED_ARGUMENTS, "Mixing named and positioned arguments is not allowed");
|
MAP.put(MIXING_NAMED_AND_POSITIONED_ARGUMENTS, "Mixing named and positioned arguments is not allowed");
|
||||||
MAP.put(ARGUMENT_PASSED_TWICE, "An argument is already passed for this parameter");
|
MAP.put(ARGUMENT_PASSED_TWICE, "An argument is already passed for this parameter");
|
||||||
MAP.put(NAMED_PARAMETER_NOT_FOUND, "Cannot find a parameter with this name: {0}", ELEMENT_TEXT);
|
MAP.put(NAMED_PARAMETER_NOT_FOUND, "Cannot find a parameter with this name: {0}", ELEMENT_TEXT);
|
||||||
MAP.put(NAMED_ARGUMENTS_NOT_ALLOWED, "Named arguments are not allowed for {0}", new Renderer<BadNamedArgumentsTarget>() {
|
MAP.put(NAMED_ARGUMENTS_NOT_ALLOWED, "Named arguments are not allowed for {0}", new DiagnosticParameterRenderer<BadNamedArgumentsTarget>() {
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String render(@NotNull BadNamedArgumentsTarget target) {
|
public String render(@NotNull BadNamedArgumentsTarget target) {
|
||||||
@@ -404,7 +388,7 @@ public class DefaultErrorMessages {
|
|||||||
|
|
||||||
MAP.put(IMPLICIT_CAST_TO_ANY, "Conditional branch result of type {0} is implicitly cast to {1}",
|
MAP.put(IMPLICIT_CAST_TO_ANY, "Conditional branch result of type {0} is implicitly cast to {1}",
|
||||||
RENDER_TYPE, RENDER_TYPE);
|
RENDER_TYPE, RENDER_TYPE);
|
||||||
MAP.put(EXPRESSION_EXPECTED, "{0} is not an expression, and only expressions are allowed here", new Renderer<KtExpression>() {
|
MAP.put(EXPRESSION_EXPECTED, "{0} is not an expression, and only expressions are allowed here", new DiagnosticParameterRenderer<KtExpression>() {
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String render(@NotNull KtExpression expression) {
|
public String render(@NotNull KtExpression expression) {
|
||||||
@@ -500,7 +484,7 @@ public class DefaultErrorMessages {
|
|||||||
MAP.put(UNEXPECTED_SAFE_CALL, "Safe-call is not allowed here");
|
MAP.put(UNEXPECTED_SAFE_CALL, "Safe-call is not allowed here");
|
||||||
MAP.put(UNNECESSARY_NOT_NULL_ASSERTION, "Unnecessary non-null assertion (!!) on a non-null receiver of type {0}", RENDER_TYPE);
|
MAP.put(UNNECESSARY_NOT_NULL_ASSERTION, "Unnecessary non-null assertion (!!) on a non-null receiver of type {0}", RENDER_TYPE);
|
||||||
MAP.put(NOT_NULL_ASSERTION_ON_LAMBDA_EXPRESSION, "Non-null assertion (!!) is called on a lambda expression");
|
MAP.put(NOT_NULL_ASSERTION_ON_LAMBDA_EXPRESSION, "Non-null assertion (!!) is called on a lambda expression");
|
||||||
MAP.put(NAME_IN_CONSTRAINT_IS_NOT_A_TYPE_PARAMETER, "{0} does not refer to a type parameter of {1}", new Renderer<KtTypeConstraint>() {
|
MAP.put(NAME_IN_CONSTRAINT_IS_NOT_A_TYPE_PARAMETER, "{0} does not refer to a type parameter of {1}", new DiagnosticParameterRenderer<KtTypeConstraint>() {
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String render(@NotNull KtTypeConstraint typeConstraint) {
|
public String render(@NotNull KtTypeConstraint typeConstraint) {
|
||||||
@@ -561,7 +545,7 @@ public class DefaultErrorMessages {
|
|||||||
MAP.put(INCONSISTENT_TYPE_PARAMETER_VALUES, "Type parameter {0} of ''{1}'' has inconsistent values: {2}", NAME, NAME, RENDER_COLLECTION_OF_TYPES);
|
MAP.put(INCONSISTENT_TYPE_PARAMETER_VALUES, "Type parameter {0} of ''{1}'' has inconsistent values: {2}", NAME, NAME, RENDER_COLLECTION_OF_TYPES);
|
||||||
MAP.put(INCONSISTENT_TYPE_PARAMETER_BOUNDS, "Type parameter {0} of ''{1}'' has inconsistent bounds: {2}", NAME, NAME, RENDER_COLLECTION_OF_TYPES);
|
MAP.put(INCONSISTENT_TYPE_PARAMETER_BOUNDS, "Type parameter {0} of ''{1}'' has inconsistent bounds: {2}", NAME, NAME, RENDER_COLLECTION_OF_TYPES);
|
||||||
|
|
||||||
MAP.put(EQUALITY_NOT_APPLICABLE, "Operator ''{0}'' cannot be applied to ''{1}'' and ''{2}''", new Renderer<KtSimpleNameExpression>() {
|
MAP.put(EQUALITY_NOT_APPLICABLE, "Operator ''{0}'' cannot be applied to ''{1}'' and ''{2}''", new DiagnosticParameterRenderer<KtSimpleNameExpression>() {
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String render(@NotNull KtSimpleNameExpression nameExpression) {
|
public String render(@NotNull KtSimpleNameExpression nameExpression) {
|
||||||
@@ -616,7 +600,7 @@ public class DefaultErrorMessages {
|
|||||||
|
|
||||||
MAP.put(FUNCTION_EXPECTED, "Expression ''{0}''{1} cannot be invoked as a function. " +
|
MAP.put(FUNCTION_EXPECTED, "Expression ''{0}''{1} cannot be invoked as a function. " +
|
||||||
"The function '" + OperatorNameConventions.INVOKE.asString() + "()' is not found",
|
"The function '" + OperatorNameConventions.INVOKE.asString() + "()' is not found",
|
||||||
ELEMENT_TEXT, new Renderer<KotlinType>() {
|
ELEMENT_TEXT, new DiagnosticParameterRenderer<KotlinType>() {
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String render(@NotNull KotlinType type) {
|
public String render(@NotNull KotlinType type) {
|
||||||
@@ -624,7 +608,7 @@ public class DefaultErrorMessages {
|
|||||||
return " of type '" + RENDER_TYPE.render(type) + "'";
|
return " of type '" + RENDER_TYPE.render(type) + "'";
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
MAP.put(FUNCTION_CALL_EXPECTED, "Function invocation ''{0}({1})'' expected", ELEMENT_TEXT, new Renderer<Boolean>() {
|
MAP.put(FUNCTION_CALL_EXPECTED, "Function invocation ''{0}({1})'' expected", ELEMENT_TEXT, new DiagnosticParameterRenderer<Boolean>() {
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String render(@NotNull Boolean hasValueParameters) {
|
public String render(@NotNull Boolean hasValueParameters) {
|
||||||
@@ -665,7 +649,7 @@ public class DefaultErrorMessages {
|
|||||||
|
|
||||||
MAP.put(TYPE_INFERENCE_FAILED_ON_SPECIAL_CONSTRUCT, "Type inference for control flow expression failed. Please specify its type explicitly.");
|
MAP.put(TYPE_INFERENCE_FAILED_ON_SPECIAL_CONSTRUCT, "Type inference for control flow expression failed. Please specify its type explicitly.");
|
||||||
|
|
||||||
MAP.put(WRONG_NUMBER_OF_TYPE_ARGUMENTS, "{0,choice,0#No type arguments|1#Type argument|1<{0,number,integer} type arguments} expected", (Renderer) null);
|
MAP.put(WRONG_NUMBER_OF_TYPE_ARGUMENTS, "{0,choice,0#No type arguments|1#Type argument|1<{0,number,integer} type arguments} expected", (DiagnosticParameterRenderer) null);
|
||||||
MAP.put(NO_TYPE_ARGUMENTS_ON_RHS, "{0,choice,0#No type arguments|1#Type argument|1<{0,number,integer} type arguments} expected. " +
|
MAP.put(NO_TYPE_ARGUMENTS_ON_RHS, "{0,choice,0#No type arguments|1#Type argument|1<{0,number,integer} type arguments} expected. " +
|
||||||
"Use ''{1}'' if you don''t want to pass type arguments", null, STRING);
|
"Use ''{1}'' if you don''t want to pass type arguments", null, STRING);
|
||||||
|
|
||||||
|
|||||||
+7
-8
@@ -20,7 +20,6 @@ import com.intellij.psi.PsiElement;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.kotlin.diagnostics.*;
|
import org.jetbrains.kotlin.diagnostics.*;
|
||||||
import org.jetbrains.kotlin.renderer.Renderer;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -54,29 +53,29 @@ public final class DiagnosticFactoryToRendererMap {
|
|||||||
map.put(factory, new SimpleDiagnosticRenderer(message));
|
map.put(factory, new SimpleDiagnosticRenderer(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
public <E extends PsiElement, A> void put(@NotNull DiagnosticFactory1<E, A> factory, @NotNull String message, @Nullable Renderer<? super A> rendererA) {
|
public <E extends PsiElement, A> void put(@NotNull DiagnosticFactory1<E, A> factory, @NotNull String message, @Nullable DiagnosticParameterRenderer<? super A> rendererA) {
|
||||||
checkMutability();
|
checkMutability();
|
||||||
map.put(factory, new DiagnosticWithParameters1Renderer<A>(message, rendererA));
|
map.put(factory, new DiagnosticWithParameters1Renderer<A>(message, rendererA));
|
||||||
}
|
}
|
||||||
|
|
||||||
public <E extends PsiElement, A> void put(@NotNull DiagnosticFactory1<E, A> factory, @NotNull String message, @NotNull MultiRenderer<? super A> rendererA) {
|
public <E extends PsiElement, A> void put(@NotNull DiagnosticFactory1<E, A> factory, @NotNull String message, @NotNull MultiRenderer<? super A> rendererA) {
|
||||||
checkMutability();
|
checkMutability();
|
||||||
map.put(factory, new DiagnosticWithMultiParametersRenderer<A>(message, rendererA));
|
map.put(factory, new DiagnosticWithParametersMultiRenderer<A>(message, rendererA));
|
||||||
}
|
}
|
||||||
|
|
||||||
public <E extends PsiElement, A, B> void put(@NotNull DiagnosticFactory2<E, A, B> factory,
|
public <E extends PsiElement, A, B> void put(@NotNull DiagnosticFactory2<E, A, B> factory,
|
||||||
@NotNull String message,
|
@NotNull String message,
|
||||||
@Nullable Renderer<? super A> rendererA,
|
@Nullable DiagnosticParameterRenderer<? super A> rendererA,
|
||||||
@Nullable Renderer<? super B> rendererB) {
|
@Nullable DiagnosticParameterRenderer<? super B> rendererB) {
|
||||||
checkMutability();
|
checkMutability();
|
||||||
map.put(factory, new DiagnosticWithParameters2Renderer<A, B>(message, rendererA, rendererB));
|
map.put(factory, new DiagnosticWithParameters2Renderer<A, B>(message, rendererA, rendererB));
|
||||||
}
|
}
|
||||||
|
|
||||||
public <E extends PsiElement, A, B, C> void put(@NotNull DiagnosticFactory3<E, A, B, C> factory,
|
public <E extends PsiElement, A, B, C> void put(@NotNull DiagnosticFactory3<E, A, B, C> factory,
|
||||||
@NotNull String message,
|
@NotNull String message,
|
||||||
@Nullable Renderer<? super A> rendererA,
|
@Nullable DiagnosticParameterRenderer<? super A> rendererA,
|
||||||
@Nullable Renderer<? super B> rendererB,
|
@Nullable DiagnosticParameterRenderer<? super B> rendererB,
|
||||||
@Nullable Renderer<? super C> rendererC) {
|
@Nullable DiagnosticParameterRenderer<? super C> rendererC) {
|
||||||
checkMutability();
|
checkMutability();
|
||||||
map.put(factory, new DiagnosticWithParameters3Renderer<A, B, C>(message, rendererA, rendererB, rendererC));
|
map.put(factory, new DiagnosticWithParameters3Renderer<A, B, C>(message, rendererA, rendererB, rendererC));
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
* Copyright 2010-2016 JetBrains s.r.o.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -14,12 +14,12 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.renderer
|
package org.jetbrains.kotlin.diagnostics.rendering
|
||||||
|
|
||||||
interface Renderer<in O> {
|
interface DiagnosticParameterRenderer<in O> {
|
||||||
fun render(obj: O): String
|
fun render(obj: O): String
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <O> Renderer(block: (O) -> String) = object : Renderer<O> {
|
fun <O> Renderer(block: (O) -> String) = object : DiagnosticParameterRenderer<O> {
|
||||||
override fun render(obj: O) = block(obj)
|
override fun render(obj: O) = block(obj)
|
||||||
}
|
}
|
||||||
+1
-3
@@ -18,10 +18,8 @@ package org.jetbrains.kotlin.diagnostics.rendering;
|
|||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
||||||
import org.jetbrains.kotlin.renderer.Renderer;
|
|
||||||
|
|
||||||
public interface DiagnosticRenderer<D extends Diagnostic> extends Renderer<D> {
|
public interface DiagnosticRenderer<D extends Diagnostic> {
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
|
||||||
String render(@NotNull D diagnostic);
|
String render(@NotNull D diagnostic);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -18,9 +18,8 @@ package org.jetbrains.kotlin.diagnostics.rendering
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||||
import org.jetbrains.kotlin.renderer.Renderer
|
|
||||||
|
|
||||||
fun <P : Any> renderParameter(parameter: P, renderer: Renderer<P>?): Any = renderer?.render(parameter) ?: parameter
|
fun <P : Any> renderParameter(parameter: P, renderer: DiagnosticParameterRenderer<P>?): Any = renderer?.render(parameter) ?: parameter
|
||||||
|
|
||||||
fun ClassDescriptor.renderKindWithName(): String = DescriptorRenderer.getClassKindPrefix(this) + " '" + name + "'"
|
fun ClassDescriptor.renderKindWithName(): String = DescriptorRenderer.getClassKindPrefix(this) + " '" + name + "'"
|
||||||
|
|
||||||
|
|||||||
-35
@@ -1,35 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.diagnostics.rendering;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticWithParameters1;
|
|
||||||
|
|
||||||
public class DiagnosticWithMultiParametersRenderer<A> extends AbstractDiagnosticWithParametersRenderer<DiagnosticWithParameters1<?,A>> {
|
|
||||||
@NotNull private final MultiRenderer<? super A> renderersForA;
|
|
||||||
|
|
||||||
public DiagnosticWithMultiParametersRenderer(@NotNull String message, @NotNull MultiRenderer<? super A> renderersForA) {
|
|
||||||
super(message);
|
|
||||||
this.renderersForA = renderersForA;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public Object[] renderParameters(@NotNull DiagnosticWithParameters1<?, A> diagnostic) {
|
|
||||||
return renderersForA.render(diagnostic.getA());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-37
@@ -1,37 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.diagnostics.rendering;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticWithParameters1;
|
|
||||||
import org.jetbrains.kotlin.renderer.Renderer;
|
|
||||||
|
|
||||||
public class DiagnosticWithParameters1Renderer<A> extends AbstractDiagnosticWithParametersRenderer<DiagnosticWithParameters1<?, A>> {
|
|
||||||
private final Renderer<? super A> rendererForA;
|
|
||||||
|
|
||||||
public DiagnosticWithParameters1Renderer(@NotNull String message, @Nullable Renderer<? super A> rendererForA) {
|
|
||||||
super(message);
|
|
||||||
this.rendererForA = rendererForA;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public Object[] renderParameters(@NotNull DiagnosticWithParameters1<?, A> diagnostic) {
|
|
||||||
return new Object[]{DiagnosticRendererUtilKt.renderParameter(diagnostic.getA(), rendererForA)};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-41
@@ -1,41 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.diagnostics.rendering;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticWithParameters2;
|
|
||||||
import org.jetbrains.kotlin.renderer.Renderer;
|
|
||||||
|
|
||||||
public class DiagnosticWithParameters2Renderer<A, B> extends AbstractDiagnosticWithParametersRenderer<DiagnosticWithParameters2<?, A, B>> {
|
|
||||||
private final Renderer<? super A> rendererForA;
|
|
||||||
private final Renderer<? super B> rendererForB;
|
|
||||||
|
|
||||||
public DiagnosticWithParameters2Renderer(@NotNull String message, @Nullable Renderer<? super A> rendererForA, @Nullable Renderer<? super B> rendererForB) {
|
|
||||||
super(message);
|
|
||||||
this.rendererForA = rendererForA;
|
|
||||||
this.rendererForB = rendererForB;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public Object[] renderParameters(@NotNull DiagnosticWithParameters2<?, A, B> diagnostic) {
|
|
||||||
return new Object[]{
|
|
||||||
DiagnosticRendererUtilKt.renderParameter(diagnostic.getA(), rendererForA),
|
|
||||||
DiagnosticRendererUtilKt.renderParameter(diagnostic.getB(), rendererForB)};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-47
@@ -1,47 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.diagnostics.rendering;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticWithParameters3;
|
|
||||||
import org.jetbrains.kotlin.renderer.Renderer;
|
|
||||||
|
|
||||||
public class DiagnosticWithParameters3Renderer<A, B, C> extends AbstractDiagnosticWithParametersRenderer<DiagnosticWithParameters3<?, A, B, C>> {
|
|
||||||
private final Renderer<? super A> rendererForA;
|
|
||||||
private final Renderer<? super B> rendererForB;
|
|
||||||
private final Renderer<? super C> rendererForC;
|
|
||||||
|
|
||||||
public DiagnosticWithParameters3Renderer(@NotNull String message,
|
|
||||||
@Nullable Renderer<? super A> rendererForA,
|
|
||||||
@Nullable Renderer<? super B> rendererForB,
|
|
||||||
@Nullable Renderer<? super C> rendererForC) {
|
|
||||||
super(message);
|
|
||||||
this.rendererForA = rendererForA;
|
|
||||||
this.rendererForB = rendererForB;
|
|
||||||
this.rendererForC = rendererForC;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public Object[] renderParameters(@NotNull DiagnosticWithParameters3<?, A, B, C> diagnostic) {
|
|
||||||
return new Object[]{
|
|
||||||
DiagnosticRendererUtilKt.renderParameter(diagnostic.getA(), rendererForA),
|
|
||||||
DiagnosticRendererUtilKt.renderParameter(diagnostic.getB(), rendererForB),
|
|
||||||
DiagnosticRendererUtilKt.renderParameter(diagnostic.getC(), rendererForC)};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2016 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.diagnostics.rendering;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
public interface MultiRenderer<O> {
|
|
||||||
@NotNull
|
|
||||||
String[] render(@NotNull O object);
|
|
||||||
}
|
|
||||||
@@ -31,7 +31,6 @@ import org.jetbrains.kotlin.psi.KtClass
|
|||||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||||
import org.jetbrains.kotlin.renderer.Renderer
|
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
import org.jetbrains.kotlin.resolve.MemberComparator
|
import org.jetbrains.kotlin.resolve.MemberComparator
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.*
|
import org.jetbrains.kotlin.resolve.calls.inference.*
|
||||||
@@ -56,7 +55,7 @@ object Renderers {
|
|||||||
|
|
||||||
private val LOG = Logger.getInstance(Renderers::class.java)
|
private val LOG = Logger.getInstance(Renderers::class.java)
|
||||||
|
|
||||||
@JvmField val TO_STRING: Renderer<Any> = Renderer {
|
@JvmField val TO_STRING = Renderer<Any> {
|
||||||
element ->
|
element ->
|
||||||
if (element is DeclarationDescriptor) {
|
if (element is DeclarationDescriptor) {
|
||||||
LOG.warn("Diagnostic renderer TO_STRING was used to render an instance of DeclarationDescriptor.\n"
|
LOG.warn("Diagnostic renderer TO_STRING was used to render an instance of DeclarationDescriptor.\n"
|
||||||
@@ -66,17 +65,17 @@ object Renderers {
|
|||||||
element.toString()
|
element.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val STRING: Renderer<String> = Renderer { it }
|
@JvmField val STRING = Renderer<String> { it }
|
||||||
|
|
||||||
@JvmField val THROWABLE: Renderer<Throwable> = Renderer {
|
@JvmField val THROWABLE = Renderer<Throwable> {
|
||||||
val writer = StringWriter()
|
val writer = StringWriter()
|
||||||
it.printStackTrace(PrintWriter(writer))
|
it.printStackTrace(PrintWriter(writer))
|
||||||
StringUtil.first(writer.toString(), 2048, true)
|
StringUtil.first(writer.toString(), 2048, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val NAME: Renderer<Named> = Renderer { it.name.asString() }
|
@JvmField val NAME = Renderer<Named> { it.name.asString() }
|
||||||
|
|
||||||
@JvmField val DECLARATION_NAME_WITH_KIND: Renderer<DeclarationDescriptor> = Renderer {
|
@JvmField val DECLARATION_NAME_WITH_KIND = Renderer<DeclarationDescriptor> {
|
||||||
val declarationKindWithSpace = when (it) {
|
val declarationKindWithSpace = when (it) {
|
||||||
is PackageFragmentDescriptor -> "package "
|
is PackageFragmentDescriptor -> "package "
|
||||||
is ClassDescriptor -> "${it.renderKind()} "
|
is ClassDescriptor -> "${it.renderKind()} "
|
||||||
@@ -89,7 +88,7 @@ object Renderers {
|
|||||||
"$declarationKindWithSpace'${it.name.asString()}'"
|
"$declarationKindWithSpace'${it.name.asString()}'"
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val NAME_OF_PARENT_OR_FILE: Renderer<DeclarationDescriptor> = Renderer {
|
@JvmField val NAME_OF_PARENT_OR_FILE = Renderer<DeclarationDescriptor> {
|
||||||
if (DescriptorUtils.isTopLevelDeclaration(it) && it is DeclarationDescriptorWithVisibility && it.visibility == Visibilities.PRIVATE) {
|
if (DescriptorUtils.isTopLevelDeclaration(it) && it is DeclarationDescriptorWithVisibility && it.visibility == Visibilities.PRIVATE) {
|
||||||
"file"
|
"file"
|
||||||
}
|
}
|
||||||
@@ -98,21 +97,21 @@ object Renderers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val ELEMENT_TEXT: Renderer<PsiElement> = Renderer { it.text }
|
@JvmField val ELEMENT_TEXT = Renderer<PsiElement> { it.text }
|
||||||
|
|
||||||
@JvmField val DECLARATION_NAME: Renderer<KtNamedDeclaration> = Renderer { it.nameAsSafeName.asString() }
|
@JvmField val DECLARATION_NAME = Renderer<KtNamedDeclaration> { it.nameAsSafeName.asString() }
|
||||||
|
|
||||||
@JvmField val RENDER_CLASS_OR_OBJECT: Renderer<KtClassOrObject> = Renderer {
|
@JvmField val RENDER_CLASS_OR_OBJECT = Renderer {
|
||||||
classOrObject: KtClassOrObject ->
|
classOrObject: KtClassOrObject ->
|
||||||
val name = if (classOrObject.getName() != null) " '" + classOrObject.getName() + "'" else ""
|
val name = if (classOrObject.getName() != null) " '" + classOrObject.getName() + "'" else ""
|
||||||
if (classOrObject is KtClass) "Class" + name else "Object" + name
|
if (classOrObject is KtClass) "Class" + name else "Object" + name
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val RENDER_CLASS_OR_OBJECT_NAME: Renderer<ClassDescriptor> = Renderer { it.renderKindWithName() }
|
@JvmField val RENDER_CLASS_OR_OBJECT_NAME = Renderer<ClassDescriptor> { it.renderKindWithName() }
|
||||||
|
|
||||||
@JvmField val RENDER_TYPE: Renderer<KotlinType> = Renderer { DescriptorRenderer.FQ_NAMES_IN_TYPES.renderType(it) }
|
@JvmField val RENDER_TYPE = Renderer<KotlinType> { DescriptorRenderer.FQ_NAMES_IN_TYPES.renderType(it) }
|
||||||
|
|
||||||
@JvmField val RENDER_POSITION_VARIANCE: Renderer<Variance> = Renderer {
|
@JvmField val RENDER_POSITION_VARIANCE = Renderer {
|
||||||
variance: Variance ->
|
variance: Variance ->
|
||||||
when (variance) {
|
when (variance) {
|
||||||
Variance.INVARIANT -> "invariant"
|
Variance.INVARIANT -> "invariant"
|
||||||
@@ -121,7 +120,7 @@ object Renderers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val AMBIGUOUS_CALLS: Renderer<Collection<ResolvedCall<*>>> = Renderer {
|
@JvmField val AMBIGUOUS_CALLS = Renderer {
|
||||||
calls: Collection<ResolvedCall<*>> ->
|
calls: Collection<ResolvedCall<*>> ->
|
||||||
calls
|
calls
|
||||||
.map { it.resultingDescriptor }
|
.map { it.resultingDescriptor }
|
||||||
@@ -129,7 +128,7 @@ object Renderers {
|
|||||||
.joinToString(separator = "\n", prefix = "\n") { DescriptorRenderer.FQ_NAMES_IN_TYPES.render(it) }
|
.joinToString(separator = "\n", prefix = "\n") { DescriptorRenderer.FQ_NAMES_IN_TYPES.render(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic fun <T> commaSeparated(itemRenderer: Renderer<T>): Renderer<Collection<T>> = Renderer {
|
@JvmStatic fun <T> commaSeparated(itemRenderer: DiagnosticParameterRenderer<T>) = Renderer<Collection<T>> {
|
||||||
collection ->
|
collection ->
|
||||||
buildString {
|
buildString {
|
||||||
val iterator = collection.iterator()
|
val iterator = collection.iterator()
|
||||||
@@ -143,23 +142,23 @@ object Renderers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS_RENDERER: Renderer<InferenceErrorData> = Renderer {
|
@JvmField val TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS_RENDERER = Renderer<InferenceErrorData> {
|
||||||
renderConflictingSubstitutionsInferenceError(it, TabledDescriptorRenderer.create()).toString()
|
renderConflictingSubstitutionsInferenceError(it, TabledDescriptorRenderer.create()).toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR_RENDERER: Renderer<InferenceErrorData> = Renderer {
|
@JvmField val TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR_RENDERER = Renderer<InferenceErrorData> {
|
||||||
renderParameterConstraintError(it, TabledDescriptorRenderer.create()).toString()
|
renderParameterConstraintError(it, TabledDescriptorRenderer.create()).toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER_RENDERER: Renderer<InferenceErrorData> = Renderer {
|
@JvmField val TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER_RENDERER = Renderer<InferenceErrorData> {
|
||||||
renderNoInformationForParameterError(it, TabledDescriptorRenderer.create()).toString()
|
renderNoInformationForParameterError(it, TabledDescriptorRenderer.create()).toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val TYPE_INFERENCE_UPPER_BOUND_VIOLATED_RENDERER: Renderer<InferenceErrorData> = Renderer {
|
@JvmField val TYPE_INFERENCE_UPPER_BOUND_VIOLATED_RENDERER = Renderer<InferenceErrorData> {
|
||||||
renderUpperBoundViolatedInferenceError(it, TabledDescriptorRenderer.create()).toString()
|
renderUpperBoundViolatedInferenceError(it, TabledDescriptorRenderer.create()).toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val TYPE_INFERENCE_CANNOT_CAPTURE_TYPES_RENDERER: Renderer<InferenceErrorData> = Renderer {
|
@JvmField val TYPE_INFERENCE_CANNOT_CAPTURE_TYPES_RENDERER = Renderer<InferenceErrorData> {
|
||||||
renderCannotCaptureTypeParameterError(it, TabledDescriptorRenderer.create()).toString()
|
renderCannotCaptureTypeParameterError(it, TabledDescriptorRenderer.create()).toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -349,7 +348,7 @@ object Renderers {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val CLASSES_OR_SEPARATED: Renderer<Collection<ClassDescriptor>> = Renderer {
|
@JvmField val CLASSES_OR_SEPARATED = Renderer<Collection<ClassDescriptor>> {
|
||||||
descriptors ->
|
descriptors ->
|
||||||
buildString {
|
buildString {
|
||||||
var index = 0
|
var index = 0
|
||||||
@@ -368,9 +367,9 @@ object Renderers {
|
|||||||
|
|
||||||
private fun renderTypes(types: Collection<KotlinType>) = StringUtil.join(types, { RENDER_TYPE.render(it) }, ", ")
|
private fun renderTypes(types: Collection<KotlinType>) = StringUtil.join(types, { RENDER_TYPE.render(it) }, ", ")
|
||||||
|
|
||||||
@JvmField val RENDER_COLLECTION_OF_TYPES: Renderer<Collection<KotlinType>> = Renderer { renderTypes(it) }
|
@JvmField val RENDER_COLLECTION_OF_TYPES = Renderer<Collection<KotlinType>> { renderTypes(it) }
|
||||||
|
|
||||||
private fun renderConstraintSystem(constraintSystem: ConstraintSystem, renderTypeBounds: Renderer<TypeBounds>): String {
|
private fun renderConstraintSystem(constraintSystem: ConstraintSystem, renderTypeBounds: DiagnosticParameterRenderer<TypeBounds>): String {
|
||||||
val typeBounds = linkedSetOf<TypeBounds>()
|
val typeBounds = linkedSetOf<TypeBounds>()
|
||||||
for (variable in constraintSystem.typeVariables) {
|
for (variable in constraintSystem.typeVariables) {
|
||||||
typeBounds.add(constraintSystem.getTypeBounds(variable))
|
typeBounds.add(constraintSystem.getTypeBounds(variable))
|
||||||
@@ -380,9 +379,9 @@ object Renderers {
|
|||||||
ConstraintsUtil.getDebugMessageForStatus(constraintSystem.status)
|
ConstraintsUtil.getDebugMessageForStatus(constraintSystem.status)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val RENDER_CONSTRAINT_SYSTEM: Renderer<ConstraintSystem> = Renderer { renderConstraintSystem(it, RENDER_TYPE_BOUNDS) }
|
@JvmField val RENDER_CONSTRAINT_SYSTEM = Renderer<ConstraintSystem> { renderConstraintSystem(it, RENDER_TYPE_BOUNDS) }
|
||||||
|
|
||||||
@JvmField val RENDER_CONSTRAINT_SYSTEM_SHORT: Renderer<ConstraintSystem> = Renderer { renderConstraintSystem(it, RENDER_TYPE_BOUNDS_SHORT) }
|
@JvmField val RENDER_CONSTRAINT_SYSTEM_SHORT = Renderer<ConstraintSystem> { renderConstraintSystem(it, RENDER_TYPE_BOUNDS_SHORT) }
|
||||||
|
|
||||||
private fun renderTypeBounds(typeBounds: TypeBounds, short: Boolean): String {
|
private fun renderTypeBounds(typeBounds: TypeBounds, short: Boolean): String {
|
||||||
val renderBound = { bound: Bound ->
|
val renderBound = { bound: Bound ->
|
||||||
@@ -399,9 +398,9 @@ object Renderers {
|
|||||||
"$typeVariableName ${StringUtil.join(typeBounds.bounds, renderBound, ", ")}"
|
"$typeVariableName ${StringUtil.join(typeBounds.bounds, renderBound, ", ")}"
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val RENDER_TYPE_BOUNDS: Renderer<TypeBounds> = Renderer { renderTypeBounds(it, short = false) }
|
@JvmField val RENDER_TYPE_BOUNDS = Renderer<TypeBounds> { renderTypeBounds(it, short = false) }
|
||||||
|
|
||||||
@JvmField val RENDER_TYPE_BOUNDS_SHORT: Renderer<TypeBounds> = Renderer { renderTypeBounds(it, short = true) }
|
@JvmField val RENDER_TYPE_BOUNDS_SHORT = Renderer<TypeBounds> { renderTypeBounds(it, short = true) }
|
||||||
|
|
||||||
private fun renderDebugMessage(message: String, inferenceErrorData: InferenceErrorData) = buildString {
|
private fun renderDebugMessage(message: String, inferenceErrorData: InferenceErrorData) = buildString {
|
||||||
append(message)
|
append(message)
|
||||||
@@ -425,7 +424,7 @@ object Renderers {
|
|||||||
|
|
||||||
private val WHEN_MISSING_LIMIT = 7
|
private val WHEN_MISSING_LIMIT = 7
|
||||||
|
|
||||||
@JvmField val RENDER_WHEN_MISSING_CASES: Renderer<List<WhenMissingCase>> = Renderer {
|
@JvmField val RENDER_WHEN_MISSING_CASES = Renderer<List<WhenMissingCase>> {
|
||||||
if (!it.hasUnknown) {
|
if (!it.hasUnknown) {
|
||||||
val list = it.joinToString(", ", limit = WHEN_MISSING_LIMIT) { "'$it'" }
|
val list = it.joinToString(", ", limit = WHEN_MISSING_LIMIT) { "'$it'" }
|
||||||
val branches = if (it.size > 1) "branches" else "branch"
|
val branches = if (it.size > 1) "branches" else "branch"
|
||||||
@@ -435,4 +434,18 @@ object Renderers {
|
|||||||
"'else' branch"
|
"'else' branch"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JvmField val FQ_NAMES_IN_TYPES = DescriptorRenderer.FQ_NAMES_IN_TYPES.asRenderer()
|
||||||
|
@JvmField val COMPACT = DescriptorRenderer.COMPACT.asRenderer()
|
||||||
|
@JvmField val SHORT_NAMES_IN_TYPES = DescriptorRenderer.SHORT_NAMES_IN_TYPES.asRenderer()
|
||||||
|
@JvmField val COMPACT_WITH_MODIFIERS = DescriptorRenderer.COMPACT_WITH_MODIFIERS.asRenderer()
|
||||||
|
@JvmField val DEPRECATION_RENDERER = DescriptorRenderer.ONLY_NAMES_WITH_SHORT_TYPES.withOptions {
|
||||||
|
withoutTypeParameters = false
|
||||||
|
receiverAfterName = false
|
||||||
|
renderAccessors = true
|
||||||
|
}.asRenderer()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun DescriptorRenderer.asRenderer() = Renderer<DeclarationDescriptor> {
|
||||||
|
render(it)
|
||||||
}
|
}
|
||||||
+1
-2
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.Table
|
|||||||
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.TableRenderer.TableRow;
|
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.TableRenderer.TableRow;
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.TextRenderer.TextElement;
|
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.TextRenderer.TextElement;
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer;
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer;
|
||||||
import org.jetbrains.kotlin.renderer.Renderer;
|
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.constraintPosition.ConstraintPosition;
|
import org.jetbrains.kotlin.resolve.calls.inference.constraintPosition.ConstraintPosition;
|
||||||
import org.jetbrains.kotlin.types.KotlinType;
|
import org.jetbrains.kotlin.types.KotlinType;
|
||||||
|
|
||||||
@@ -156,7 +155,7 @@ public class TabledDescriptorRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public Renderer<KotlinType> getTypeRenderer() {
|
public DiagnosticParameterRenderer<KotlinType> getTypeRenderer() {
|
||||||
return Renderers.RENDER_TYPE;
|
return Renderers.RENDER_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+93
@@ -0,0 +1,93 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2016 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.diagnostics.rendering
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.diagnostics.*
|
||||||
|
import java.text.MessageFormat
|
||||||
|
|
||||||
|
|
||||||
|
abstract class AbstractDiagnosticWithParametersRenderer<D : Diagnostic> protected constructor(message: String) : DiagnosticRenderer<D> {
|
||||||
|
private val messageFormat: MessageFormat
|
||||||
|
|
||||||
|
init {
|
||||||
|
messageFormat = MessageFormat(message)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun render(obj: D): String {
|
||||||
|
return messageFormat.format(renderParameters(obj))
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract fun renderParameters(diagnostic: D): Array<out Any>
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class DiagnosticWithParameters1Renderer<A : Any>(
|
||||||
|
message: String,
|
||||||
|
private val rendererForA: DiagnosticParameterRenderer<A>?
|
||||||
|
) : AbstractDiagnosticWithParametersRenderer<DiagnosticWithParameters1<*, A>>(message) {
|
||||||
|
|
||||||
|
override fun renderParameters(diagnostic: DiagnosticWithParameters1<*, A>): Array<out Any> {
|
||||||
|
return arrayOf(renderParameter(diagnostic.a, rendererForA))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class DiagnosticWithParameters2Renderer<A : Any, B : Any>(
|
||||||
|
message: String,
|
||||||
|
private val rendererForA: DiagnosticParameterRenderer<A>?,
|
||||||
|
private val rendererForB: DiagnosticParameterRenderer<B>?
|
||||||
|
) : AbstractDiagnosticWithParametersRenderer<DiagnosticWithParameters2<*, A, B>>(message) {
|
||||||
|
|
||||||
|
override fun renderParameters(diagnostic: DiagnosticWithParameters2<*, A, B>): Array<out Any> {
|
||||||
|
return arrayOf(
|
||||||
|
renderParameter(diagnostic.a, rendererForA),
|
||||||
|
renderParameter(diagnostic.b, rendererForB)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DiagnosticWithParameters3Renderer<A : Any, B : Any, C : Any>(
|
||||||
|
message: String,
|
||||||
|
private val rendererForA: DiagnosticParameterRenderer<A>?,
|
||||||
|
private val rendererForB: DiagnosticParameterRenderer<B>?,
|
||||||
|
private val rendererForC: DiagnosticParameterRenderer<C>?
|
||||||
|
) : AbstractDiagnosticWithParametersRenderer<DiagnosticWithParameters3<*, A, B, C>>(message) {
|
||||||
|
|
||||||
|
override fun renderParameters(diagnostic: DiagnosticWithParameters3<*, A, B, C>): Array<out Any> {
|
||||||
|
return arrayOf(
|
||||||
|
renderParameter(diagnostic.a, rendererForA),
|
||||||
|
renderParameter(diagnostic.b, rendererForB),
|
||||||
|
renderParameter(diagnostic.c, rendererForC)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DiagnosticWithParametersMultiRenderer<A>(
|
||||||
|
message: String,
|
||||||
|
private val renderer: MultiRenderer<A>
|
||||||
|
) : AbstractDiagnosticWithParametersRenderer<DiagnosticWithParameters1<*, A>>(message) {
|
||||||
|
|
||||||
|
override fun renderParameters(diagnostic: DiagnosticWithParameters1<*, A>): Array<out Any> {
|
||||||
|
return renderer.render(diagnostic.a)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
interface MultiRenderer<in A> {
|
||||||
|
fun render(a: A): Array<String>
|
||||||
|
}
|
||||||
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.types.KotlinType
|
|||||||
import org.jetbrains.kotlin.types.TypeConstructor
|
import org.jetbrains.kotlin.types.TypeConstructor
|
||||||
import org.jetbrains.kotlin.types.TypeProjection
|
import org.jetbrains.kotlin.types.TypeProjection
|
||||||
|
|
||||||
abstract class DescriptorRenderer : Renderer<DeclarationDescriptor> {
|
abstract class DescriptorRenderer {
|
||||||
fun withOptions(changeOptions: DescriptorRendererOptions.() -> Unit): DescriptorRenderer {
|
fun withOptions(changeOptions: DescriptorRendererOptions.() -> Unit): DescriptorRenderer {
|
||||||
val options = (this as DescriptorRendererImpl).options.copy()
|
val options = (this as DescriptorRendererImpl).options.copy()
|
||||||
options.changeOptions()
|
options.changeOptions()
|
||||||
@@ -48,7 +48,7 @@ abstract class DescriptorRenderer : Renderer<DeclarationDescriptor> {
|
|||||||
|
|
||||||
abstract fun renderAnnotation(annotation: AnnotationDescriptor, target: AnnotationUseSiteTarget? = null): String
|
abstract fun renderAnnotation(annotation: AnnotationDescriptor, target: AnnotationUseSiteTarget? = null): String
|
||||||
|
|
||||||
override abstract fun render(declarationDescriptor: DeclarationDescriptor): String
|
abstract fun render(declarationDescriptor: DeclarationDescriptor): String
|
||||||
|
|
||||||
abstract fun renderValueParameters(parameters: Collection<ValueParameterDescriptor>, synthesizedParameterNames: Boolean): String
|
abstract fun renderValueParameters(parameters: Collection<ValueParameterDescriptor>, synthesizedParameterNames: Boolean): String
|
||||||
|
|
||||||
|
|||||||
+6
-2
@@ -22,12 +22,16 @@ import kotlin.jvm.functions.Function1;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor;
|
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor;
|
||||||
|
import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticParameterRenderer;
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer;
|
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer;
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.TableRenderer.DescriptorRow;
|
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.TableRenderer.DescriptorRow;
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.TableRenderer.FunctionArgumentsRow;
|
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.TableRenderer.FunctionArgumentsRow;
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.TableRenderer.TableRow;
|
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.TableRenderer.TableRow;
|
||||||
import org.jetbrains.kotlin.idea.highlighter.renderersUtil.RenderersUtilKt;
|
import org.jetbrains.kotlin.idea.highlighter.renderersUtil.RenderersUtilKt;
|
||||||
import org.jetbrains.kotlin.renderer.*;
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer;
|
||||||
|
import org.jetbrains.kotlin.renderer.DescriptorRendererModifier;
|
||||||
|
import org.jetbrains.kotlin.renderer.DescriptorRendererOptions;
|
||||||
|
import org.jetbrains.kotlin.renderer.RenderingFormat;
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.constraintPosition.ConstraintPosition;
|
import org.jetbrains.kotlin.resolve.calls.inference.constraintPosition.ConstraintPosition;
|
||||||
import org.jetbrains.kotlin.types.KotlinType;
|
import org.jetbrains.kotlin.types.KotlinType;
|
||||||
|
|
||||||
@@ -43,7 +47,7 @@ public class HtmlTabledDescriptorRenderer extends TabledDescriptorRenderer {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Renderer<KotlinType> getTypeRenderer() {
|
public DiagnosticParameterRenderer<KotlinType> getTypeRenderer() {
|
||||||
return IdeRenderers.HTML_RENDER_TYPE;
|
return IdeRenderers.HTML_RENDER_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+11
-12
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.diagnostics.TypeMismatchDueToTypeProjectionsData;
|
|||||||
import org.jetbrains.kotlin.diagnostics.rendering.*;
|
import org.jetbrains.kotlin.diagnostics.rendering.*;
|
||||||
import org.jetbrains.kotlin.js.resolve.diagnostics.ErrorsJs;
|
import org.jetbrains.kotlin.js.resolve.diagnostics.ErrorsJs;
|
||||||
import org.jetbrains.kotlin.js.resolve.diagnostics.JsCallDataHtmlRenderer;
|
import org.jetbrains.kotlin.js.resolve.diagnostics.JsCallDataHtmlRenderer;
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer;
|
|
||||||
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
|
||||||
@@ -76,7 +75,7 @@ public class IdeErrorMessages {
|
|||||||
HTML_RENDER_TYPE.render(object.getExpectedType()),
|
HTML_RENDER_TYPE.render(object.getExpectedType()),
|
||||||
HTML_RENDER_TYPE.render(object.getExpressionType()),
|
HTML_RENDER_TYPE.render(object.getExpressionType()),
|
||||||
HTML_RENDER_TYPE.render(object.getReceiverType()),
|
HTML_RENDER_TYPE.render(object.getReceiverType()),
|
||||||
DescriptorRenderer.HTML.render(object.getCallableDescriptor())
|
HTML.render(object.getCallableDescriptor())
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -110,30 +109,30 @@ public class IdeErrorMessages {
|
|||||||
"<tr><td>Parameter:</td><td>{1}</td></tr></table></html>", HTML_RENDER_TYPE, HTML_RENDER_TYPE);
|
"<tr><td>Parameter:</td><td>{1}</td></tr></table></html>", HTML_RENDER_TYPE, HTML_RENDER_TYPE);
|
||||||
|
|
||||||
MAP.put(RETURN_TYPE_MISMATCH_ON_OVERRIDE, "<html>Return type is ''{0}'', which is not a subtype of overridden<br/>" +
|
MAP.put(RETURN_TYPE_MISMATCH_ON_OVERRIDE, "<html>Return type is ''{0}'', which is not a subtype of overridden<br/>" +
|
||||||
"{1}</html>", HTML_RENDER_RETURN_TYPE, DescriptorRenderer.HTML);
|
"{1}</html>", HTML_RENDER_RETURN_TYPE, HTML);
|
||||||
MAP.put(RETURN_TYPE_MISMATCH_ON_INHERITANCE, "<html>Return types of inherited members are incompatible:<br/>{0},<br/>{1}</html>",
|
MAP.put(RETURN_TYPE_MISMATCH_ON_INHERITANCE, "<html>Return types of inherited members are incompatible:<br/>{0},<br/>{1}</html>",
|
||||||
DescriptorRenderer.HTML, DescriptorRenderer.HTML);
|
HTML, HTML);
|
||||||
|
|
||||||
MAP.put(PROPERTY_TYPE_MISMATCH_ON_OVERRIDE, "<html>Property type is ''{0}'', which is not a subtype type of overridden<br/>" +
|
MAP.put(PROPERTY_TYPE_MISMATCH_ON_OVERRIDE, "<html>Property type is ''{0}'', which is not a subtype type of overridden<br/>" +
|
||||||
"{1}</html>", HTML_RENDER_RETURN_TYPE, DescriptorRenderer.HTML);
|
"{1}</html>", HTML_RENDER_RETURN_TYPE, HTML);
|
||||||
MAP.put(VAR_TYPE_MISMATCH_ON_OVERRIDE, "<html>Var-property type is ''{0}'', which is not a type of overridden<br/>" +
|
MAP.put(VAR_TYPE_MISMATCH_ON_OVERRIDE, "<html>Var-property type is ''{0}'', which is not a type of overridden<br/>" +
|
||||||
"{1}</html>", HTML_RENDER_RETURN_TYPE, DescriptorRenderer.HTML);
|
"{1}</html>", HTML_RENDER_RETURN_TYPE, HTML);
|
||||||
MAP.put(PROPERTY_TYPE_MISMATCH_ON_INHERITANCE, "<html>Types of inherited properties are incompatible:<br/>{0},<br/>{1}</html>",
|
MAP.put(PROPERTY_TYPE_MISMATCH_ON_INHERITANCE, "<html>Types of inherited properties are incompatible:<br/>{0},<br/>{1}</html>",
|
||||||
DescriptorRenderer.HTML, DescriptorRenderer.HTML);
|
HTML, HTML);
|
||||||
MAP.put(VAR_TYPE_MISMATCH_ON_INHERITANCE, "<html>Types of inherited var-properties do not match:<br/>{0},<br/>{1}</html>",
|
MAP.put(VAR_TYPE_MISMATCH_ON_INHERITANCE, "<html>Types of inherited var-properties do not match:<br/>{0},<br/>{1}</html>",
|
||||||
DescriptorRenderer.HTML, DescriptorRenderer.HTML);
|
HTML, HTML);
|
||||||
|
|
||||||
MAP.put(VAR_OVERRIDDEN_BY_VAL, "<html>Val-property cannot override var-property<br />" +
|
MAP.put(VAR_OVERRIDDEN_BY_VAL, "<html>Val-property cannot override var-property<br />" +
|
||||||
"{1}</html>", DescriptorRenderer.HTML, DescriptorRenderer.HTML);
|
"{1}</html>", HTML, HTML);
|
||||||
MAP.put(VAR_OVERRIDDEN_BY_VAL_BY_DELEGATION, "<html>Val-property cannot override var-property<br />" +
|
MAP.put(VAR_OVERRIDDEN_BY_VAL_BY_DELEGATION, "<html>Val-property cannot override var-property<br />" +
|
||||||
"{1}</html>", DescriptorRenderer.HTML, DescriptorRenderer.HTML);
|
"{1}</html>", HTML, HTML);
|
||||||
|
|
||||||
MAP.put(ABSTRACT_MEMBER_NOT_IMPLEMENTED, "<html>{0} must be declared abstract or implement abstract member<br/>" +
|
MAP.put(ABSTRACT_MEMBER_NOT_IMPLEMENTED, "<html>{0} must be declared abstract or implement abstract member<br/>" +
|
||||||
"{1}</html>", RENDER_CLASS_OR_OBJECT,
|
"{1}</html>", RENDER_CLASS_OR_OBJECT,
|
||||||
DescriptorRenderer.HTML);
|
HTML);
|
||||||
|
|
||||||
MAP.put(MANY_IMPL_MEMBER_NOT_IMPLEMENTED, "<html>{0} must override {1}<br />because it inherits many implementations of it</html>",
|
MAP.put(MANY_IMPL_MEMBER_NOT_IMPLEMENTED, "<html>{0} must override {1}<br />because it inherits many implementations of it</html>",
|
||||||
RENDER_CLASS_OR_OBJECT, DescriptorRenderer.HTML);
|
RENDER_CLASS_OR_OBJECT, HTML);
|
||||||
MAP.put(CONFLICTING_OVERLOADS, "<html>''{0}''<br />conflicts with another declaration in {1}</html>",
|
MAP.put(CONFLICTING_OVERLOADS, "<html>''{0}''<br />conflicts with another declaration in {1}</html>",
|
||||||
IdeRenderers.HTML_COMPACT_WITH_MODIFIERS, Renderers.DECLARATION_NAME_WITH_KIND);
|
IdeRenderers.HTML_COMPACT_WITH_MODIFIERS, Renderers.DECLARATION_NAME_WITH_KIND);
|
||||||
|
|
||||||
|
|||||||
@@ -17,10 +17,11 @@
|
|||||||
package org.jetbrains.kotlin.idea.highlighter
|
package org.jetbrains.kotlin.idea.highlighter
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||||
|
import org.jetbrains.kotlin.diagnostics.rendering.Renderer
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.Renderers
|
import org.jetbrains.kotlin.diagnostics.rendering.Renderers
|
||||||
|
import org.jetbrains.kotlin.diagnostics.rendering.asRenderer
|
||||||
import org.jetbrains.kotlin.idea.highlighter.renderersUtil.renderResolvedCall
|
import org.jetbrains.kotlin.idea.highlighter.renderersUtil.renderResolvedCall
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||||
import org.jetbrains.kotlin.renderer.Renderer
|
|
||||||
import org.jetbrains.kotlin.resolve.MemberComparator
|
import org.jetbrains.kotlin.resolve.MemberComparator
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.InferenceErrorData
|
import org.jetbrains.kotlin.resolve.calls.inference.InferenceErrorData
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
||||||
@@ -30,7 +31,7 @@ import kotlin.comparisons.compareBy
|
|||||||
|
|
||||||
object IdeRenderers {
|
object IdeRenderers {
|
||||||
|
|
||||||
@JvmField val HTML_AMBIGUOUS_CALLS: Renderer<Collection<ResolvedCall<*>>> = Renderer {
|
@JvmField val HTML_AMBIGUOUS_CALLS = Renderer {
|
||||||
calls: Collection<ResolvedCall<*>> ->
|
calls: Collection<ResolvedCall<*>> ->
|
||||||
calls
|
calls
|
||||||
.map { it.resultingDescriptor }
|
.map { it.resultingDescriptor }
|
||||||
@@ -38,11 +39,11 @@ object IdeRenderers {
|
|||||||
.joinToString("") { "<li>${DescriptorRenderer.HTML.render(it)}</li>" }
|
.joinToString("") { "<li>${DescriptorRenderer.HTML.render(it)}</li>" }
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val HTML_RENDER_TYPE: Renderer<KotlinType> = Renderer {
|
@JvmField val HTML_RENDER_TYPE = Renderer<KotlinType> {
|
||||||
DescriptorRenderer.HTML.renderType(it)
|
DescriptorRenderer.HTML.renderType(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val HTML_NONE_APPLICABLE_CALLS: Renderer<Collection<ResolvedCall<*>>> = Renderer {
|
@JvmField val HTML_NONE_APPLICABLE_CALLS= Renderer {
|
||||||
calls: Collection<ResolvedCall<*>> ->
|
calls: Collection<ResolvedCall<*>> ->
|
||||||
val comparator = compareBy(MemberComparator.INSTANCE) { c: ResolvedCall<*> -> c.resultingDescriptor }
|
val comparator = compareBy(MemberComparator.INSTANCE) { c: ResolvedCall<*> -> c.resultingDescriptor }
|
||||||
calls
|
calls
|
||||||
@@ -50,32 +51,32 @@ object IdeRenderers {
|
|||||||
.joinToString("") { "<li>${renderResolvedCall(it)}</li>" }
|
.joinToString("") { "<li>${renderResolvedCall(it)}</li>" }
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val HTML_TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS_RENDERER: Renderer<InferenceErrorData> = Renderer {
|
@JvmField val HTML_TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS_RENDERER = Renderer<InferenceErrorData> {
|
||||||
Renderers.renderConflictingSubstitutionsInferenceError(it, HtmlTabledDescriptorRenderer.create()).toString()
|
Renderers.renderConflictingSubstitutionsInferenceError(it, HtmlTabledDescriptorRenderer.create()).toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val HTML_TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR_RENDERER: Renderer<InferenceErrorData> = Renderer {
|
@JvmField val HTML_TYPE_INFERENCE_PARAMETER_CONSTRAINT_ERROR_RENDERER = Renderer<InferenceErrorData> {
|
||||||
Renderers.renderParameterConstraintError(it, HtmlTabledDescriptorRenderer.create()).toString()
|
Renderers.renderParameterConstraintError(it, HtmlTabledDescriptorRenderer.create()).toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val HTML_TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER_RENDERER: Renderer<InferenceErrorData> = Renderer {
|
@JvmField val HTML_TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER_RENDERER = Renderer<InferenceErrorData> {
|
||||||
Renderers.renderNoInformationForParameterError(it, HtmlTabledDescriptorRenderer.create()).toString()
|
Renderers.renderNoInformationForParameterError(it, HtmlTabledDescriptorRenderer.create()).toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val HTML_TYPE_INFERENCE_UPPER_BOUND_VIOLATED_RENDERER: Renderer<InferenceErrorData> = Renderer {
|
@JvmField val HTML_TYPE_INFERENCE_UPPER_BOUND_VIOLATED_RENDERER = Renderer<InferenceErrorData> {
|
||||||
Renderers.renderUpperBoundViolatedInferenceError(it, HtmlTabledDescriptorRenderer.create()).toString()
|
Renderers.renderUpperBoundViolatedInferenceError(it, HtmlTabledDescriptorRenderer.create()).toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val HTML_RENDER_RETURN_TYPE: Renderer<CallableMemberDescriptor> = Renderer {
|
@JvmField val HTML_RENDER_RETURN_TYPE = Renderer<CallableMemberDescriptor> {
|
||||||
val returnType = it.returnType!!
|
val returnType = it.returnType!!
|
||||||
DescriptorRenderer.HTML.renderType(returnType)
|
DescriptorRenderer.HTML.renderType(returnType)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val HTML_COMPACT_WITH_MODIFIERS: DescriptorRenderer = DescriptorRenderer.HTML.withOptions {
|
@JvmField val HTML_COMPACT_WITH_MODIFIERS = DescriptorRenderer.HTML.withOptions {
|
||||||
withDefinedIn = false
|
withDefinedIn = false
|
||||||
}
|
}.asRenderer()
|
||||||
|
|
||||||
@JvmField val HTML_CONFLICTING_JVM_DECLARATIONS_DATA: Renderer<ConflictingJvmDeclarationsData> = Renderer {
|
@JvmField val HTML_CONFLICTING_JVM_DECLARATIONS_DATA = Renderer {
|
||||||
data: ConflictingJvmDeclarationsData ->
|
data: ConflictingJvmDeclarationsData ->
|
||||||
|
|
||||||
val conflicts = data.signatureOrigins
|
val conflicts = data.signatureOrigins
|
||||||
@@ -86,7 +87,9 @@ object IdeRenderers {
|
|||||||
"The following declarations have the same JVM signature (<code>${data.signature.name}${data.signature.desc}</code>):<br/>\n<ul>\n$conflicts</ul>"
|
"The following declarations have the same JVM signature (<code>${data.signature.name}${data.signature.desc}</code>):<br/>\n<ul>\n$conflicts</ul>"
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmField val HTML_THROWABLE: Renderer<Throwable> = Renderer {
|
@JvmField val HTML_THROWABLE = Renderer<Throwable> {
|
||||||
Renderers.THROWABLE.render(it).replace("\n", "<br/>")
|
Renderers.THROWABLE.render(it).replace("\n", "<br/>")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JvmField val HTML = DescriptorRenderer.HTML.asRenderer()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,9 +18,9 @@ package org.jetbrains.kotlin.js.resolve.diagnostics
|
|||||||
|
|
||||||
import com.google.gwt.dev.js.rhino.Utils.isEndOfLine
|
import com.google.gwt.dev.js.rhino.Utils.isEndOfLine
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.renderer.Renderer
|
import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticParameterRenderer
|
||||||
|
|
||||||
object RenderFirstLineOfElementText : Renderer<PsiElement> {
|
object RenderFirstLineOfElementText : DiagnosticParameterRenderer<PsiElement> {
|
||||||
override fun render(element: PsiElement): String {
|
override fun render(element: PsiElement): String {
|
||||||
val text = element.text
|
val text = element.text
|
||||||
val index = text.indexOf('\n')
|
val index = text.indexOf('\n')
|
||||||
@@ -28,7 +28,7 @@ object RenderFirstLineOfElementText : Renderer<PsiElement> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class JsCallDataRenderer : Renderer<JsCallData> {
|
abstract class JsCallDataRenderer : DiagnosticParameterRenderer<JsCallData> {
|
||||||
protected abstract fun format(data: JsCallDataWithCode): String
|
protected abstract fun format(data: JsCallDataWithCode): String
|
||||||
|
|
||||||
override fun render(data: JsCallData): String =
|
override fun render(data: JsCallData): String =
|
||||||
|
|||||||
Reference in New Issue
Block a user