Search in sources :

Example 41 with GrTypeElement

use of org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement in project intellij-community by JetBrains.

the class GrRemoveExceptionFix method findTypeElementInDisjunction.

@Nullable
private static GrTypeElement findTypeElementInDisjunction(Editor editor, PsiFile file) {
    final int offset = editor.getCaretModel().getOffset();
    final PsiElement at = file.findElementAt(offset);
    final GrDisjunctionTypeElement disjunction = PsiTreeUtil.getParentOfType(at, GrDisjunctionTypeElement.class);
    if (disjunction == null)
        return null;
    for (GrTypeElement element : disjunction.getTypeElements()) {
        if (element.getTextRange().contains(offset)) {
            return element;
        }
    }
    return null;
}
Also used : GrTypeElement(org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement) GrDisjunctionTypeElement(org.jetbrains.plugins.groovy.lang.psi.api.types.GrDisjunctionTypeElement) PsiElement(com.intellij.psi.PsiElement) Nullable(org.jetbrains.annotations.Nullable)

Example 42 with GrTypeElement

use of org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement in project intellij-community by JetBrains.

the class GrReplacePrimitiveTypeWithWrapperFix method doFix.

@Override
protected void doFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) throws IncorrectOperationException {
    final PsiElement element = descriptor.getPsiElement();
    assert element instanceof GrTypeElement : element;
    GrTypeElement typeElement = (GrTypeElement) element;
    final PsiType type = typeElement.getType();
    if (!(type instanceof PsiPrimitiveType))
        return;
    final PsiClassType boxed = ((PsiPrimitiveType) type).getBoxedType(typeElement);
    if (boxed == null)
        return;
    final GrTypeElement newTypeElement = GroovyPsiElementFactory.getInstance(project).createTypeElement(boxed);
    final PsiElement replaced = typeElement.replace(newTypeElement);
    JavaCodeStyleManager.getInstance(project).shortenClassReferences(replaced);
}
Also used : GrTypeElement(org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement) PsiClassType(com.intellij.psi.PsiClassType) PsiPrimitiveType(com.intellij.psi.PsiPrimitiveType) PsiElement(com.intellij.psi.PsiElement) PsiType(com.intellij.psi.PsiType)

Example 43 with GrTypeElement

use of org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement in project intellij-community by JetBrains.

the class GrWildcardTypeArgumentImpl method getType.

@Override
@NotNull
public PsiType getType() {
    final GrTypeElement boundTypeElement = getBoundTypeElement();
    if (boundTypeElement == null)
        return PsiWildcardType.createUnbounded(getManager());
    if (isExtends())
        return PsiWildcardType.createExtends(getManager(), boundTypeElement.getType());
    if (isSuper())
        return PsiWildcardType.createSuper(getManager(), boundTypeElement.getType());
    LOG.error("Untested case");
    return null;
}
Also used : GrTypeElement(org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement) NotNull(org.jetbrains.annotations.NotNull)

Example 44 with GrTypeElement

use of org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement in project intellij-community by JetBrains.

the class DuplicatesUtil method collectMethodDuplicates.

public static void collectMethodDuplicates(Map<GrMethod, List<GrMethod>> map, HashSet<GrMethod> duplicateMethodsWarning, HashSet<GrMethod> duplicateMethodsErrors) {
    for (GrMethod method : map.keySet()) {
        List<GrMethod> duplicateMethods = map.get(method);
        if (duplicateMethods != null && duplicateMethods.size() > 1) {
            HashMap<PsiType, GrMethod> duplicateMethodsToReturnTypeMap = new HashMap<>();
            for (GrMethod duplicateMethod : duplicateMethods) {
                GrTypeElement typeElement = duplicateMethod.getReturnTypeElementGroovy();
                PsiType methodReturnType;
                if (typeElement != null) {
                    methodReturnType = typeElement.getType();
                } else {
                    methodReturnType = PsiType.NULL;
                }
                duplicateMethodsWarning.add(duplicateMethod);
                GrMethod grMethodWithType = duplicateMethodsToReturnTypeMap.get(methodReturnType);
                if (grMethodWithType != null) {
                    duplicateMethodsErrors.add(duplicateMethod);
                    duplicateMethodsErrors.add(grMethodWithType);
                    duplicateMethodsWarning.remove(duplicateMethod);
                    duplicateMethodsWarning.remove(grMethodWithType);
                }
                duplicateMethodsToReturnTypeMap.put(methodReturnType, duplicateMethod);
            }
        }
    }
}
Also used : GrTypeElement(org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement) THashMap(gnu.trove.THashMap) GrMethod(org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod) PsiType(com.intellij.psi.PsiType)

Example 45 with GrTypeElement

use of org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement in project intellij-community by JetBrains.

the class EquivalenceChecker method instanceofExpressionsAreEquivalent.

private static boolean instanceofExpressionsAreEquivalent(GrInstanceOfExpression expression1, GrInstanceOfExpression expression2) {
    final GrExpression operand1 = expression1.getOperand();
    final GrExpression operand2 = expression2.getOperand();
    if (!expressionsAreEquivalent(operand1, operand2)) {
        return false;
    }
    GrTypeElement typeElement1 = expression1.getTypeElement();
    GrTypeElement typeElement2 = expression2.getTypeElement();
    if (typeElement1 == null || typeElement2 == null)
        return false;
    final PsiType type1 = typeElement1.getType();
    final PsiType type2 = typeElement2.getType();
    return typesAreEquivalent(type1, type2);
}
Also used : GrTypeElement(org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement) PsiType(com.intellij.psi.PsiType)

Aggregations

GrTypeElement (org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement)52 Nullable (org.jetbrains.annotations.Nullable)12 PsiType (com.intellij.psi.PsiType)9 GrExpression (org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression)9 PsiElement (com.intellij.psi.PsiElement)7 GrVariableDeclaration (org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariableDeclaration)7 IncorrectOperationException (com.intellij.util.IncorrectOperationException)6 NotNull (org.jetbrains.annotations.NotNull)6 GroovyPsiElement (org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement)6 GrParameter (org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameter)6 TextRange (com.intellij.openapi.util.TextRange)5 GroovyPsiElementFactory (org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory)5 GrModifierList (org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.GrModifierList)5 GrVariable (org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariable)4 GrTypeCastExpression (org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrTypeCastExpression)4 GrMethod (org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod)4 Document (com.intellij.openapi.editor.Document)3 GrSafeCastExpression (org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrSafeCastExpression)3 Template (com.intellij.codeInsight.template.Template)2 TemplateBuilderImpl (com.intellij.codeInsight.template.TemplateBuilderImpl)2