langtools/src/share/classes/com/sun/tools/javac/comp/Infer.java
changeset 23124 63050cb08583
parent 22165 ec53c8946fc2
child 23132 00a059740d87
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Infer.java	Fri Feb 21 15:14:09 2014 +0400
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Infer.java	Sat Feb 22 17:42:10 2014 +0000
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -583,11 +583,17 @@
                     }
                 }
             }
+
+            @Override
+            boolean accepts(UndetVar uv, InferenceContext inferenceContext) {
+                return !uv.isCaptured() && uv.getBounds(InferenceBound.EQ).nonEmpty();
+            }
         },
         /**
          * Check consistency of equality constraints.
          */
         EQ_CHECK() {
+            @Override
             public void apply(UndetVar uv, InferenceContext inferenceContext, Warner warn) {
                 Infer infer = inferenceContext.infer();
                 for (Type e : uv.getBounds(InferenceBound.EQ)) {
@@ -604,6 +610,11 @@
                     }
                 }
             }
+
+            @Override
+            boolean accepts(UndetVar uv, InferenceContext inferenceContext) {
+                return !uv.isCaptured() && uv.getBounds(InferenceBound.EQ).nonEmpty();
+            }
         },
         /**
          * Given a bound set containing {@code alpha <: T} and {@code alpha :> S}
@@ -618,6 +629,13 @@
                     }
                 }
             }
+
+            @Override
+            boolean accepts(UndetVar uv, InferenceContext inferenceContext) {
+                return !uv.isCaptured() &&
+                        uv.getBounds(InferenceBound.UPPER).nonEmpty() &&
+                        uv.getBounds(InferenceBound.LOWER).nonEmpty();
+            }
         },
         /**
          * Given a bound set containing {@code alpha <: T} and {@code alpha == S}
@@ -632,6 +650,13 @@
                     }
                 }
             }
+
+            @Override
+            boolean accepts(UndetVar uv, InferenceContext inferenceContext) {
+                return !uv.isCaptured() &&
+                        uv.getBounds(InferenceBound.EQ).nonEmpty() &&
+                        uv.getBounds(InferenceBound.UPPER).nonEmpty();
+            }
         },
         /**
          * Given a bound set containing {@code alpha :> S} and {@code alpha == T}
@@ -646,6 +671,13 @@
                     }
                 }
             }
+
+            @Override
+            boolean accepts(UndetVar uv, InferenceContext inferenceContext) {
+                return !uv.isCaptured() &&
+                        uv.getBounds(InferenceBound.EQ).nonEmpty() &&
+                        uv.getBounds(InferenceBound.LOWER).nonEmpty();
+            }
         },
         /**
          * Given a bound set containing {@code alpha == S} and {@code alpha == T}
@@ -662,6 +694,12 @@
                     }
                 }
             }
+
+            @Override
+            boolean accepts(UndetVar uv, InferenceContext inferenceContext) {
+                return !uv.isCaptured() &&
+                        uv.getBounds(InferenceBound.EQ).nonEmpty();
+            }
         },
         /**
          * Given a bound set containing {@code alpha <: beta} propagate lower bounds
@@ -688,6 +726,12 @@
                     }
                 }
             }
+
+            @Override
+            boolean accepts(UndetVar uv, InferenceContext inferenceContext) {
+                return !uv.isCaptured() &&
+                        uv.getBounds(InferenceBound.UPPER).nonEmpty();
+            }
         },
         /**
          * Given a bound set containing {@code alpha :> beta} propagate lower bounds
@@ -714,6 +758,12 @@
                     }
                 }
             }
+
+            @Override
+            boolean accepts(UndetVar uv, InferenceContext inferenceContext) {
+                return !uv.isCaptured() &&
+                        uv.getBounds(InferenceBound.LOWER).nonEmpty();
+            }
         },
         /**
          * Given a bound set containing {@code alpha == beta} propagate lower/upper
@@ -748,6 +798,12 @@
                     }
                 }
             }
+
+            @Override
+            boolean accepts(UndetVar uv, InferenceContext inferenceContext) {
+                return !uv.isCaptured() &&
+                        uv.getBounds(InferenceBound.EQ).nonEmpty();
+            }
         };
 
         abstract void apply(UndetVar uv, InferenceContext inferenceContext, Warner warn);