From 0dabbbeed56726aac4fbf4923223ee56060b7671 Mon Sep 17 00:00:00 2001 From: Vladimir Rudev Date: Wed, 7 Nov 2012 19:50:41 +0400 Subject: [PATCH] KT-1985 Creating class body on override/implement if necessary --- .../src/org/jetbrains/jet/lang/psi/JetPsiFactory.java | 5 +++++ .../codeInsight/OverrideImplementMethodsHandler.java | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiFactory.java index ce49e79196f..98fe1b8d487 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiFactory.java @@ -147,6 +147,11 @@ public class JetPsiFactory { return function.getBodyExpression(); } + public static JetClassBody createEmptyClassBody(Project project) { + JetClass aClass = createClass(project, "class A(){}"); + return aClass.getBody(); + } + public static JetParameter createParameter(Project project, String name, String type) { JetNamedFunction function = createFunction(project, "fun foo(" + name + " : " + type + ") {}"); return function.getValueParameters().get(0); diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java index 9fd363325d3..31534a94552 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java @@ -68,9 +68,10 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns JetClassOrObject classOrObject, List selectedElements ) { - final JetClassBody body = classOrObject.getBody(); + JetClassBody body = classOrObject.getBody(); + Project project = classOrObject.getProject(); if (body == null) { - return; + body = JetPsiFactory.createEmptyClassBody(project); } PsiElement afterAnchor = findInsertAfterAnchor(editor, body); @@ -86,6 +87,10 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns afterAnchor = added; elementsToCompact.add((JetElement) added); } + if (!body.isPhysical()) { + classOrObject.add(JetPsiFactory.createWhiteSpace(project)); + classOrObject.add(body); + } ReferenceToClassesShortening.compactReferenceToClasses(elementsToCompact); }