From 971ba07c243b554fad3410024a55b52a6dfeed37 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Mon, 25 Mar 2019 11:34:58 +0100 Subject: [PATCH] RegExp: redundantly escaped 'u' not correctly unescaped (IDEA-208559) --- .../lang/regexp/psi/impl/RegExpCharImpl.java | 2 +- .../RedundantEscapeInspectionTest.java | 23 +++++++------------ 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpCharImpl.java b/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpCharImpl.java index 76c80ac8b6a0..0dd8a0a800d1 100644 --- a/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpCharImpl.java +++ b/RegExpSupport/src/org/intellij/lang/regexp/psi/impl/RegExpCharImpl.java @@ -106,7 +106,7 @@ public class RegExpCharImpl extends RegExpElementImpl implements RegExpChar { } return length == 4 ? parseNumber(s, 2, 16) : -1; case 'u': - if (length <= 2) return -1; + if (length <= 2) return 'u'; if (s.charAt(2) == '{') { final char c = s.charAt(length - 1); return (c != '}') ? -1 : parseNumber(s, 3, 16); diff --git a/RegExpSupport/test/org/intellij/lang/regexp/inspection/RedundantEscapeInspectionTest.java b/RegExpSupport/test/org/intellij/lang/regexp/inspection/RedundantEscapeInspectionTest.java index 8911630765d9..841051714568 100644 --- a/RegExpSupport/test/org/intellij/lang/regexp/inspection/RedundantEscapeInspectionTest.java +++ b/RegExpSupport/test/org/intellij/lang/regexp/inspection/RedundantEscapeInspectionTest.java @@ -1,21 +1,9 @@ -/* - * Copyright 2000-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2000-2019 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 org.intellij.lang.regexp.inspection; import com.intellij.codeInspection.LocalInspectionTool; +import org.intellij.lang.regexp.RegExpFileType; +import org.intellij.lang.regexp.ecmascript.EcmaScriptRegexpLanguage; import org.jetbrains.annotations.NotNull; /** @@ -36,6 +24,11 @@ public class RedundantEscapeInspectionTest extends RegExpInspectionTestCase { highlightTest("a\\ b\\ c"); } + public void testEscapedU() { + quickfixTest("\\u", "u", "Remove redundant escape", + new RegExpFileType(EcmaScriptRegexpLanguage.INSTANCE)); + } + @NotNull @Override protected LocalInspectionTool getInspection() {