use of com.jetbrains.php.lang.psi.elements.PhpGoto in project phpinspectionsea by kalessil.
the class UnusedGotoLabelInspector method buildVisitor.
@Override
@NotNull
public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) {
return new BasePhpElementVisitor() {
@Override
public void visitPhpGotoLabel(@NotNull PhpGotoLabel label) {
final Function function = ExpressionSemanticUtil.getScope(label);
final GroupStatement body = null == function ? null : ExpressionSemanticUtil.getGroupStatement(function);
if (body != null && ExpressionSemanticUtil.countExpressionsInGroup(body) > 0) {
/* process goto statements and drop used from existing */
final Collection<PhpGoto> references = PsiTreeUtil.findChildrenOfType(body, PhpGoto.class);
if (!references.isEmpty()) {
final String labelName = label.getName();
for (final PhpGoto gotoExpression : references) {
final String labelUsed = gotoExpression.getName();
if (null != labelUsed && labelUsed.equals(labelName)) {
references.clear();
return;
}
}
references.clear();
}
/* TODO: marks as unused instead, see https://youtrack.jetbrains.com/issue/WI-34508 */
holder.registerProblem(label, MessagesPresentationUtil.prefixWithEa(message), ProblemHighlightType.LIKE_DEPRECATED, new TheLocalFix());
}
}
};
}
Aggregations