From fe18bed7c3eafdf4c5f8de001859d3c306c83a6e Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Mon, 23 May 2016 16:18:20 +0200 Subject: [PATCH] regex: disallow literal backspace [\b] inside java --- .../src/org/intellij/lang/regexp/RegExpLanguageHost.java | 4 ++++ .../src/org/intellij/lang/regexp/RegExpLanguageHosts.java | 5 +++++ .../org/intellij/lang/regexp/validation/RegExpAnnotator.java | 2 +- RegExpSupport/testData/RETest.xml | 4 ++++ java/java-impl/src/com/intellij/psi/impl/JavaRegExpHost.java | 5 +++++ 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java index e00c1af129fe..1155e09ce160 100644 --- a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java +++ b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java @@ -38,6 +38,10 @@ public interface RegExpLanguageHost { return true; } + default boolean supportsLiteralBackspace(RegExpChar aChar) { + return true; + } + boolean isValidCategory(@NotNull String category); @NotNull String[][] getAllKnownProperties(); diff --git a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java index 02b028d3d62f..71ac84ef0138 100644 --- a/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java +++ b/RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java @@ -91,6 +91,11 @@ public final class RegExpLanguageHosts extends ClassExtension\-[\*\-\[\]\\\+]]]> OK + + [\b] + ERR + diff --git a/java/java-impl/src/com/intellij/psi/impl/JavaRegExpHost.java b/java/java-impl/src/com/intellij/psi/impl/JavaRegExpHost.java index e81feb553bbf..8f2e3a626943 100644 --- a/java/java-impl/src/com/intellij/psi/impl/JavaRegExpHost.java +++ b/java/java-impl/src/com/intellij/psi/impl/JavaRegExpHost.java @@ -101,6 +101,11 @@ public class JavaRegExpHost implements RegExpLanguageHost { } } + @Override + public boolean supportsLiteralBackspace(RegExpChar aChar) { + return false; + } + private static boolean hasAtLeastJdkVersion(PsiElement element, JavaSdkVersion version) { final JavaSdkVersion version1 = getJavaVersion(element); return version1 != null && version1.isAtLeast(version);