diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/ImplementMethodsHandler.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/ImplementMethodsHandler.java index b72192455f0..fb1b8eb80d3 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/ImplementMethodsHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/ImplementMethodsHandler.java @@ -13,13 +13,11 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor; -import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; -import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; -import org.jetbrains.jet.lang.descriptors.MutableClassDescriptor; +import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.OverrideResolver; +import org.jetbrains.jet.lang.types.JetStandardLibrary; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.plugin.compiler.WholeProjectAnalyzerFacade; @@ -105,9 +103,21 @@ public class ImplementMethodsHandler implements LanguageCodeInsightActionHandler StringBuilder bodyBuilder = new StringBuilder("override fun "); bodyBuilder.append(descriptor.getName()); bodyBuilder.append("("); + boolean first = true; + for (ValueParameterDescriptor parameterDescriptor : descriptor.getValueParameters()) { + if (!first) { + bodyBuilder.append(","); + } + first = false; + bodyBuilder.append(parameterDescriptor.getName()); + bodyBuilder.append(": "); + bodyBuilder.append(parameterDescriptor.getOutType().toString()); + } bodyBuilder.append(")"); final JetType returnType = descriptor.getReturnType(); - bodyBuilder.append(": ").append(returnType.toString()); + if (!returnType.equals(JetStandardLibrary.getJetStandardLibrary(project).getTuple0Type())) { + bodyBuilder.append(": ").append(returnType.toString()); + } bodyBuilder.append("{"); if (returnType.isNullable()) { bodyBuilder.append("return null"); diff --git a/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java b/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java index 04ef828bd79..54cb3e97069 100644 --- a/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java +++ b/idea/src/org/jetbrains/jet/plugin/formatter/JetFormattingModelBuilder.java @@ -27,6 +27,8 @@ public class JetFormattingModelBuilder implements FormattingModelBuilder { private static SpacingBuilder createSpacingBuilder(CodeStyleSettings settings) { return new SpacingBuilder(settings) + .before(COMMA).spaceIf(settings.SPACE_BEFORE_COMMA) + .after(COMMA).spaceIf(settings.SPACE_AFTER_COMMA) .beforeInside(BLOCK, FUN).spaceIf(settings.SPACE_BEFORE_METHOD_LBRACE) .afterInside(LBRACE, BLOCK).lineBreakInCode() .beforeInside(RBRACE, CLASS_BODY).lineBreakInCode() diff --git a/idea/testData/codeInsight/overrideImplement/javaParameters/foo/Impl.kt b/idea/testData/codeInsight/overrideImplement/javaParameters/foo/Impl.kt new file mode 100644 index 00000000000..14c331bd84c --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/javaParameters/foo/Impl.kt @@ -0,0 +1,5 @@ +import foo.Intf + +class Impl(): Intf { + +} diff --git a/idea/testData/codeInsight/overrideImplement/javaParameters/foo/Impl.kt.after b/idea/testData/codeInsight/overrideImplement/javaParameters/foo/Impl.kt.after new file mode 100644 index 00000000000..a20e435f471 --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/javaParameters/foo/Impl.kt.after @@ -0,0 +1,7 @@ +import foo.Intf + +class Impl(): Intf { + + override fun fooBar(i: Int, s: Array?, foo: Any?) { + } +} diff --git a/idea/testData/codeInsight/overrideImplement/javaParameters/foo/Intf.java b/idea/testData/codeInsight/overrideImplement/javaParameters/foo/Intf.java new file mode 100644 index 00000000000..04c1e8f6dfa --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/javaParameters/foo/Intf.java @@ -0,0 +1,5 @@ +package foo; + +interface Intf { + void fooBar(int i, String[] s, Object foo); +} diff --git a/idea/tests/org/jetbrains/jet/plugin/codeInsight/OverrideImplementTest.java b/idea/tests/org/jetbrains/jet/plugin/codeInsight/OverrideImplementTest.java index b7f6fc28298..de80e8a49a6 100644 --- a/idea/tests/org/jetbrains/jet/plugin/codeInsight/OverrideImplementTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/codeInsight/OverrideImplementTest.java @@ -31,7 +31,15 @@ public class OverrideImplementTest extends LightCodeInsightFixtureTestCase { } public void testJavaInterfaceMethod() { - myFixture.copyDirectoryToProject("javaInterfaceMethod", ""); + doDirectoryTest(); + } + + public void testJavaParameters() { + doDirectoryTest(); + } + + private void doDirectoryTest() { + myFixture.copyDirectoryToProject(getTestName(true), ""); myFixture.configureFromTempProjectFile("foo/Impl.kt"); final PsiElement elementAtCaret = myFixture.getFile().findElementAt(myFixture.getEditor().getCaretModel().getOffset()); final JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(elementAtCaret, JetClassOrObject.class); @@ -44,7 +52,6 @@ public class OverrideImplementTest extends LightCodeInsightFixtureTestCase { ImplementMethodsHandler.membersFromDescriptors(descriptors)); } }.execute(); - myFixture.checkResultByFile("javaInterfaceMethod/foo/Impl.kt.after"); - + myFixture.checkResultByFile(getTestName(true) + "/foo/Impl.kt.after"); } }