No need to shorten non-affected references in quickfixes
This commit is contained in:
@@ -92,34 +92,12 @@ public object ShortenReferences {
|
||||
}
|
||||
}
|
||||
|
||||
fun processAllReferencesInFile(descriptors: List<DeclarationDescriptor>, file: JetFile) {
|
||||
val renderedDescriptors = descriptors.map { it.asString() }
|
||||
val referenceToContext = resolveReferencesInFile(file).filter { e ->
|
||||
val (ref, context) = e
|
||||
val renderedTargets = ref.getTargets(context).map { it.asString() }
|
||||
ref is JetSimpleNameExpression && renderedDescriptors.any { it in renderedTargets }
|
||||
}
|
||||
shortenReferencesInFile(
|
||||
file,
|
||||
referenceToContext.keySet().map { (it as JetSimpleNameExpression).getQualifiedElement() },
|
||||
referenceToContext,
|
||||
{ FilterResult.PROCESS }
|
||||
)
|
||||
}
|
||||
|
||||
private enum class FilterResult {
|
||||
SKIP
|
||||
GO_INSIDE
|
||||
PROCESS
|
||||
}
|
||||
|
||||
private fun resolveReferencesInFile(
|
||||
file: JetFile,
|
||||
fileElements: List<JetElement> = Collections.singletonList(file)
|
||||
): Map<JetReferenceExpression, BindingContext> {
|
||||
return JetFileReferencesResolver.resolve(file, fileElements, resolveShortNames = false)
|
||||
}
|
||||
|
||||
private fun shortenReferencesInFile(
|
||||
file: JetFile,
|
||||
elements: List<JetElement>,
|
||||
@@ -135,7 +113,7 @@ public object ShortenReferences {
|
||||
private fun process(elements: Iterable<JetElement>, elementFilter: (PsiElement) -> FilterResult) {
|
||||
for ((file, fileElements) in elements.groupBy { element -> element.getContainingJetFile() }) {
|
||||
// first resolve all qualified references - optimization
|
||||
val referenceToContext = resolveReferencesInFile(file, fileElements)
|
||||
val referenceToContext = JetFileReferencesResolver.resolve(file, fileElements, resolveShortNames = false)
|
||||
shortenReferencesInFile(file, fileElements, referenceToContext, elementFilter)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,7 +116,6 @@ public class AddFunctionParametersFix extends ChangeFunctionSignatureFix {
|
||||
protected void invoke(@NotNull Project project, Editor editor, JetFile file) {
|
||||
BindingContext bindingContext = ResolvePackage.analyzeFully((JetFile) callElement.getContainingFile());
|
||||
runChangeSignature(project, functionDescriptor, addParameterConfiguration(), bindingContext, callElement, getText());
|
||||
QuickFixUtil.shortenReferencesOfTypes(typesToShorten, file);
|
||||
}
|
||||
|
||||
private JetChangeSignatureConfiguration addParameterConfiguration() {
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticWithParameters2;
|
||||
import org.jetbrains.kotlin.diagnostics.Errors;
|
||||
import org.jetbrains.kotlin.idea.JetBundle;
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage;
|
||||
import org.jetbrains.kotlin.idea.codeInsight.ShortenReferences;
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers;
|
||||
import org.jetbrains.kotlin.psi.*;
|
||||
import org.jetbrains.kotlin.resolve.BindingContext;
|
||||
@@ -83,10 +84,16 @@ public class CastExpressionFix extends JetIntentionAction<JetExpression> {
|
||||
(JetParenthesizedExpression) element.replace(psiFactory.createExpression("(" + castExpression.getText() + ")"));
|
||||
|
||||
if (JetPsiUtil.areParenthesesUseless(castExpressionInParentheses)) {
|
||||
castExpressionInParentheses.replace(castExpression);
|
||||
castExpression = (JetBinaryExpressionWithTypeRHS) castExpressionInParentheses.replace(castExpression);
|
||||
}
|
||||
else {
|
||||
castExpression = (JetBinaryExpressionWithTypeRHS) castExpressionInParentheses.getExpression();
|
||||
assert castExpression != null;
|
||||
}
|
||||
|
||||
QuickFixUtil.shortenReferencesOfType(type, file);
|
||||
JetTypeReference typeRef = castExpression.getRight();
|
||||
assert typeRef != null;
|
||||
ShortenReferences.INSTANCE$.process(typeRef);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -19,12 +19,12 @@ package org.jetbrains.kotlin.idea.quickfix;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
||||
import org.jetbrains.kotlin.idea.JetBundle;
|
||||
import org.jetbrains.kotlin.idea.codeInsight.ShortenReferences;
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers;
|
||||
import org.jetbrains.kotlin.psi.*;
|
||||
import org.jetbrains.kotlin.types.JetType;
|
||||
@@ -67,24 +67,21 @@ public class ChangeAccessorTypeFix extends JetIntentionAction<JetPropertyAccesso
|
||||
|
||||
@Override
|
||||
public void invoke(@NotNull Project project, Editor editor, JetFile file) throws IncorrectOperationException {
|
||||
JetPropertyAccessor newElement = (JetPropertyAccessor) element.copy();
|
||||
JetTypeReference newTypeReference = JetPsiFactory(file).createType(IdeDescriptorRenderers.SOURCE_CODE.renderType(type));
|
||||
|
||||
JetTypeReference typeReference;
|
||||
if (element.isGetter()) {
|
||||
JetTypeReference returnTypeReference = newElement.getReturnTypeReference();
|
||||
assert returnTypeReference != null;
|
||||
CodeEditUtil.replaceChild(newElement.getNode(), returnTypeReference.getNode(), newTypeReference.getNode());
|
||||
typeReference = element.getReturnTypeReference();
|
||||
}
|
||||
else {
|
||||
JetParameter parameter = newElement.getParameter();
|
||||
JetParameter parameter = element.getParameter();
|
||||
assert parameter != null;
|
||||
JetTypeReference typeReference = parameter.getTypeReference();
|
||||
assert typeReference != null;
|
||||
CodeEditUtil.replaceChild(parameter.getNode(), typeReference.getNode(), newTypeReference.getNode());
|
||||
typeReference = parameter.getTypeReference();
|
||||
}
|
||||
element.replace(newElement);
|
||||
assert typeReference != null;
|
||||
|
||||
QuickFixUtil.shortenReferencesOfType(type, file);
|
||||
newTypeReference = (JetTypeReference) typeReference.replace(newTypeReference);
|
||||
ShortenReferences.INSTANCE$.process(newTypeReference);
|
||||
}
|
||||
|
||||
public static JetSingleIntentionActionFactory createFactory() {
|
||||
|
||||
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
||||
import org.jetbrains.kotlin.idea.JetBundle;
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage;
|
||||
import org.jetbrains.kotlin.idea.codeInsight.ShortenReferences;
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers;
|
||||
import org.jetbrains.kotlin.psi.*;
|
||||
import org.jetbrains.kotlin.resolve.BindingContext;
|
||||
@@ -129,8 +130,9 @@ public class ChangeFunctionLiteralReturnTypeFix extends JetIntentionAction<JetFu
|
||||
@Override
|
||||
public void invoke(@NotNull Project project, Editor editor, JetFile file) throws IncorrectOperationException {
|
||||
if (functionLiteralReturnTypeRef != null) {
|
||||
functionLiteralReturnTypeRef.replace(JetPsiFactory(file).createType(IdeDescriptorRenderers.SOURCE_CODE.renderType(type)));
|
||||
QuickFixUtil.shortenReferencesOfType(type, file);
|
||||
JetTypeReference newTypeRef = JetPsiFactory(file).createType(IdeDescriptorRenderers.SOURCE_CODE.renderType(type));
|
||||
newTypeRef = (JetTypeReference) functionLiteralReturnTypeRef.replace(newTypeRef);
|
||||
ShortenReferences.INSTANCE$.process(newTypeRef);
|
||||
}
|
||||
if (appropriateQuickFix != null && appropriateQuickFix.isAvailable(project, editor, file)) {
|
||||
appropriateQuickFix.invoke(project, editor, file);
|
||||
|
||||
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor;
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
||||
import org.jetbrains.kotlin.idea.JetBundle;
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage;
|
||||
import org.jetbrains.kotlin.idea.codeInsight.ShortenReferences;
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
@@ -108,12 +109,14 @@ public class ChangeFunctionReturnTypeFix extends JetIntentionAction<JetFunction>
|
||||
}
|
||||
else {
|
||||
if (!(KotlinBuiltIns.isUnit(type) && element.hasBlockBody())) {
|
||||
element.setTypeReference(JetPsiFactory(project).createType(IdeDescriptorRenderers.SOURCE_CODE.renderType(type)));
|
||||
JetTypeReference newTypeRef = JetPsiFactory(project).createType(IdeDescriptorRenderers.SOURCE_CODE.renderType(type));
|
||||
newTypeRef = element.setTypeReference(newTypeRef);
|
||||
assert newTypeRef != null;
|
||||
ShortenReferences.INSTANCE$.process(newTypeRef);
|
||||
}
|
||||
else {
|
||||
element.setTypeReference(null);
|
||||
}
|
||||
QuickFixUtil.shortenReferencesOfType(type, file);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,12 +23,10 @@ import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.idea.JetBundle;
|
||||
import org.jetbrains.kotlin.idea.codeInsight.ShortenReferences;
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.psi.JetClass;
|
||||
import org.jetbrains.kotlin.psi.JetFile;
|
||||
import org.jetbrains.kotlin.psi.JetNamedDeclaration;
|
||||
import org.jetbrains.kotlin.psi.JetParameter;
|
||||
import org.jetbrains.kotlin.psi.*;
|
||||
import org.jetbrains.kotlin.types.JetType;
|
||||
|
||||
import static org.jetbrains.kotlin.psi.PsiPackage.JetPsiFactory;
|
||||
@@ -55,7 +53,7 @@ public class ChangeParameterTypeFix extends JetIntentionAction<JetParameter> {
|
||||
@NotNull
|
||||
@Override
|
||||
public String getText() {
|
||||
String renderedType = renderedType = IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_IN_TYPES.renderType(type);
|
||||
String renderedType = IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_IN_TYPES.renderType(type);
|
||||
return isPrimaryConstructorParameter ?
|
||||
JetBundle.message("change.primary.constructor.parameter.type", element.getName(), containingDeclarationName, renderedType) :
|
||||
JetBundle.message("change.function.parameter.type", element.getName(), containingDeclarationName, renderedType);
|
||||
@@ -69,7 +67,9 @@ public class ChangeParameterTypeFix extends JetIntentionAction<JetParameter> {
|
||||
|
||||
@Override
|
||||
public void invoke(@NotNull Project project, Editor editor, JetFile file) throws IncorrectOperationException {
|
||||
element.setTypeReference(JetPsiFactory(file).createType(IdeDescriptorRenderers.SOURCE_CODE.renderType(type)));
|
||||
QuickFixUtil.shortenReferencesOfType(type, file);
|
||||
JetTypeReference newTypeRef = JetPsiFactory(file).createType(IdeDescriptorRenderers.SOURCE_CODE.renderType(type));
|
||||
newTypeRef = element.setTypeReference(newTypeRef);
|
||||
assert newTypeRef != null;
|
||||
ShortenReferences.INSTANCE$.process(newTypeRef);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticWithParameters1;
|
||||
import org.jetbrains.kotlin.diagnostics.Errors;
|
||||
import org.jetbrains.kotlin.idea.JetBundle;
|
||||
import org.jetbrains.kotlin.idea.codeInsight.ShortenReferences;
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers;
|
||||
import org.jetbrains.kotlin.psi.JetFile;
|
||||
import org.jetbrains.kotlin.psi.JetParameter;
|
||||
@@ -59,8 +60,8 @@ public class ChangeTypeFix extends JetIntentionAction<JetTypeReference> {
|
||||
|
||||
@Override
|
||||
public void invoke(@NotNull Project project, Editor editor, JetFile file) throws IncorrectOperationException {
|
||||
element.replace(JetPsiFactory(file).createType(renderedType));
|
||||
QuickFixUtil.shortenReferencesOfType(type, file);
|
||||
JetTypeReference newTypeRef = (JetTypeReference) element.replace(JetPsiFactory(file).createType(renderedType));
|
||||
ShortenReferences.INSTANCE$.process(newTypeRef);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.descriptors.PropertyDescriptor;
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
||||
import org.jetbrains.kotlin.idea.JetBundle;
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage;
|
||||
import org.jetbrains.kotlin.idea.codeInsight.ShortenReferences;
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.psi.*;
|
||||
@@ -41,6 +42,7 @@ import org.jetbrains.kotlin.types.ErrorUtils;
|
||||
import org.jetbrains.kotlin.types.JetType;
|
||||
import org.jetbrains.kotlin.types.checker.JetTypeChecker;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -85,23 +87,25 @@ public class ChangeVariableTypeFix extends JetIntentionAction<JetVariableDeclara
|
||||
assert nameIdentifier != null : "ChangeVariableTypeFix applied to variable without name";
|
||||
|
||||
JetTypeReference replacingTypeReference = psiFactory.createType(IdeDescriptorRenderers.SOURCE_CODE.renderType(type));
|
||||
element.setTypeReference(replacingTypeReference);
|
||||
ArrayList<JetTypeReference> toShorten = new ArrayList<JetTypeReference>();
|
||||
toShorten.add(element.setTypeReference(replacingTypeReference));
|
||||
|
||||
if (element instanceof JetProperty) {
|
||||
JetPropertyAccessor getter = ((JetProperty) element).getGetter();
|
||||
JetTypeReference getterReturnTypeRef = getter == null ? null : getter.getReturnTypeReference();
|
||||
if (getterReturnTypeRef != null) {
|
||||
getterReturnTypeRef.replace(replacingTypeReference);
|
||||
toShorten.add((JetTypeReference) getterReturnTypeRef.replace(replacingTypeReference));
|
||||
}
|
||||
|
||||
JetPropertyAccessor setter = ((JetProperty) element).getSetter();
|
||||
JetParameter setterParameter = setter == null ? null : setter.getParameter();
|
||||
JetTypeReference setterParameterTypeRef = setterParameter == null ? null : setterParameter.getTypeReference();
|
||||
if (setterParameterTypeRef != null) {
|
||||
setterParameterTypeRef.replace(replacingTypeReference);
|
||||
toShorten.add((JetTypeReference) setterParameterTypeRef.replace(replacingTypeReference));
|
||||
}
|
||||
}
|
||||
|
||||
QuickFixUtil.shortenReferencesOfType(type, file);
|
||||
ShortenReferences.INSTANCE$.process(toShorten);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -22,8 +22,6 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiWhiteSpace;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import kotlin.Function1;
|
||||
import kotlin.KotlinPackage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.ReadOnly;
|
||||
@@ -32,10 +30,8 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor;
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage;
|
||||
import org.jetbrains.kotlin.idea.codeInsight.ShortenReferences;
|
||||
import org.jetbrains.kotlin.idea.references.BuiltInsReferenceResolver;
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers;
|
||||
import org.jetbrains.kotlin.idea.util.UtilPackage;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.psi.*;
|
||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer;
|
||||
@@ -48,9 +44,6 @@ import org.jetbrains.kotlin.types.DeferredType;
|
||||
import org.jetbrains.kotlin.types.JetType;
|
||||
import org.jetbrains.kotlin.types.checker.JetTypeChecker;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class QuickFixUtil {
|
||||
@@ -215,33 +208,4 @@ public class QuickFixUtil {
|
||||
: IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_IN_TYPES;
|
||||
return renderer.renderType(type);
|
||||
}
|
||||
|
||||
public static void shortenReferencesOfType(@NotNull JetType type, @NotNull JetFile file) {
|
||||
shortenReferencesOfTypes(Collections.singletonList(type), file);
|
||||
}
|
||||
|
||||
public static void shortenReferencesOfTypes(@NotNull List<JetType> types, @NotNull JetFile file) {
|
||||
Set<JetType> typesToShorten = KotlinPackage.flatMapTo(
|
||||
types,
|
||||
new LinkedHashSet<JetType>(),
|
||||
new Function1<JetType, Iterable<JetType>>() {
|
||||
@Override
|
||||
public Iterable<JetType> invoke(JetType type) {
|
||||
return UtilPackage.getAllReferencedTypes(type);
|
||||
}
|
||||
}
|
||||
);
|
||||
ShortenReferences.INSTANCE$.processAllReferencesInFile(
|
||||
KotlinPackage.map(
|
||||
typesToShorten,
|
||||
new Function1<JetType, DeclarationDescriptor>() {
|
||||
@Override
|
||||
public DeclarationDescriptor invoke(JetType type) {
|
||||
return DescriptorUtils.getClassDescriptorForType(type);
|
||||
}
|
||||
}
|
||||
),
|
||||
file
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import kotlin.modules.ModuleBuilder
|
||||
|
||||
fun foo(x: Int, moduleBuilder: ModuleBuilder) {
|
||||
foo(, ModuleBuilder("", ""));
|
||||
foo(1, ModuleBuilder("", ""));
|
||||
foo(2, ModuleBuilder("", ""));
|
||||
foo(, kotlin.modules.ModuleBuilder("", ""));
|
||||
foo(1, kotlin.modules.ModuleBuilder("", ""));
|
||||
foo(2, kotlin.modules.ModuleBuilder("", ""));
|
||||
}
|
||||
@@ -3,6 +3,6 @@
|
||||
import kotlin.modules.Module
|
||||
|
||||
class A() {
|
||||
val i: Module
|
||||
val i: kotlin.modules.Module
|
||||
get(): <caret>Module = kotlin.modules.ModuleBuilder("", "")
|
||||
}
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
import kotlin.modules.ModuleBuilder
|
||||
import kotlin.modules.Module
|
||||
|
||||
fun foo(f: ((ModuleBuilder) -> Module) -> String) {
|
||||
fun foo(f: ((kotlin.modules.ModuleBuilder) -> kotlin.modules.Module) -> String) {
|
||||
foo {
|
||||
(f: (ModuleBuilder) -> Module) -> "42"
|
||||
}
|
||||
|
||||
+1
-1
@@ -3,4 +3,4 @@
|
||||
import kotlin.modules.Module
|
||||
|
||||
fun bar(): Module = kotlin.modules.ModuleBuilder("", "")
|
||||
fun foo(): Module = bar(<caret>)
|
||||
fun foo(): kotlin.modules.Module = bar()
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
import kotlin.modules.Module
|
||||
|
||||
fun foo(f: (Module) -> String) {
|
||||
fun foo(f: (kotlin.modules.Module) -> String) {
|
||||
foo {
|
||||
(x: Module<caret>) -> ""
|
||||
}
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
fun foo() {
|
||||
var f: (Delegates) -> Unit = { (x: Delegates) -> }<caret>
|
||||
var f: (Delegates) -> Unit = { (x: kotlin.properties.Delegates) -> }<caret>
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import kotlin.modules.ModuleBuilder
|
||||
|
||||
fun foo(): ModuleBuilder {
|
||||
val module: kotlin.modules.Module = ModuleBuilder("", "")
|
||||
fun foo(): kotlin.modules.ModuleBuilder {
|
||||
val module: kotlin.modules.Module = kotlin.modules.ModuleBuilder("", "")
|
||||
return module as ModuleBuilder
|
||||
}
|
||||
+1
-1
@@ -4,5 +4,5 @@ package bar
|
||||
import kotlin.modules.Module
|
||||
|
||||
fun foo(w: Int = 0, x: (Module) -> Int, y: Int = 0, z: (Int) -> Int = {42}) {
|
||||
foo(1, {(a: Module) -> 42}<caret>, 1)
|
||||
foo(1, {(a: kotlin.modules.Module) -> 42}<caret>, 1)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user