sanitize suggested java identifiers

This commit is contained in:
anna
2010-08-09 18:54:36 +04:00
parent 3b8170b617
commit 1994a3eaf9
2 changed files with 15 additions and 6 deletions
@@ -38,7 +38,6 @@ import com.intellij.psi.util.TypeConversionUtil;
import com.intellij.util.ArrayUtil;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.HashSet;
import gnu.trove.THashSet;
import gnu.trove.TObjectHashingStrategy;
import org.jetbrains.annotations.NonNls;
@@ -589,7 +588,7 @@ public class JavaCodeStyleManagerImpl extends JavaCodeStyleManager {
String[] names = getSuggestionsByName(propertyName, variableKind, false);
final PsiExpression qualifierExpression = methodExpr.getQualifierExpression();
if (qualifierExpression instanceof PsiReferenceExpression && ((PsiReferenceExpression)qualifierExpression).resolve() instanceof PsiVariable) {
names = ArrayUtil.append(names, changeIfNotIdentifier(qualifierExpression.getText() + StringUtil.capitalize(propertyName)));
names = ArrayUtil.append(names, StringUtil.sanitizeJavaIdentifier(changeIfNotIdentifier(qualifierExpression.getText() + StringUtil.capitalize(propertyName))));
}
return new NamesByExprInfo(propertyName, names);
}
@@ -945,7 +944,7 @@ public class JavaCodeStyleManagerImpl extends JavaCodeStyleManager {
@NotNull
public SuggestedNameInfo suggestUniqueVariableName(@NotNull final SuggestedNameInfo baseNameInfo, PsiElement place, boolean lookForward) {
final String[] names = baseNameInfo.names;
Set<String> uniqueNames = new HashSet<String>(names.length);
final LinkedHashSet<String> uniqueNames = new LinkedHashSet<String>(names.length);
for (String name : names) {
uniqueNames.add(suggestUniqueVariableName(name, place, lookForward));
}
@@ -31,11 +31,8 @@ import org.jetbrains.annotations.Nullable;
import java.beans.Introspector;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.DateFormat;
import java.util.*;
import java.util.regex.MatchResult;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -1608,6 +1605,19 @@ public class StringUtil {
return "a" + Character.toUpperCase(c) + name.substring(1);
}
public static String sanitizeJavaIdentifier(String name) {
final StringBuilder result = new StringBuilder();
for (int i = 0; i < name.length(); i++) {
final char ch = name.charAt(i);
if (Character.isLetterOrDigit(ch)) {
result.append(ch);
}
}
return result.toString();
}
public static void assertValidSeparators(@NotNull CharSequence s) {
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '\r') {