[properties, inspection, fix] support native2ascii IDEA-360007

GitOrigin-RevId: cc7a343d2783063082a6016209a575e51008f062
This commit is contained in:
Aleksey Dobrynin
2024-10-11 15:49:50 +02:00
committed by intellij-monorepo-bot
parent a65fee2510
commit e5751fff5d
2 changed files with 26 additions and 1 deletions

View File

@@ -57,7 +57,8 @@ public class UnsupportedCharacterInspection extends PropertiesInspectionBase {
VirtualFile file = psiFile.getVirtualFile();
if (file == null) return false;
EncodingRegistry encoding = EncodingRegistry.getInstance();
boolean isCustomized = encoding.getDefaultCharsetForPropertiesFiles(file) != null ||
boolean isCustomized = encoding.isNative2Ascii(file) ||
encoding.getDefaultCharsetForPropertiesFiles(file) != null ||
encoding.getEncoding(file, true) != NEW_JAVA_DEFAULT_CHARSET;
return !isCustomized && hasErrorCharacter(element, property.getValue());
}

View File

@@ -4,9 +4,11 @@ package com.intellij.codeInspection.i18n;
import com.intellij.lang.properties.UnsupportedCharacterInspection;
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
import com.intellij.openapi.vfs.encoding.EncodingManager;
import com.intellij.openapi.vfs.encoding.EncodingProjectManager;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.PsiFile;
import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase;
import com.intellij.util.ui.UIUtil;
import org.intellij.lang.annotations.Language;
import java.io.IOException;
@@ -49,6 +51,28 @@ public class UnsupportedCharacterInspectionTest extends JavaCodeInsightFixtureTe
checkFile(props, "key1=Java + \\u2615");
}
public void testJava8WithNative2Ascii() {
javaVersion(LanguageLevel.JDK_1_8);
PsiFile javaFile = addClass("Test.java", """
import java.util.*;
public final class Test {
public static void main(String[] args) {
String value = ResourceBundle.getBundle("test").getString("<caret>key1");
}
}
""");
PsiFile props = addFile("test.properties", "key1=Java + ☕");
EncodingProjectManager.getInstance(getProject()).setNative2AsciiForPropertiesFiles(props.getVirtualFile(), true);
UIUtil.dispatchAllInvocationEvents();
fileEncoding(props, StandardCharsets.UTF_8);
propertiesEncoding(props, null);
checkHighlighting(javaFile);
}
public void testJava8PlusConstantWithConversion() throws IOException {
javaVersion(LanguageLevel.JDK_1_8);