From 5d516a5f72c9d4264e47806be6050b99f888bb59 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Mon, 26 Jan 2015 22:21:51 +0300 Subject: [PATCH] No need to shorten non-affected references in quickfixes --- .../idea/codeInsight/ShortenReferences.kt | 24 +------------ .../quickfix/AddFunctionParametersFix.java | 1 - .../idea/quickfix/CastExpressionFix.java | 11 ++++-- .../idea/quickfix/ChangeAccessorTypeFix.java | 19 +++++----- .../ChangeFunctionLiteralReturnTypeFix.java | 6 ++-- .../quickfix/ChangeFunctionReturnTypeFix.java | 7 ++-- .../idea/quickfix/ChangeParameterTypeFix.java | 14 ++++---- .../kotlin/idea/quickfix/ChangeTypeFix.java | 5 +-- .../idea/quickfix/ChangeVariableTypeFix.java | 12 ++++--- .../kotlin/idea/quickfix/QuickFixUtil.java | 36 ------------------- ...fterAddFunctionParameterLongNameRuntime.kt | 6 ++-- ...WrongGetterParameterTypeLongNameRuntime.kt | 2 +- ...ameterTypeToFunctionTypeLongNameRuntime.kt | 2 +- ...oMatchExpectedTypeOfCallLongNameRuntime.kt | 2 +- ...tedParameterTypeMismatchLongNameRuntime.kt | 2 +- ...fterPropertyTypeMismatchLongNameRuntime.kt | 2 +- .../casts/afterTypeMismatchLongNameRuntime.kt | 4 +-- ...afterChangeParameterTypeLongNameRuntime.kt | 2 +- 18 files changed, 56 insertions(+), 101 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/codeInsight/ShortenReferences.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/codeInsight/ShortenReferences.kt index 458236c0b20..666b3d4f5f3 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/codeInsight/ShortenReferences.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/codeInsight/ShortenReferences.kt @@ -92,34 +92,12 @@ public object ShortenReferences { } } - fun processAllReferencesInFile(descriptors: List, 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 = Collections.singletonList(file) - ): Map { - return JetFileReferencesResolver.resolve(file, fileElements, resolveShortNames = false) - } - private fun shortenReferencesInFile( file: JetFile, elements: List, @@ -135,7 +113,7 @@ public object ShortenReferences { private fun process(elements: Iterable, 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) } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddFunctionParametersFix.java b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddFunctionParametersFix.java index bed815642f4..8234f6b871d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddFunctionParametersFix.java +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddFunctionParametersFix.java @@ -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() { diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/CastExpressionFix.java b/idea/src/org/jetbrains/kotlin/idea/quickfix/CastExpressionFix.java index c130d391ad8..970524d9247 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/CastExpressionFix.java +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/CastExpressionFix.java @@ -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 { (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 diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeAccessorTypeFix.java b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeAccessorTypeFix.java index bcc722f0a0c..2a4aa9541aa 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeAccessorTypeFix.java +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeAccessorTypeFix.java @@ -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 } 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); } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeParameterTypeFix.java b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeParameterTypeFix.java index 3dee4cb14c1..1b9c795c56b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeParameterTypeFix.java +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeParameterTypeFix.java @@ -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 { @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 { @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); } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeTypeFix.java b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeTypeFix.java index 9eef9d90003..abc2e27ca53 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeTypeFix.java +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeTypeFix.java @@ -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 { @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 diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.java b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.java index 849a8c31ba1..5466f587911 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.java +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.java @@ -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 toShorten = new ArrayList(); + 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 diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixUtil.java b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixUtil.java index 7a3c27d7367..de9d5bd5b35 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixUtil.java +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixUtil.java @@ -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 types, @NotNull JetFile file) { - Set typesToShorten = KotlinPackage.flatMapTo( - types, - new LinkedHashSet(), - new Function1>() { - @Override - public Iterable invoke(JetType type) { - return UtilPackage.getAllReferencedTypes(type); - } - } - ); - ShortenReferences.INSTANCE$.processAllReferencesInFile( - KotlinPackage.map( - typesToShorten, - new Function1() { - @Override - public DeclarationDescriptor invoke(JetType type) { - return DescriptorUtils.getClassDescriptorForType(type); - } - } - ), - file - ); - } } diff --git a/idea/testData/quickfix/changeSignature/afterAddFunctionParameterLongNameRuntime.kt b/idea/testData/quickfix/changeSignature/afterAddFunctionParameterLongNameRuntime.kt index 1a06247fcad..f99c4b6f72e 100644 --- a/idea/testData/quickfix/changeSignature/afterAddFunctionParameterLongNameRuntime.kt +++ b/idea/testData/quickfix/changeSignature/afterAddFunctionParameterLongNameRuntime.kt @@ -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("", "")); } \ No newline at end of file diff --git a/idea/testData/quickfix/typeAddition/afterWrongGetterParameterTypeLongNameRuntime.kt b/idea/testData/quickfix/typeAddition/afterWrongGetterParameterTypeLongNameRuntime.kt index 0e608dc82a1..22765abb03d 100644 --- a/idea/testData/quickfix/typeAddition/afterWrongGetterParameterTypeLongNameRuntime.kt +++ b/idea/testData/quickfix/typeAddition/afterWrongGetterParameterTypeLongNameRuntime.kt @@ -3,6 +3,6 @@ import kotlin.modules.Module class A() { - val i: Module + val i: kotlin.modules.Module get(): Module = kotlin.modules.ModuleBuilder("", "") } diff --git a/idea/testData/quickfix/typeMismatch/afterChangeFunctionLiteralParameterTypeToFunctionTypeLongNameRuntime.kt b/idea/testData/quickfix/typeMismatch/afterChangeFunctionLiteralParameterTypeToFunctionTypeLongNameRuntime.kt index 048d845f81b..62ea2a52bc9 100644 --- a/idea/testData/quickfix/typeMismatch/afterChangeFunctionLiteralParameterTypeToFunctionTypeLongNameRuntime.kt +++ b/idea/testData/quickfix/typeMismatch/afterChangeFunctionLiteralParameterTypeToFunctionTypeLongNameRuntime.kt @@ -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" } diff --git a/idea/testData/quickfix/typeMismatch/afterChangeFunctionReturnTypeToMatchExpectedTypeOfCallLongNameRuntime.kt b/idea/testData/quickfix/typeMismatch/afterChangeFunctionReturnTypeToMatchExpectedTypeOfCallLongNameRuntime.kt index 22c50fd86c2..8f0fa00ed02 100644 --- a/idea/testData/quickfix/typeMismatch/afterChangeFunctionReturnTypeToMatchExpectedTypeOfCallLongNameRuntime.kt +++ b/idea/testData/quickfix/typeMismatch/afterChangeFunctionReturnTypeToMatchExpectedTypeOfCallLongNameRuntime.kt @@ -3,4 +3,4 @@ import kotlin.modules.Module fun bar(): Module = kotlin.modules.ModuleBuilder("", "") -fun foo(): Module = bar() \ No newline at end of file +fun foo(): kotlin.modules.Module = bar() \ No newline at end of file diff --git a/idea/testData/quickfix/typeMismatch/afterExpectedParameterTypeMismatchLongNameRuntime.kt b/idea/testData/quickfix/typeMismatch/afterExpectedParameterTypeMismatchLongNameRuntime.kt index fdf5b6ba4e9..ce444b2b913 100644 --- a/idea/testData/quickfix/typeMismatch/afterExpectedParameterTypeMismatchLongNameRuntime.kt +++ b/idea/testData/quickfix/typeMismatch/afterExpectedParameterTypeMismatchLongNameRuntime.kt @@ -2,7 +2,7 @@ import kotlin.modules.Module -fun foo(f: (Module) -> String) { +fun foo(f: (kotlin.modules.Module) -> String) { foo { (x: Module) -> "" } diff --git a/idea/testData/quickfix/typeMismatch/afterPropertyTypeMismatchLongNameRuntime.kt b/idea/testData/quickfix/typeMismatch/afterPropertyTypeMismatchLongNameRuntime.kt index 57b9c2711e4..c9551a9695b 100644 --- a/idea/testData/quickfix/typeMismatch/afterPropertyTypeMismatchLongNameRuntime.kt +++ b/idea/testData/quickfix/typeMismatch/afterPropertyTypeMismatchLongNameRuntime.kt @@ -3,5 +3,5 @@ import kotlin.properties.Delegates fun foo() { - var f: (Delegates) -> Unit = { (x: Delegates) -> } + var f: (Delegates) -> Unit = { (x: kotlin.properties.Delegates) -> } } \ No newline at end of file diff --git a/idea/testData/quickfix/typeMismatch/casts/afterTypeMismatchLongNameRuntime.kt b/idea/testData/quickfix/typeMismatch/casts/afterTypeMismatchLongNameRuntime.kt index 12b04961423..ea4693ffe9b 100644 --- a/idea/testData/quickfix/typeMismatch/casts/afterTypeMismatchLongNameRuntime.kt +++ b/idea/testData/quickfix/typeMismatch/casts/afterTypeMismatchLongNameRuntime.kt @@ -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 } \ No newline at end of file diff --git a/idea/testData/quickfix/typeMismatch/parameterTypeMismatch/afterChangeParameterTypeLongNameRuntime.kt b/idea/testData/quickfix/typeMismatch/parameterTypeMismatch/afterChangeParameterTypeLongNameRuntime.kt index 37c361de60f..247b94da211 100644 --- a/idea/testData/quickfix/typeMismatch/parameterTypeMismatch/afterChangeParameterTypeLongNameRuntime.kt +++ b/idea/testData/quickfix/typeMismatch/parameterTypeMismatch/afterChangeParameterTypeLongNameRuntime.kt @@ -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}, 1) + foo(1, {(a: kotlin.modules.Module) -> 42}, 1) }