예제 #1
0
  @Nullable
  public static PsiType normalizeWildcardTypeByPosition(
      @NotNull PsiType type, @NotNull GrExpression expression) {
    GrExpression toplevel = expression;
    while (toplevel.getParent() instanceof GrIndexProperty
        && ((GrIndexProperty) toplevel.getParent()).getInvokedExpression() == toplevel) {
      toplevel = (GrExpression) toplevel.getParent();
    }

    final PsiType normalized = doNormalizeWildcardByPosition(type, expression, toplevel);
    if (normalized instanceof PsiClassType && !PsiUtil.isAccessedForWriting(toplevel)) {
      return com.intellij.psi.util.PsiUtil.captureToplevelWildcards(normalized, expression);
    }

    return normalized;
  }