From cb5a0b729bddd32f40911fc0e45c0e4f0c89eb5c Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 10 Feb 2014 14:23:04 +0100 Subject: [PATCH] new inference: strict subtyping constraint: null processing --- .../constraints/StrictSubtypingConstraint.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/StrictSubtypingConstraint.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/StrictSubtypingConstraint.java index d23bdaef1b91..88accf95e0d4 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/StrictSubtypingConstraint.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/StrictSubtypingConstraint.java @@ -46,19 +46,18 @@ public class StrictSubtypingConstraint implements ConstraintFormula { public boolean reduce(InferenceSession session, List constraints) { if (session.isProperType(myS) && session.isProperType(myT)) { if (myT == null) return myS == null || myS.equalsToText(CommonClassNames.JAVA_LANG_OBJECT); - if (myS == null) return myT.equalsToText(CommonClassNames.JAVA_LANG_OBJECT); + if (myS == null) return true; return TypeConversionUtil.isAssignable(myT, myS); } - if (PsiType.NULL.equals(myS)) return true; - if (PsiType.NULL.equals(myT)) return false; + if (PsiType.NULL.equals(myS) || myS == null) return true; + if (PsiType.NULL.equals(myT) || myT == null) return false; InferenceVariable inferenceVariable = session.getInferenceVariable(myS); if (inferenceVariable != null) { inferenceVariable.addBound(myT, InferenceBound.UPPER); return true; } - if (PsiType.NULL.equals(myS) || myS == null) return true; inferenceVariable = session.getInferenceVariable(myT); if (inferenceVariable != null) { inferenceVariable.addBound(myS, InferenceBound.LOWER);