mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-05-06 05:10:22 +07:00
expected type by prefix expression should be calculated by parent (IDEA-166819)
This commit is contained in:
@@ -754,8 +754,9 @@ public class ExpectedTypesProvider {
|
||||
public void visitPrefixExpression(@NotNull PsiPrefixExpression expr) {
|
||||
IElementType i = expr.getOperationTokenType();
|
||||
final PsiType type = expr.getType();
|
||||
final TailType tailType = expr.getParent() instanceof PsiAssignmentExpression && ((PsiAssignmentExpression) expr.getParent()).getRExpression() == expr ?
|
||||
getAssignmentRValueTailType((PsiAssignmentExpression) expr.getParent()) :
|
||||
final PsiElement parent = expr.getParent();
|
||||
final TailType tailType = parent instanceof PsiAssignmentExpression && ((PsiAssignmentExpression)parent).getRExpression() == expr ?
|
||||
getAssignmentRValueTailType((PsiAssignmentExpression)parent) :
|
||||
TailType.NONE;
|
||||
if (i == JavaTokenType.PLUSPLUS || i == JavaTokenType.MINUSMINUS || i == JavaTokenType.TILDE) {
|
||||
ExpectedTypeInfoImpl info;
|
||||
@@ -773,7 +774,13 @@ public class ExpectedTypesProvider {
|
||||
myResult.add(info);
|
||||
}
|
||||
else if (i == JavaTokenType.PLUS || i == JavaTokenType.MINUS) {
|
||||
myResult.add(createInfoImpl(PsiType.DOUBLE, ExpectedTypeInfo.TYPE_OR_SUBTYPE, PsiType.INT, tailType));
|
||||
if (parent instanceof PsiStatement) {
|
||||
myResult.add(createInfoImpl(PsiType.DOUBLE, ExpectedTypeInfo.TYPE_OR_SUBTYPE, PsiType.INT, tailType));
|
||||
}
|
||||
else {
|
||||
myExpr = (PsiExpression)myExpr.getParent();
|
||||
parent.accept(this);
|
||||
}
|
||||
}
|
||||
else if (i == JavaTokenType.EXCL) {
|
||||
myResult.add(createInfoImpl(PsiType.BOOLEAN, ExpectedTypeInfo.TYPE_STRICTLY, PsiType.BOOLEAN, tailType));
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
// "Create method 'f'" "true"
|
||||
class A {
|
||||
{
|
||||
double d = -f();
|
||||
}
|
||||
|
||||
private double f() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
// "Create method 'f'" "true"
|
||||
class A {
|
||||
{
|
||||
-f();
|
||||
}
|
||||
|
||||
private int f() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
// "Create method 'f'" "true"
|
||||
class A {
|
||||
{
|
||||
double d = -f<caret>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
// "Create method 'f'" "true"
|
||||
class A {
|
||||
{
|
||||
-f<caret>();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user