summaryrefslogtreecommitdiff
path: root/java/java-impl/src/com/intellij/codeInsight/highlighting/JavaPairedBraceMatcher.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-impl/src/com/intellij/codeInsight/highlighting/JavaPairedBraceMatcher.java')
-rw-r--r--java/java-impl/src/com/intellij/codeInsight/highlighting/JavaPairedBraceMatcher.java69
1 files changed, 6 insertions, 63 deletions
diff --git a/java/java-impl/src/com/intellij/codeInsight/highlighting/JavaPairedBraceMatcher.java b/java/java-impl/src/com/intellij/codeInsight/highlighting/JavaPairedBraceMatcher.java
index df5b0e5b1060..7f7d37a9aaaa 100644
--- a/java/java-impl/src/com/intellij/codeInsight/highlighting/JavaPairedBraceMatcher.java
+++ b/java/java-impl/src/com/intellij/codeInsight/highlighting/JavaPairedBraceMatcher.java
@@ -16,17 +16,14 @@
package com.intellij.codeInsight.highlighting;
import com.intellij.ide.highlighter.JavaFileType;
-import com.intellij.lang.BracePair;
import com.intellij.lang.java.JavaLanguage;
-import com.intellij.openapi.editor.highlighter.HighlighterIterator;
-import com.intellij.openapi.fileTypes.FileType;
import com.intellij.psi.JavaTokenType;
import com.intellij.psi.impl.source.tree.StdTokenSets;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.TokenSet;
import org.jetbrains.annotations.NotNull;
-public class JavaPairedBraceMatcher extends PairedBraceMatcherAdapter {
+public class JavaPairedBraceMatcher extends PairedBraceAndAnglesMatcher {
private static class Holder {
private static final TokenSet TYPE_TOKENS =
TokenSet.orSet(StdTokenSets.WHITE_SPACE_OR_COMMENT_BIT_SET,
@@ -37,70 +34,16 @@ public class JavaPairedBraceMatcher extends PairedBraceMatcherAdapter {
}
public JavaPairedBraceMatcher() {
- super(new JavaBraceMatcher(), JavaLanguage.INSTANCE);
+ super(new JavaBraceMatcher(), JavaLanguage.INSTANCE, JavaFileType.INSTANCE, Holder.TYPE_TOKENS);
}
@Override
- public boolean isLBraceToken(@NotNull HighlighterIterator iterator, @NotNull CharSequence fileText, @NotNull FileType fileType) {
- return isBrace(iterator, fileText, fileType, true);
+ public @NotNull IElementType lt() {
+ return JavaTokenType.LT;
}
@Override
- public boolean isRBraceToken(@NotNull HighlighterIterator iterator, @NotNull CharSequence fileText, @NotNull FileType fileType) {
- return isBrace(iterator, fileText, fileType, false);
- }
-
- private boolean isBrace(HighlighterIterator iterator,
- CharSequence fileText,
- FileType fileType,
- boolean left) {
- final BracePair pair = findPair(left, iterator, fileText, fileType);
- if (pair == null) return false;
-
- final IElementType opposite = left ? JavaTokenType.GT : JavaTokenType.LT;
- if ((left ? pair.getRightBraceType() : pair.getLeftBraceType()) != opposite) return true;
-
- if (fileType != JavaFileType.INSTANCE) return false;
-
- final IElementType braceElementType = left ? JavaTokenType.LT : JavaTokenType.GT;
- int count = 0;
- try {
- int paired = 1;
- while (true) {
- count++;
- if (left) {
- iterator.advance();
- } else {
- iterator.retreat();
- }
- if (iterator.atEnd()) break;
- final IElementType tokenType = iterator.getTokenType();
- if (tokenType == opposite) {
- paired--;
- if (paired == 0) return true;
- continue;
- }
-
- if (tokenType == braceElementType) {
- paired++;
- continue;
- }
-
- if (!Holder.TYPE_TOKENS.contains(tokenType)) {
- return false;
- }
- }
- return false;
- }
- finally {
- while (count-- > 0) {
- if (left) {
- iterator.retreat();
- } else {
- iterator.advance();
- }
- }
- }
+ public @NotNull IElementType gt() {
+ return JavaTokenType.GT;
}
}
-