diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/SpecifyTypeExplicitlyFix.java b/idea/src/org/jetbrains/kotlin/idea/quickfix/SpecifyTypeExplicitlyFix.java deleted file mode 100644 index 20a1e0f1b2e..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/SpecifyTypeExplicitlyFix.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.idea.quickfix; - -import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction; -import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiElement; -import com.intellij.psi.util.PsiTreeUtil; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.idea.intentions.SpecifyTypeExplicitlyIntention; -import org.jetbrains.kotlin.psi.JetCallableDeclaration; -import org.jetbrains.kotlin.psi.JetNamedFunction; -import org.jetbrains.kotlin.psi.JetProperty; -import org.jetbrains.kotlin.types.JetType; - -@SuppressWarnings("IntentionDescriptionNotFoundInspection") -public class SpecifyTypeExplicitlyFix extends PsiElementBaseIntentionAction { - @NotNull - @Override - public String getFamilyName() { - return "Specify type explicitly"; - } - - @Override - public void invoke(@NotNull Project project, @NotNull Editor editor, @NotNull PsiElement element) { - //noinspection unchecked - JetCallableDeclaration declaration = PsiTreeUtil.getParentOfType(element, JetProperty.class, JetNamedFunction.class); - JetType type = SpecifyTypeExplicitlyIntention.Companion.getTypeForDeclaration(declaration); - SpecifyTypeExplicitlyIntention.Companion.addTypeAnnotation(editor, declaration, type); - } - - @Override - public boolean isAvailable(@NotNull Project project, @NotNull Editor editor, @NotNull PsiElement element) { - //noinspection unchecked - JetCallableDeclaration declaration = PsiTreeUtil.getParentOfType(element, JetProperty.class, JetNamedFunction.class); - if (declaration instanceof JetProperty) { - setText("Specify type explicitly"); - } - else if (declaration instanceof JetNamedFunction) { - setText("Specify return type explicitly"); - } - else { - return false; - } - - return !SpecifyTypeExplicitlyIntention.Companion.getTypeForDeclaration(declaration).isError(); - } -} diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/SpecifyTypeExplicitlyFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/SpecifyTypeExplicitlyFix.kt new file mode 100644 index 00000000000..31e602fc5f9 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/SpecifyTypeExplicitlyFix.kt @@ -0,0 +1,58 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.idea.quickfix + +import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction +import com.intellij.openapi.editor.Editor +import com.intellij.openapi.project.Project +import com.intellij.psi.PsiElement +import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.kotlin.idea.intentions.SpecifyTypeExplicitlyIntention +import org.jetbrains.kotlin.psi.JetCallableDeclaration +import org.jetbrains.kotlin.psi.JetNamedFunction +import org.jetbrains.kotlin.psi.JetProperty +import org.jetbrains.kotlin.psi.psiUtil.getParentOfType + +SuppressWarnings("IntentionDescriptionNotFoundInspection") +public class SpecifyTypeExplicitlyFix : PsiElementBaseIntentionAction() { + override fun getFamilyName() = "Specify type explicitly" + + override fun invoke(project: Project, editor: Editor, element: PsiElement) { + val declaration = declarationByElement(element)!! + val type = SpecifyTypeExplicitlyIntention.getTypeForDeclaration(declaration) + SpecifyTypeExplicitlyIntention.addTypeAnnotation(editor, declaration, type) + } + + override fun isAvailable(project: Project, editor: Editor, element: PsiElement): Boolean { + val declaration = declarationByElement(element) + if (declaration is JetProperty) { + setText("Specify type explicitly") + } + else if (declaration is JetNamedFunction) { + setText("Specify return type explicitly") + } + else { + return false + } + + return !SpecifyTypeExplicitlyIntention.getTypeForDeclaration(declaration).isError() + } + + private fun declarationByElement(element: PsiElement): JetCallableDeclaration? { + return PsiTreeUtil.getParentOfType(element, javaClass(), javaClass()) as JetCallableDeclaration? + } +}