package com.dmarcotte.handlebars.inspections; import com.dmarcotte.handlebars.HbBundle; import com.dmarcotte.handlebars.psi.HbOpenBlockMustache; import com.dmarcotte.handlebars.psi.HbParam; import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.codeInspection.ProblemsHolder; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import java.util.Set; public class HbEmptyBlockInspection extends LocalInspectionTool { private static final Set<String> HELPERS_WITH_ARGUMENTS = ContainerUtil.immutableSet("if", "each", "with"); @NotNull @Override public PsiElementVisitor buildVisitor(final @NotNull ProblemsHolder holder, boolean isOnTheFly) { return new PsiElementVisitor() { @Override public void visitElement(PsiElement element) { if (!(element instanceof HbOpenBlockMustache)) { return; } String name = ((HbOpenBlockMustache)element).getName(); if (HELPERS_WITH_ARGUMENTS.contains(name) && null == PsiTreeUtil.getChildrenOfType(element, HbParam.class)) { holder.registerProblem(element, HbBundle.message("hb.block.mismatch.inspection.empty.block", name)); } } }; } }