handle parameters in implement members
This commit is contained in:
@@ -13,13 +13,11 @@ import com.intellij.psi.PsiElement;
|
|||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile;
|
||||||
import com.intellij.psi.util.PsiTreeUtil;
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
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.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
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.lang.types.JetType;
|
||||||
import org.jetbrains.jet.plugin.compiler.WholeProjectAnalyzerFacade;
|
import org.jetbrains.jet.plugin.compiler.WholeProjectAnalyzerFacade;
|
||||||
|
|
||||||
@@ -105,9 +103,21 @@ public class ImplementMethodsHandler implements LanguageCodeInsightActionHandler
|
|||||||
StringBuilder bodyBuilder = new StringBuilder("override fun ");
|
StringBuilder bodyBuilder = new StringBuilder("override fun ");
|
||||||
bodyBuilder.append(descriptor.getName());
|
bodyBuilder.append(descriptor.getName());
|
||||||
bodyBuilder.append("(");
|
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(")");
|
bodyBuilder.append(")");
|
||||||
final JetType returnType = descriptor.getReturnType();
|
final JetType returnType = descriptor.getReturnType();
|
||||||
bodyBuilder.append(": ").append(returnType.toString());
|
if (!returnType.equals(JetStandardLibrary.getJetStandardLibrary(project).getTuple0Type())) {
|
||||||
|
bodyBuilder.append(": ").append(returnType.toString());
|
||||||
|
}
|
||||||
bodyBuilder.append("{");
|
bodyBuilder.append("{");
|
||||||
if (returnType.isNullable()) {
|
if (returnType.isNullable()) {
|
||||||
bodyBuilder.append("return null");
|
bodyBuilder.append("return null");
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ public class JetFormattingModelBuilder implements FormattingModelBuilder {
|
|||||||
|
|
||||||
private static SpacingBuilder createSpacingBuilder(CodeStyleSettings settings) {
|
private static SpacingBuilder createSpacingBuilder(CodeStyleSettings settings) {
|
||||||
return new SpacingBuilder(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)
|
.beforeInside(BLOCK, FUN).spaceIf(settings.SPACE_BEFORE_METHOD_LBRACE)
|
||||||
.afterInside(LBRACE, BLOCK).lineBreakInCode()
|
.afterInside(LBRACE, BLOCK).lineBreakInCode()
|
||||||
.beforeInside(RBRACE, CLASS_BODY).lineBreakInCode()
|
.beforeInside(RBRACE, CLASS_BODY).lineBreakInCode()
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
import foo.Intf
|
||||||
|
|
||||||
|
class Impl(): Intf {
|
||||||
|
<caret>
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
import foo.Intf
|
||||||
|
|
||||||
|
class Impl(): Intf {
|
||||||
|
|
||||||
|
override fun fooBar(i: Int, s: Array<String?>?, foo: Any?) {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package foo;
|
||||||
|
|
||||||
|
interface Intf {
|
||||||
|
void fooBar(int i, String[] s, Object foo);
|
||||||
|
}
|
||||||
@@ -31,7 +31,15 @@ public class OverrideImplementTest extends LightCodeInsightFixtureTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testJavaInterfaceMethod() {
|
public void testJavaInterfaceMethod() {
|
||||||
myFixture.copyDirectoryToProject("javaInterfaceMethod", "");
|
doDirectoryTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testJavaParameters() {
|
||||||
|
doDirectoryTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doDirectoryTest() {
|
||||||
|
myFixture.copyDirectoryToProject(getTestName(true), "");
|
||||||
myFixture.configureFromTempProjectFile("foo/Impl.kt");
|
myFixture.configureFromTempProjectFile("foo/Impl.kt");
|
||||||
final PsiElement elementAtCaret = myFixture.getFile().findElementAt(myFixture.getEditor().getCaretModel().getOffset());
|
final PsiElement elementAtCaret = myFixture.getFile().findElementAt(myFixture.getEditor().getCaretModel().getOffset());
|
||||||
final JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(elementAtCaret, JetClassOrObject.class);
|
final JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(elementAtCaret, JetClassOrObject.class);
|
||||||
@@ -44,7 +52,6 @@ public class OverrideImplementTest extends LightCodeInsightFixtureTestCase {
|
|||||||
ImplementMethodsHandler.membersFromDescriptors(descriptors));
|
ImplementMethodsHandler.membersFromDescriptors(descriptors));
|
||||||
}
|
}
|
||||||
}.execute();
|
}.execute();
|
||||||
myFixture.checkResultByFile("javaInterfaceMethod/foo/Impl.kt.after");
|
myFixture.checkResultByFile(getTestName(true) + "/foo/Impl.kt.after");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user