diff --git a/spellchecker/src/com/intellij/spellchecker/inspections/CommentSplitter.java b/spellchecker/src/com/intellij/spellchecker/inspections/CommentSplitter.java index 8ca989b6f3fb..8e428a4d1c82 100644 --- a/spellchecker/src/com/intellij/spellchecker/inspections/CommentSplitter.java +++ b/spellchecker/src/com/intellij/spellchecker/inspections/CommentSplitter.java @@ -34,7 +34,7 @@ public final class CommentSplitter extends BaseSplitter { } @Override - public void split(@Nullable String text, @NotNull TextRange range, Consumer consumer) { + public void split(@Nullable String text, @NotNull TextRange range, @NotNull Consumer consumer) { if (text == null || StringUtil.isEmpty(text)) { return; } diff --git a/spellchecker/src/com/intellij/spellchecker/inspections/IdentifierSplitter.java b/spellchecker/src/com/intellij/spellchecker/inspections/IdentifierSplitter.java index 8c740a0edd74..050925b92eb5 100644 --- a/spellchecker/src/com/intellij/spellchecker/inspections/IdentifierSplitter.java +++ b/spellchecker/src/com/intellij/spellchecker/inspections/IdentifierSplitter.java @@ -24,7 +24,7 @@ public class IdentifierSplitter extends BaseSplitter { private static final @NonNls Pattern WORD_IN_QUOTES = Pattern.compile("'([^']*)'"); @Override - public void split(@Nullable String text, @NotNull TextRange range, Consumer consumer) { + public void split(@Nullable String text, @NotNull TextRange range, @NotNull Consumer consumer) { if (text == null || range.getLength() < 1 || range.getStartOffset() < 0) { return; } diff --git a/spellchecker/src/com/intellij/spellchecker/inspections/PlainTextSplitter.java b/spellchecker/src/com/intellij/spellchecker/inspections/PlainTextSplitter.java index 4ff8602c9b45..b456bcd60778 100644 --- a/spellchecker/src/com/intellij/spellchecker/inspections/PlainTextSplitter.java +++ b/spellchecker/src/com/intellij/spellchecker/inspections/PlainTextSplitter.java @@ -56,7 +56,7 @@ public class PlainTextSplitter extends BaseSplitter { private static final Pattern JWT_PATTERN = Pattern.compile("[A-Za-z0-9+=/_\\-.]+"); @Override - public void split(@Nullable String text, @NotNull TextRange range, Consumer consumer) { + public void split(@Nullable String text, @NotNull TextRange range, @NotNull Consumer consumer) { if (StringUtil.isEmpty(text)) { return; } diff --git a/spellchecker/src/com/intellij/spellchecker/inspections/PropertiesSplitter.java b/spellchecker/src/com/intellij/spellchecker/inspections/PropertiesSplitter.java index bedb10abc855..8546b8a0fafe 100644 --- a/spellchecker/src/com/intellij/spellchecker/inspections/PropertiesSplitter.java +++ b/spellchecker/src/com/intellij/spellchecker/inspections/PropertiesSplitter.java @@ -21,11 +21,12 @@ public final class PropertiesSplitter extends BaseSplitter { private static final @NonNls Pattern WORD = Pattern.compile("\\p{L}*"); @Override - public void split(@Nullable String text, @NotNull TextRange range, Consumer consumer) { + public void split(@Nullable String text, @NotNull TextRange range, @NotNull Consumer consumer) { if (text == null || StringUtil.isEmpty(text)) { return; } - final IdentifierSplitter splitter = IdentifierSplitter.getInstance(); + var splitter = IdentifierSplitter.getInstance(); + //noinspection IncorrectCancellationExceptionHandling custom exception handling try { Matcher matcher = WORD.matcher(newBombedCharSequence(text, range)); while (matcher.find()) { diff --git a/spellchecker/src/com/intellij/spellchecker/inspections/Splitter.java b/spellchecker/src/com/intellij/spellchecker/inspections/Splitter.java index 29d328ee3fae..e5f41fa34fc2 100644 --- a/spellchecker/src/com/intellij/spellchecker/inspections/Splitter.java +++ b/spellchecker/src/com/intellij/spellchecker/inspections/Splitter.java @@ -7,5 +7,5 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public interface Splitter { - void split(@Nullable String text, @NotNull TextRange range, Consumer consumer); + void split(@Nullable String text, @NotNull TextRange range, @NotNull Consumer consumer); } diff --git a/spellchecker/src/com/intellij/spellchecker/inspections/TextSplitter.java b/spellchecker/src/com/intellij/spellchecker/inspections/TextSplitter.java index ce5d7b39d1e7..ed0bfbee9de1 100644 --- a/spellchecker/src/com/intellij/spellchecker/inspections/TextSplitter.java +++ b/spellchecker/src/com/intellij/spellchecker/inspections/TextSplitter.java @@ -32,7 +32,7 @@ public class TextSplitter extends BaseSplitter { "(_|" + letter + ")*+" // more letters and underscores ); @Override - public void split(@Nullable String text, @NotNull TextRange range, Consumer consumer) { + public void split(@Nullable String text, @NotNull TextRange range, @NotNull Consumer consumer) { if (text == null || StringUtil.isEmpty(text)) { return; } diff --git a/spellchecker/src/com/intellij/spellchecker/inspections/WordSplitter.java b/spellchecker/src/com/intellij/spellchecker/inspections/WordSplitter.java index acfe01da5636..9f460552916c 100644 --- a/spellchecker/src/com/intellij/spellchecker/inspections/WordSplitter.java +++ b/spellchecker/src/com/intellij/spellchecker/inspections/WordSplitter.java @@ -20,7 +20,7 @@ public final class WordSplitter extends BaseSplitter { private static final @NonNls Pattern SPECIAL = Pattern.compile("&\\p{Alnum}{2};?|#\\p{Alnum}{3,6}|0x\\p{Alnum}?"); @Override - public void split(@Nullable String text, @NotNull TextRange range, Consumer consumer) { + public void split(@Nullable String text, @NotNull TextRange range, @NotNull Consumer consumer) { if (text == null || range.getLength() <= 1) { return; } diff --git a/spellchecker/src/com/intellij/spellchecker/tokenizer/EscapeSequenceTokenizer.java b/spellchecker/src/com/intellij/spellchecker/tokenizer/EscapeSequenceTokenizer.java index 9ecfb5485283..87a4dd9e58bb 100644 --- a/spellchecker/src/com/intellij/spellchecker/tokenizer/EscapeSequenceTokenizer.java +++ b/spellchecker/src/com/intellij/spellchecker/tokenizer/EscapeSequenceTokenizer.java @@ -7,7 +7,6 @@ import com.intellij.psi.PsiElement; import com.intellij.spellchecker.inspections.PlainTextSplitter; import org.jetbrains.annotations.NotNull; - public abstract class EscapeSequenceTokenizer extends Tokenizer { private static final Key ESCAPE_OFFSETS = Key.create("escape.tokenizer.offsets"); @@ -20,7 +19,7 @@ public abstract class EscapeSequenceTokenizer extends Toke } @Override - public @NotNull TextRange getHighlightingRange(PsiElement element, int offset, TextRange range) { + public @NotNull TextRange getHighlightingRange(@NotNull PsiElement element, int offset, @NotNull TextRange range) { final int[] offsets = element.getUserData(ESCAPE_OFFSETS); if (offsets != null) { int start = offsets[range.getStartOffset()]; diff --git a/spellchecker/src/com/intellij/spellchecker/tokenizer/SpellcheckingStrategy.java b/spellchecker/src/com/intellij/spellchecker/tokenizer/SpellcheckingStrategy.java index fa8ec2e32b89..8049e5736f6e 100644 --- a/spellchecker/src/com/intellij/spellchecker/tokenizer/SpellcheckingStrategy.java +++ b/spellchecker/src/com/intellij/spellchecker/tokenizer/SpellcheckingStrategy.java @@ -54,7 +54,10 @@ public class SpellcheckingStrategy implements PossiblyDumbAware { public static final Tokenizer TEXT_TOKENIZER = new TokenizerBase<>(PlainTextSplitter.getInstance()); - public Tokenizer getTokenizer(PsiElement element, Set scope) { + /** + * @see SpellcheckingStrategy#EMPTY_TOKENIZER + */ + public @NotNull Tokenizer getTokenizer(@NotNull PsiElement element, @NotNull Set scope) { return getTokenizer(element); } diff --git a/spellchecker/src/com/intellij/spellchecker/tokenizer/Tokenizer.java b/spellchecker/src/com/intellij/spellchecker/tokenizer/Tokenizer.java index 5709e03ffb71..4759676eeb5b 100644 --- a/spellchecker/src/com/intellij/spellchecker/tokenizer/Tokenizer.java +++ b/spellchecker/src/com/intellij/spellchecker/tokenizer/Tokenizer.java @@ -9,7 +9,7 @@ public abstract class Tokenizer { public abstract void tokenize(@NotNull T element, @NotNull TokenConsumer consumer); - public @NotNull TextRange getHighlightingRange(PsiElement element, int offset, TextRange textRange) { + public @NotNull TextRange getHighlightingRange(@NotNull PsiElement element, int offset, @NotNull TextRange textRange) { return TextRange.from(offset + textRange.getStartOffset(), textRange.getLength()); } } diff --git a/spellchecker/src/com/intellij/spellchecker/tokenizer/TokenizerBase.java b/spellchecker/src/com/intellij/spellchecker/tokenizer/TokenizerBase.java index 95a238e25f37..4440ea2d20eb 100644 --- a/spellchecker/src/com/intellij/spellchecker/tokenizer/TokenizerBase.java +++ b/spellchecker/src/com/intellij/spellchecker/tokenizer/TokenizerBase.java @@ -1,13 +1,12 @@ // Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.spellchecker.tokenizer; +import com.intellij.lang.injection.InjectedLanguageManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiLanguageInjectionHost; -import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.spellchecker.inspections.Splitter; import org.jetbrains.annotations.NotNull; - public class TokenizerBase extends Tokenizer { public static TokenizerBase create(Splitter splitter) { return new TokenizerBase<>(splitter); @@ -26,9 +25,11 @@ public class TokenizerBase extends Tokenizer { @Override public void tokenize(@NotNull T element, @NotNull TokenConsumer consumer) { - if (element instanceof PsiLanguageInjectionHost && InjectedLanguageUtil.hasInjections((PsiLanguageInjectionHost)element)) { + if (element instanceof PsiLanguageInjectionHost + && InjectedLanguageManager.getInstance(element.getProject()).getInjectedPsiFiles(element) != null) { return; } + consumer.consumeToken(element, mySplitter); } } diff --git a/xml/impl/src/com/intellij/spellchecker/xml/XmlTokenizerBase.java b/xml/impl/src/com/intellij/spellchecker/xml/XmlTokenizerBase.java index f180a9ba5921..3e5e58838ed1 100644 --- a/xml/impl/src/com/intellij/spellchecker/xml/XmlTokenizerBase.java +++ b/xml/impl/src/com/intellij/spellchecker/xml/XmlTokenizerBase.java @@ -89,7 +89,7 @@ public class XmlTokenizerBase extends Tokenizer { private @NotNull Splitter createExclusionAwareSplitter(List excludeRanges, int offset) { return new Splitter() { @Override - public void split(@Nullable String text, @NotNull TextRange range, Consumer consumer) { + public void split(@Nullable String text, @NotNull TextRange range, @NotNull Consumer consumer) { mySplitter.split(text, range, tokenRange -> { if (ContainerUtil.all(excludeRanges, excludeRange -> !excludeRange.intersects(tokenRange.shiftRight(offset)))) { consumer.consume(tokenRange);