IDEA-91839 Groovy: 'Remove unnecessary return' intention

This commit is contained in:
Max Medvedev
2012-09-21 13:14:33 +04:00
parent 36b886383b
commit a00f3b097d
6 changed files with 66 additions and 1 deletions
@@ -0,0 +1 @@
def getName() {<spot>name</spot>}
@@ -0,0 +1 @@
def getName() {<spot>return name</spot>}
@@ -0,0 +1,5 @@
<html>
<body>
This intention removes unnecessary 'return' keyword from return statement.
</body>
</html>
+5
View File
@@ -1200,6 +1200,11 @@
<categoryKey>intention.category.groovy/intention.category.groovy.style</categoryKey>
<className>org.jetbrains.plugins.groovy.intentions.style.ConvertFromGeeseBracesIntention</className>
</intentionAction>
<intentionAction>
<bundleName>org.jetbrains.plugins.groovy.intentions.GroovyIntentionsBundle</bundleName>
<categoryKey>intention.category.groovy/intention.category.groovy.style</categoryKey>
<className>org.jetbrains.plugins.groovy.intentions.style.RemoveUnnecessaryReturnIntention</className>
</intentionAction>
<intentionAction>
<bundleName>org.jetbrains.plugins.groovy.intentions.GroovyIntentionsBundle</bundleName>
<categoryKey>intention.category.groovy/intention.category.groovy.style</categoryKey>
@@ -177,4 +177,6 @@ gr.create.missing.switch.branches.intention.family.name=Create missing 'switch'
remove.redundant.class.property.intention.name=Remove redundant .class
remove.redundant.class.property.intention.family.name=Remove redundant .class
convert.simple.getter.to.property.intention.name=Convert to property
convert.simple.getter.to.property.intention.family.name=Convert simple getter to property
convert.simple.getter.to.property.intention.family.name=Convert simple getter to property
remove.unnecessary.return.intention.name=Remove 'return' keyword
remove.unnecessary.return.intention.family.name=Remove unnecessary 'return' keyword
@@ -0,0 +1,51 @@
/*
* Copyright 2000-2012 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.plugins.groovy.intentions.style;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.groovy.intentions.base.Intention;
import org.jetbrains.plugins.groovy.intentions.base.PsiElementPredicate;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.branch.GrReturnStatement;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression;
/**
* @author Max Medvedev
*/
public class RemoveUnnecessaryReturnIntention extends Intention {
@Override
protected void processIntention(@NotNull PsiElement element, Project project, Editor editor) throws IncorrectOperationException {
if (element instanceof GrReturnStatement && ((GrReturnStatement)element).getReturnValue() != null) {
GrExpression value = ((GrReturnStatement)element).getReturnValue();
((GrReturnStatement)element).replaceWithStatement(value);
}
}
@NotNull
@Override
protected PsiElementPredicate getElementPredicate() {
return new PsiElementPredicate() {
@Override
public boolean satisfiedBy(PsiElement element) {
return element instanceof GrReturnStatement && ((GrReturnStatement)element).getReturnValue() != null;
}
};
}
}