EA-38865 Fail for convention functions names

This commit is contained in:
Nikolay Krasko
2012-09-04 22:56:12 +04:00
parent c2b3cd79b3
commit d4564a41e3
5 changed files with 45 additions and 11 deletions
@@ -21,13 +21,16 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.intellij.psi.impl.CheckUtil;
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.resolve.ImportPath;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.expressions.OperatorConventions;
import org.jetbrains.jet.lang.types.lang.JetStandardClasses;
import org.jetbrains.jet.lexer.JetToken;
import org.jetbrains.jet.lexer.JetTokens;
import java.util.Collection;
@@ -353,6 +356,24 @@ public class JetPsiUtil {
return !(multiDeclarationEntry.getParent().getParent() instanceof JetForExpression);
}
@Nullable
public static Name getConventionName(@NotNull JetSimpleNameExpression simpleNameExpression) {
if (simpleNameExpression.getIdentifier() != null) {
return simpleNameExpression.getReferencedNameAsName();
}
PsiElement firstChild = simpleNameExpression.getFirstChild();
if (firstChild != null) {
IElementType elementType = firstChild.getNode().getElementType();
if (elementType instanceof JetToken) {
JetToken jetToken = (JetToken) elementType;
return OperatorConventions.getNameForOperationSymbol(jetToken);
}
}
return null;
}
public static PsiElement getTopmostParentOfTypes(@Nullable PsiElement element, @NotNull Class<? extends PsiElement>... parentTypes) {
if (element == null) {
return null;
@@ -26,7 +26,7 @@ public class Name implements Comparable<Name> {
private final String name;
private final boolean special;
private Name(String name, boolean special) {
private Name(@NotNull String name, boolean special) {
this.name = name;
this.special = special;
}