package org.jetbrains.plugins.cucumber.inspections;
import com.intellij.codeInspection.ProblemHighlightType;
import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.cucumber.CucumberBundle;
import org.jetbrains.plugins.cucumber.psi.GherkinElementVisitor;
import org.jetbrains.plugins.cucumber.psi.GherkinScenario;
/**
* User: Andrey.Vokin
* Date: 10/3/2014.
*/
public class GherkinMisplacedBackgroundInspection extends GherkinInspection {
@NotNull
@Override
public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) {
return new GherkinElementVisitor() {
@Override
public void visitScenario(GherkinScenario scenario) {
if (scenario.isBackground()) {
PsiElement element = scenario.getPrevSibling();
while (element != null) {
if (element instanceof GherkinScenario) {
if (!((GherkinScenario)element).isBackground()) {
holder.registerProblem(scenario.getFirstChild(), CucumberBundle.message("inspection.gherkin.background.after.scenario.error.message"), ProblemHighlightType.ERROR);
break;
}
}
element = element.getPrevSibling();
}
}
}
};
}
@Nls
@NotNull
@Override
public String getDisplayName() {
return CucumberBundle.message("inspection.gherkin.background.after.scenario.name");
}
@NotNull
@Override
public String getShortName() {
return "GherkinMisplacedBackground";
}
}