use of org.intellij.lang.regexp.psi.RegExpPattern in project intellij-community by JetBrains.
the class ValueRegExpAnnotator method annotate.
public void annotate(@NotNull PsiElement psiElement, @NotNull AnnotationHolder holder) {
if (psiElement instanceof RegExpFile && psiElement.getCopyableUserData(KEY) == Boolean.TRUE) {
final PsiElement pattern = psiElement.getFirstChild();
if (!(pattern instanceof RegExpPattern)) {
return;
}
final RegExpBranch[] branches = ((RegExpPattern) pattern).getBranches();
if (branches.length == 1 && branches[0].getAtoms().length == 0) {
return;
}
for (RegExpBranch branch : branches) {
final int[] count = new int[1];
branch.accept(new RegExpRecursiveElementVisitor() {
@Override
public void visitRegExpGroup(RegExpGroup group) {
if (group.isCapturing()) {
count[0]++;
}
super.visitRegExpGroup(group);
}
});
if (count[0] != 1) {
holder.createWarningAnnotation(branch, "The pattern should contain exactly one capturing group");
}
}
}
}
Aggregations