8201281: Truncated error message with Incompatible : null
authorvromero
Tue, 24 Apr 2018 08:13:30 -0700
changeset 49872 0798eab12791
parent 49871 3325ee1c0fc4
child 49873 26ebfe8ce852
8201281: Truncated error message with Incompatible : null Reviewed-by: mcimadamore
src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Infer.java
src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java
src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties
test/langtools/tools/javac/Diagnostics/6722234/T6722234d_1.out
test/langtools/tools/javac/Diagnostics/6722234/T6722234d_2.out
test/langtools/tools/javac/Diagnostics/6799605/T6799605.out
test/langtools/tools/javac/T8171325/NPEClearingLocalClassNameIndexesTest.out
test/langtools/tools/javac/T8201281/NullInErrorMessageTest.java
test/langtools/tools/javac/T8201281/NullInErrorMessageTest.out
test/langtools/tools/javac/diags/examples.not-yet.txt
test/langtools/tools/javac/diags/examples/CantApplyDiamond1.java
test/langtools/tools/javac/diags/examples/IncompatibleEqUpperBounds.java
test/langtools/tools/javac/diags/examples/InferredDoNotConformToEq.java
test/langtools/tools/javac/diags/examples/InferredDoNotConformToUpper.java
test/langtools/tools/javac/diags/examples/WhereTypeVar2.java
test/langtools/tools/javac/generics/UnsoundInference.out
test/langtools/tools/javac/generics/diamond/neg/Neg06.out
test/langtools/tools/javac/generics/diamond/neg/Neg07.out
test/langtools/tools/javac/generics/inference/4941882/T4941882.out
test/langtools/tools/javac/generics/inference/6315770/T6315770.out
test/langtools/tools/javac/generics/inference/6611449/T6611449.out
test/langtools/tools/javac/generics/inference/6638712/T6638712b.out
test/langtools/tools/javac/generics/inference/6638712/T6638712d.out
test/langtools/tools/javac/generics/inference/6638712/T6638712e.out
test/langtools/tools/javac/generics/inference/6650759/T6650759m.out
test/langtools/tools/javac/generics/inference/7177306/T7177306b.out
test/langtools/tools/javac/generics/inference/7177306/T7177306e.out
test/langtools/tools/javac/generics/inference/8019824/T8019824.out
test/langtools/tools/javac/generics/inference/8062977/T8062977.out
test/langtools/tools/javac/generics/inference/EagerReturnTypeResolution/PrimitiveTypeBoxingTest.out
test/langtools/tools/javac/generics/odersky/BadTest3.out
test/langtools/tools/javac/generics/wildcards/6762569/T6762569b.out
test/langtools/tools/javac/lambda/8016177/T8016177g.out
test/langtools/tools/javac/lambda/MethodReference41.out
test/langtools/tools/javac/lambda/MethodReference42.out
test/langtools/tools/javac/lambda/MethodReference43.out
test/langtools/tools/javac/lambda/MethodReference44.out
test/langtools/tools/javac/lambda/MethodReference46.out
test/langtools/tools/javac/lambda/MethodReference58.out
test/langtools/tools/javac/lambda/MethodReference68.out
test/langtools/tools/javac/lambda/TargetType02.out
test/langtools/tools/javac/lambda/TargetType14.out
test/langtools/tools/javac/lambda/TargetType28.out
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Infer.java	Mon Apr 23 19:32:41 2018 +0100
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Infer.java	Tue Apr 24 08:13:30 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, 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
@@ -37,6 +37,7 @@
 import com.sun.tools.javac.util.*;
 import com.sun.tools.javac.util.GraphUtils.DottableNode;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
+import com.sun.tools.javac.util.JCDiagnostic.Fragment;
 import com.sun.tools.javac.util.List;
 import com.sun.tools.javac.code.*;
 import com.sun.tools.javac.code.Type.*;
@@ -115,7 +116,6 @@
         types = Types.instance(context);
         diags = JCDiagnostic.Factory.instance(context);
         log = Log.instance(context);
-        inferenceException = new InferenceException(diags);
         Options options = Options.instance(context);
         Source source = Source.instance(context);
         allowGraphInference = Feature.GRAPH_INFERENCE.allowedInSource(source)
@@ -144,27 +144,32 @@
 
         @Override
         InapplicableMethodException setMessage() {
-            //no message to set
-            return this;
+            throw new AssertionError("InferenceException is immutable");
         }
 
         @Override
         InapplicableMethodException setMessage(JCDiagnostic diag) {
-            messages = messages.append(diag);
-            return this;
+            throw new AssertionError("InferenceException is immutable");
+        }
+
+        @Override
+        InapplicableMethodException setMessage(String key, Object... args) {
+            throw new AssertionError("InferenceException is immutable");
         }
 
         @Override
         public JCDiagnostic getDiagnostic() {
             return messages.head;
         }
-
-        void clear() {
-            messages = List.nil();
-        }
     }
 
-    protected final InferenceException inferenceException;
+    InferenceException error(JCDiagnostic diag) {
+        InferenceException result = new InferenceException(diags);
+        if (diag != null) {
+            result.messages = result.messages.append(diag);
+        }
+        return result;
+    }
 
     // <editor-fold defaultstate="collapsed" desc="Inference routines">
     /**
@@ -183,7 +188,6 @@
                             Warner warn) throws InferenceException {
         //-System.err.println("instantiateMethod(" + tvars + ", " + mt + ", " + argtypes + ")"); //DEBUG
         final InferenceContext inferenceContext = new InferenceContext(this, tvars);  //B0
-        inferenceException.clear();
         try {
             DeferredAttr.DeferredAttrContext deferredAttrContext =
                         resolveContext.deferredAttrContext(msym, inferenceContext, resultInfo, warn);
@@ -315,7 +319,6 @@
          */
         Type check(Attr.ResultInfo resultInfo) {
             Warner noWarnings = new Warner(null);
-            inferenceException.clear();
             List<Type> saved_undet = null;
             try {
                 /** we need to save the inference context before generating target type constraints.
@@ -430,9 +433,7 @@
         if (!resultInfo.checkContext.compatible(qtype, rsInfoInfContext.asUndetVar(to), retWarn) ||
                 //unchecked conversion is not allowed in source 7 mode
                 (!allowGraphInference && retWarn.hasLint(Lint.LintCategory.UNCHECKED))) {
-            throw inferenceException
-                    .setMessage("infer.no.conforming.instance.exists",
-                    inferenceContext.restvars(), mt.getReturnType(), to);
+            throw error(diags.fragment(Fragments.InferNoConformingInstanceExists(inferenceContext.restvars(), mt.getReturnType(), to)));
         }
         return from;
     }
@@ -1269,41 +1270,49 @@
      * Incorporation error: mismatch between inferred type and given bound.
      */
     void reportInstError(UndetVar uv, InferenceBound ib) {
-        reportInferenceError(
-                String.format("inferred.do.not.conform.to.%s.bounds", StringUtils.toLowerCase(ib.name())),
-                uv.getInst(),
-                uv.getBounds(ib));
+        switch (ib) {
+            case EQ:
+                throw error(diags.fragment(Fragments.InferredDoNotConformToEqBounds(uv.getInst(), uv.getBounds(ib))));
+            case LOWER:
+                throw error(diags.fragment(Fragments.InferredDoNotConformToLowerBounds(uv.getInst(), uv.getBounds(ib))));
+            case UPPER:
+                throw error(diags.fragment(Fragments.InferredDoNotConformToUpperBounds(uv.getInst(), uv.getBounds(ib))));
+        }
     }
 
     /**
      * Incorporation error: mismatch between two (or more) bounds of same kind.
      */
     void reportBoundError(UndetVar uv, InferenceBound ib) {
-        reportInferenceError(
-                String.format("incompatible.%s.bounds", StringUtils.toLowerCase(ib.name())),
-                uv.qtype,
-                uv.getBounds(ib));
+        switch (ib) {
+            case EQ:
+                throw error(diags.fragment(Fragments.IncompatibleEqBounds(uv.qtype, uv.getBounds(ib))));
+            case UPPER:
+                throw error(diags.fragment(Fragments.IncompatibleUpperBounds(uv.qtype, uv.getBounds(ib))));
+            case LOWER:
+                throw new AssertionError("this case shouldn't happen");
+        }
     }
 
     /**
      * Incorporation error: mismatch between two (or more) bounds of different kinds.
      */
     void reportBoundError(UndetVar uv, InferenceBound ib1, InferenceBound ib2) {
-        reportInferenceError(
-                String.format("incompatible.%s.%s.bounds",
-                        StringUtils.toLowerCase(ib1.name()),
-                        StringUtils.toLowerCase(ib2.name())),
+        throw error(diags.fragment(Fragments.IncompatibleBounds(
                 uv.qtype,
-                uv.getBounds(ib1),
-                uv.getBounds(ib2));
+                getBoundFragment(ib1, uv.getBounds(ib1)),
+                getBoundFragment(ib2, uv.getBounds(ib2)))));
     }
 
-    /**
-     * Helper method: reports an inference error.
-     */
-    void reportInferenceError(String key, Object... args) {
-        throw inferenceException.setMessage(key, args);
+    Fragment getBoundFragment(InferenceBound ib, List<Type> types) {
+        switch (ib) {
+            case EQ: return Fragments.EqBounds(types);
+            case LOWER: return Fragments.LowerBounds(types);
+            case UPPER: return Fragments.UpperBounds(types);
+        }
+        throw new AssertionError("can't get to this place");
     }
+
     // </editor-fold>
 
     // <editor-fold defaultstate="collapsed" desc="Inference engine">
@@ -1456,9 +1465,7 @@
                 //note: lobounds should have at least one element
                 Type owntype = lobounds.tail.tail == null  ? lobounds.head : infer.types.lub(lobounds);
                 if (owntype.isPrimitive() || owntype.hasTag(ERROR)) {
-                    throw infer.inferenceException
-                        .setMessage("no.unique.minimal.instance.exists",
-                                    uv.qtype, lobounds);
+                    throw infer.error(infer.diags.fragment(Fragments.NoUniqueMinimalInstanceExists(uv.qtype, lobounds)));
                 } else {
                     return owntype;
                 }
@@ -1499,9 +1506,7 @@
                 //note: hibounds should have at least one element
                 Type owntype = hibounds.tail.tail == null  ? hibounds.head : infer.types.glb(hibounds);
                 if (owntype.isPrimitive() || owntype.hasTag(ERROR)) {
-                    throw infer.inferenceException
-                        .setMessage("no.unique.maximal.instance.exists",
-                                    uv.qtype, hibounds);
+                    throw infer.error(infer.diags.fragment(Fragments.NoUniqueMaximalInstanceExists(uv.qtype, hibounds)));
                 } else {
                     return owntype;
                 }
@@ -1677,7 +1682,7 @@
                             }
                         }
                         //no progress
-                        throw inferenceException.setMessage();
+                        throw error(null);
                     }
                 }
                 catch (InferenceException ex) {
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java	Mon Apr 23 19:32:41 2018 +0100
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java	Tue Apr 24 08:13:30 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2018, 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
@@ -36,7 +36,6 @@
 import com.sun.tools.javac.comp.DeferredAttr.AttrMode;
 import com.sun.tools.javac.comp.DeferredAttr.DeferredAttrContext;
 import com.sun.tools.javac.comp.DeferredAttr.DeferredType;
-import com.sun.tools.javac.comp.Infer.FreeTypeListener;
 import com.sun.tools.javac.comp.Resolve.MethodResolutionContext.Candidate;
 import com.sun.tools.javac.comp.Resolve.MethodResolutionDiagHelper.Template;
 import com.sun.tools.javac.comp.Resolve.ReferenceLookupResult.StaticKind;
@@ -60,7 +59,6 @@
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
-import java.util.LinkedList;
 import java.util.Map;
 import java.util.Set;
 import java.util.function.BiFunction;
@@ -71,6 +69,8 @@
 
 import javax.lang.model.element.ElementVisitor;
 
+import com.sun.tools.javac.comp.Infer.InferenceException;
+
 import static com.sun.tools.javac.code.Flags.*;
 import static com.sun.tools.javac.code.Flags.BLOCK;
 import static com.sun.tools.javac.code.Flags.STATIC;
@@ -811,8 +811,6 @@
 
         protected void reportMC(DiagnosticPosition pos, MethodCheckDiag diag, InferenceContext inferenceContext, Object... args) {
             boolean inferDiag = inferenceContext != infer.emptyContext;
-            InapplicableMethodException ex = inferDiag ?
-                    infer.inferenceException : inapplicableMethodException;
             if (inferDiag && (!diag.inferKey.equals(diag.basicKey))) {
                 Object[] args2 = new Object[args.length + 1];
                 System.arraycopy(args, 0, args2, 1, args.length);
@@ -820,7 +818,10 @@
                 args = args2;
             }
             String key = inferDiag ? diag.inferKey : diag.basicKey;
-            throw ex.setMessage(diags.create(DiagnosticType.FRAGMENT, log.currentSource(), pos, key, args));
+            throw inferDiag ?
+                infer.error(diags.create(DiagnosticType.FRAGMENT, log.currentSource(), pos, key, args)) :
+                inapplicableMethodException
+                        .setMessage(diags.create(DiagnosticType.FRAGMENT, log.currentSource(), pos, key, args));
         }
 
         public MethodCheck mostSpecificCheck(List<Type> actuals) {
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties	Mon Apr 23 19:32:41 2018 +0100
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties	Tue Apr 24 08:13:30 2018 -0700
@@ -2302,6 +2302,7 @@
 compiler.misc.no.unique.maximal.instance.exists=\
     no unique maximal instance exists for type variable {0} with upper bounds {1}
 
+# 0: type, 1: list of type
 compiler.misc.no.unique.minimal.instance.exists=\
     no unique minimal instance exists for type variable {0} with lower bounds {1}
 
@@ -2313,23 +2314,23 @@
 compiler.misc.incompatible.eq.bounds=\
     inference variable {0} has incompatible equality constraints {1}
 
-# 0: type, 1: list of type, 2: list of type
-compiler.misc.incompatible.eq.upper.bounds=\
-    inference variable {0} has incompatible bounds\n\
-    equality constraints: {1}\n\
-    upper bounds: {2}
-
-# 0: type, 1: list of type, 2: list of type
-compiler.misc.incompatible.upper.lower.bounds=\
+# 0: type, 1: fragment, 2: fragment
+compiler.misc.incompatible.bounds=\
     inference variable {0} has incompatible bounds\n\
-    upper bounds: {1}\n\
-    lower bounds: {2}
-
-# 0: type, 1: list of type, 2: list of type
-compiler.misc.incompatible.eq.lower.bounds=\
-    inference variable {0} has incompatible bounds\n\
-    equality constraints: {1}\n\
-    lower bounds: {2}
+    {1}\n\
+    {2}
+
+# 0: list of type
+compiler.misc.lower.bounds=\
+        lower bounds: {0}
+
+# 0: list of type
+compiler.misc.eq.bounds=\
+        equality constraints: {0}
+
+# 0: list of type
+compiler.misc.upper.bounds=\
+        lower bounds: {0}
 
 # 0: list of type, 1: type, 2: type
 compiler.misc.infer.no.conforming.instance.exists=\
--- a/test/langtools/tools/javac/Diagnostics/6722234/T6722234d_1.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/Diagnostics/6722234/T6722234d_1.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,3 +1,3 @@
-T6722234d.java:18:20: compiler.err.prob.found.req: (compiler.misc.incompatible.upper.lower.bounds: Z, T6722234d.A,java.lang.Object, T6722234d.B,T6722234d.A)
+T6722234d.java:18:20: compiler.err.prob.found.req: (compiler.misc.incompatible.bounds: Z, (compiler.misc.upper.bounds: T6722234d.A,java.lang.Object), (compiler.misc.lower.bounds: T6722234d.B,T6722234d.A))
 - compiler.misc.where.description.typevar: Z,{(compiler.misc.where.typevar: Z, java.lang.Object, kindname.method, <Z>m(Z,Z))}
 1 error
--- a/test/langtools/tools/javac/Diagnostics/6722234/T6722234d_2.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/Diagnostics/6722234/T6722234d_2.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,3 +1,3 @@
-T6722234d.java:18:20: compiler.err.prob.found.req: (compiler.misc.incompatible.upper.lower.bounds: Z, T6722234d.A,Object, T6722234d.B,T6722234d.A)
+T6722234d.java:18:20: compiler.err.prob.found.req: (compiler.misc.incompatible.bounds: Z, (compiler.misc.upper.bounds: T6722234d.A,Object), (compiler.misc.lower.bounds: T6722234d.B,T6722234d.A))
 - compiler.misc.where.description.typevar: Z,{(compiler.misc.where.typevar: Z, Object, kindname.method, <Z>m(Z,Z))}
 1 error
--- a/test/langtools/tools/javac/Diagnostics/6799605/T6799605.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/Diagnostics/6799605/T6799605.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,4 +1,4 @@
-T6799605.java:17:9: compiler.err.cant.apply.symbols: kindname.method, m, T6799605<compiler.misc.type.captureof: 1, ?>,{(compiler.misc.inapplicable.method: kindname.method, T6799605, <T>m(T6799605<T>), (compiler.misc.incompatible.eq.upper.bounds: T, compiler.misc.type.captureof: 1, ?, T6799605<T>)),(compiler.misc.inapplicable.method: kindname.method, T6799605, <T>m(T6799605<T>,T6799605<T>), (compiler.misc.infer.arg.length.mismatch: T)),(compiler.misc.inapplicable.method: kindname.method, T6799605, <T>m(T6799605<T>,T6799605<T>,T6799605<T>), (compiler.misc.infer.arg.length.mismatch: T))}
+T6799605.java:17:9: compiler.err.cant.apply.symbols: kindname.method, m, T6799605<compiler.misc.type.captureof: 1, ?>,{(compiler.misc.inapplicable.method: kindname.method, T6799605, <T>m(T6799605<T>), (compiler.misc.incompatible.bounds: T, (compiler.misc.eq.bounds: compiler.misc.type.captureof: 1, ?), (compiler.misc.upper.bounds: T6799605<T>))),(compiler.misc.inapplicable.method: kindname.method, T6799605, <T>m(T6799605<T>,T6799605<T>), (compiler.misc.infer.arg.length.mismatch: T)),(compiler.misc.inapplicable.method: kindname.method, T6799605, <T>m(T6799605<T>,T6799605<T>,T6799605<T>), (compiler.misc.infer.arg.length.mismatch: T))}
 T6799605.java:18:9: compiler.err.cant.apply.symbols: kindname.method, m, T6799605<compiler.misc.type.captureof: 1, ?>,T6799605<compiler.misc.type.captureof: 2, ?>,{(compiler.misc.inapplicable.method: kindname.method, T6799605, <T>m(T6799605<T>), (compiler.misc.infer.arg.length.mismatch: T)),(compiler.misc.inapplicable.method: kindname.method, T6799605, <T>m(T6799605<T>,T6799605<T>), (compiler.misc.incompatible.eq.bounds: T, compiler.misc.type.captureof: 2, ?,compiler.misc.type.captureof: 1, ?)),(compiler.misc.inapplicable.method: kindname.method, T6799605, <T>m(T6799605<T>,T6799605<T>,T6799605<T>), (compiler.misc.infer.arg.length.mismatch: T))}
 T6799605.java:19:9: compiler.err.cant.apply.symbols: kindname.method, m, T6799605<compiler.misc.type.captureof: 1, ?>,T6799605<compiler.misc.type.captureof: 2, ?>,T6799605<compiler.misc.type.captureof: 3, ?>,{(compiler.misc.inapplicable.method: kindname.method, T6799605, <T>m(T6799605<T>), (compiler.misc.infer.arg.length.mismatch: T)),(compiler.misc.inapplicable.method: kindname.method, T6799605, <T>m(T6799605<T>,T6799605<T>), (compiler.misc.infer.arg.length.mismatch: T)),(compiler.misc.inapplicable.method: kindname.method, T6799605, <T>m(T6799605<T>,T6799605<T>,T6799605<T>), (compiler.misc.incompatible.eq.bounds: T, compiler.misc.type.captureof: 3, ?,compiler.misc.type.captureof: 2, ?,compiler.misc.type.captureof: 1, ?))}
 3 errors
--- a/test/langtools/tools/javac/T8171325/NPEClearingLocalClassNameIndexesTest.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/T8171325/NPEClearingLocalClassNameIndexesTest.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,6 +1,6 @@
-NPEClearingLocalClassNameIndexesTest.java:18:9: compiler.err.cant.apply.symbol: kindname.method, f, java.util.List<A>, java.lang.String, kindname.class, NPEClearingLocalClassNameIndexesTest, (compiler.misc.incompatible.upper.lower.bounds: C, java.lang.Object,java.util.List<A>, java.lang.String)
+NPEClearingLocalClassNameIndexesTest.java:18:9: compiler.err.cant.apply.symbol: kindname.method, f, java.util.List<A>, java.lang.String, kindname.class, NPEClearingLocalClassNameIndexesTest, (compiler.misc.incompatible.bounds: C, (compiler.misc.upper.bounds: java.lang.Object,java.util.List<A>), (compiler.misc.lower.bounds: java.lang.String))
 NPEClearingLocalClassNameIndexesTest.java:18:42: compiler.err.cant.resolve.location: kindname.class, NoSuch, , , (compiler.misc.location: kindname.class, NPEClearingLocalClassNameIndexesTest, null)
-NPEClearingLocalClassNameIndexesTest.java:19:9: compiler.err.cant.apply.symbol: kindname.method, f, java.util.List<A>, java.lang.String, kindname.class, NPEClearingLocalClassNameIndexesTest, (compiler.misc.incompatible.upper.lower.bounds: C, java.lang.Object,java.util.List<A>, java.lang.String)
+NPEClearingLocalClassNameIndexesTest.java:19:9: compiler.err.cant.apply.symbol: kindname.method, f, java.util.List<A>, java.lang.String, kindname.class, NPEClearingLocalClassNameIndexesTest, (compiler.misc.incompatible.bounds: C, (compiler.misc.upper.bounds: java.lang.Object,java.util.List<A>), (compiler.misc.lower.bounds: java.lang.String))
 NPEClearingLocalClassNameIndexesTest.java:19:42: compiler.err.cant.resolve.location: kindname.class, NoSuch, , , (compiler.misc.location: kindname.class, NPEClearingLocalClassNameIndexesTest, null)
 NPEClearingLocalClassNameIndexesTest.java:19:49: compiler.err.type.found.req: int, (compiler.misc.type.req.ref)
 5 errors
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/T8201281/NullInErrorMessageTest.java	Tue Apr 24 08:13:30 2018 -0700
@@ -0,0 +1,30 @@
+/*
+ * @test  /nodynamiccopyright/
+ * @bug 8201281
+ * @summary Truncated error message with Incompatible : null
+ * @compile/fail/ref=NullInErrorMessageTest.out -XDrawDiagnostics NullInErrorMessageTest.java
+ */
+
+import java.util.concurrent.CompletionStage;
+import java.util.function.Function;
+import java.util.function.Supplier;
+
+public class NullInErrorMessageTest {
+    private CompletionStage<String> test() {
+        return null;
+    }
+
+    private CompletionStage<Integer> test2() {
+        return null;
+    }
+
+    public static <T> Function<Throwable, T> test3() {
+        return null;
+    }
+
+    private Supplier<CompletionStage<Integer>> createSupplier() {
+        return () -> test().thenCompose(value -> {
+            return () -> test2().exceptionally(test3());
+        });
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/T8201281/NullInErrorMessageTest.out	Tue Apr 24 08:13:30 2018 -0700
@@ -0,0 +1,2 @@
+NullInErrorMessageTest.java:26:40: compiler.err.prob.found.req: (compiler.misc.incompatible.ret.type.in.lambda: (compiler.misc.infer.no.conforming.assignment.exists: U, (compiler.misc.incompatible.ret.type.in.lambda: (compiler.misc.not.a.functional.intf.1: java.util.concurrent.CompletionStage, (compiler.misc.incompatible.abstracts: kindname.interface, java.util.concurrent.CompletionStage)))))
+1 error
--- a/test/langtools/tools/javac/diags/examples.not-yet.txt	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/diags/examples.not-yet.txt	Tue Apr 24 08:13:30 2018 -0700
@@ -73,7 +73,6 @@
 compiler.misc.kindname.type.variable
 compiler.misc.kindname.type.variable.bound
 compiler.misc.kindname.value
-compiler.misc.incompatible.eq.lower.bounds              # cannot happen?
 compiler.misc.module.name.mismatch
 compiler.misc.module.non.zero.opens                     # bad class file
 compiler.misc.no.unique.minimal.instance.exists
@@ -151,6 +150,7 @@
 compiler.misc.locn.module_source_path                         # fragment uninteresting in and of itself
 compiler.misc.locn.system_modules                             # fragment uninteresting in and of itself
 compiler.misc.locn.upgrade_module_path                        # fragment uninteresting in and of itself
+compiler.misc.inferred.do.not.conform.to.eq.bounds            # hard to generate, could probably be removed
 
 # The following are new module-related messages, that need new  examples to be created
 compiler.err.duplicate.module.on.path
--- a/test/langtools/tools/javac/diags/examples/CantApplyDiamond1.java	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/diags/examples/CantApplyDiamond1.java	Tue Apr 24 08:13:30 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, 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
@@ -23,7 +23,9 @@
 
 // key: compiler.err.prob.found.req
 // key: compiler.misc.cant.apply.diamond.1
-// key: compiler.misc.incompatible.eq.upper.bounds
+// key: compiler.misc.incompatible.bounds
+// key: compiler.misc.eq.bounds
+// key: compiler.misc.upper.bounds
 // key: compiler.misc.diamond
 
 class CantApplyDiamond1<X> {
--- a/test/langtools/tools/javac/diags/examples/IncompatibleEqUpperBounds.java	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/diags/examples/IncompatibleEqUpperBounds.java	Tue Apr 24 08:13:30 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, 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
@@ -22,7 +22,9 @@
  */
 
 //key: compiler.err.cant.apply.symbol
-//key: compiler.misc.incompatible.eq.upper.bounds
+//key: compiler.misc.incompatible.bounds
+//key: compiler.misc.eq.bounds
+//key: compiler.misc.upper.bounds
 
 import java.util.List;
 
--- a/test/langtools/tools/javac/diags/examples/InferredDoNotConformToEq.java	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/diags/examples/InferredDoNotConformToEq.java	Tue Apr 24 08:13:30 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, 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
@@ -22,7 +22,8 @@
  */
 
 // key: compiler.err.cant.apply.symbol
-// key: compiler.misc.inferred.do.not.conform.to.eq.bounds
+// key: compiler.misc.inconvertible.types
+// key: compiler.misc.infer.no.conforming.assignment.exists
 // options: -source 7 -Xlint:-options
 
 import java.util.*;
--- a/test/langtools/tools/javac/diags/examples/InferredDoNotConformToUpper.java	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/diags/examples/InferredDoNotConformToUpper.java	Tue Apr 24 08:13:30 2018 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2018, 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
@@ -22,7 +22,8 @@
  */
 
 // key: compiler.err.cant.apply.symbol
-// key: compiler.misc.inferred.do.not.conform.to.upper.bounds
+// key: compiler.misc.inconvertible.types
+// key: compiler.misc.infer.no.conforming.assignment.exists
 // options: -source 7 -Xlint:-options
 
 import java.util.*;
--- a/test/langtools/tools/javac/diags/examples/WhereTypeVar2.java	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/diags/examples/WhereTypeVar2.java	Tue Apr 24 08:13:30 2018 -0700
@@ -21,10 +21,12 @@
  * questions.
  */
 
-// key: compiler.misc.incompatible.upper.lower.bounds
+// key: compiler.misc.incompatible.bounds
 // key: compiler.misc.where.description.typevar
 // key: compiler.misc.where.typevar
 // key: compiler.err.prob.found.req
+// key: compiler.misc.lower.bounds
+// key: compiler.misc.upper.bounds
 // options: --diags=formatterOptions=where
 // run: simple
 
--- a/test/langtools/tools/javac/generics/UnsoundInference.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/UnsoundInference.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,2 +1,2 @@
-UnsoundInference.java:18:9: compiler.err.cant.apply.symbol: kindname.method, transferBug, Var[],java.util.Collection<Var>, java.lang.Object[],java.util.ArrayList<java.lang.String>, kindname.class, UnsoundInference, (compiler.misc.incompatible.eq.lower.bounds: Var, java.lang.String, java.lang.Object)
+UnsoundInference.java:18:9: compiler.err.cant.apply.symbol: kindname.method, transferBug, Var[],java.util.Collection<Var>, java.lang.Object[],java.util.ArrayList<java.lang.String>, kindname.class, UnsoundInference, (compiler.misc.incompatible.bounds: Var, (compiler.misc.eq.bounds: java.lang.String), (compiler.misc.lower.bounds: java.lang.Object))
 1 error
--- a/test/langtools/tools/javac/generics/diamond/neg/Neg06.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/diamond/neg/Neg06.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,4 +1,4 @@
-Neg06.java:18:36: compiler.err.prob.found.req: (compiler.misc.cant.apply.diamond.1: (compiler.misc.diamond: Neg06.IFoo), (compiler.misc.incompatible.eq.upper.bounds: X, java.lang.String, java.lang.Number))
-Neg06.java:19:37: compiler.err.prob.found.req: (compiler.misc.cant.apply.diamond.1: (compiler.misc.diamond: Neg06.CFoo), (compiler.misc.incompatible.eq.upper.bounds: X, java.lang.String, java.lang.Number))
-Neg06.java:20:37: compiler.err.prob.found.req: (compiler.misc.cant.apply.diamond.1: (compiler.misc.diamond: Neg06.CFoo), (compiler.misc.incompatible.eq.upper.bounds: X, java.lang.String, java.lang.Number))
+Neg06.java:18:36: compiler.err.prob.found.req: (compiler.misc.cant.apply.diamond.1: (compiler.misc.diamond: Neg06.IFoo), (compiler.misc.incompatible.bounds: X, (compiler.misc.eq.bounds: java.lang.String), (compiler.misc.upper.bounds: java.lang.Number)))
+Neg06.java:19:37: compiler.err.prob.found.req: (compiler.misc.cant.apply.diamond.1: (compiler.misc.diamond: Neg06.CFoo), (compiler.misc.incompatible.bounds: X, (compiler.misc.eq.bounds: java.lang.String), (compiler.misc.upper.bounds: java.lang.Number)))
+Neg06.java:20:37: compiler.err.prob.found.req: (compiler.misc.cant.apply.diamond.1: (compiler.misc.diamond: Neg06.CFoo), (compiler.misc.incompatible.bounds: X, (compiler.misc.eq.bounds: java.lang.String), (compiler.misc.upper.bounds: java.lang.Number)))
 3 errors
--- a/test/langtools/tools/javac/generics/diamond/neg/Neg07.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/diamond/neg/Neg07.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,3 +1,3 @@
-Neg07.java:17:27: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg07.Foo), (compiler.misc.incompatible.upper.lower.bounds: X, java.lang.Number, java.lang.String)
-Neg07.java:18:27: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg07.Foo), (compiler.misc.incompatible.upper.lower.bounds: X, java.lang.Number, java.lang.String)
+Neg07.java:17:27: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg07.Foo), (compiler.misc.incompatible.bounds: X, (compiler.misc.upper.bounds: java.lang.Number), (compiler.misc.lower.bounds: java.lang.String))
+Neg07.java:18:27: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg07.Foo), (compiler.misc.incompatible.bounds: X, (compiler.misc.upper.bounds: java.lang.Number), (compiler.misc.lower.bounds: java.lang.String))
 2 errors
--- a/test/langtools/tools/javac/generics/inference/4941882/T4941882.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/inference/4941882/T4941882.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,2 +1,2 @@
-T4941882.java:13:17: compiler.err.prob.found.req: (compiler.misc.incompatible.upper.lower.bounds: T, java.lang.Object[],java.lang.Object, float[],int[])
+T4941882.java:13:17: compiler.err.prob.found.req: (compiler.misc.incompatible.bounds: T, (compiler.misc.upper.bounds: java.lang.Object[],java.lang.Object), (compiler.misc.lower.bounds: float[],int[]))
 1 error
--- a/test/langtools/tools/javac/generics/inference/6315770/T6315770.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/inference/6315770/T6315770.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,3 +1,3 @@
 T6315770.java:16:42: compiler.err.prob.found.req: (compiler.misc.incompatible.upper.bounds: T, java.lang.String,java.lang.Integer,java.lang.Runnable)
-T6315770.java:17:40: compiler.err.prob.found.req: (compiler.misc.incompatible.upper.lower.bounds: T, java.lang.Integer,java.lang.Runnable, java.lang.String)
+T6315770.java:17:40: compiler.err.prob.found.req: (compiler.misc.incompatible.bounds: T, (compiler.misc.upper.bounds: java.lang.Integer,java.lang.Runnable), (compiler.misc.lower.bounds: java.lang.String))
 2 errors
--- a/test/langtools/tools/javac/generics/inference/6611449/T6611449.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/inference/6611449/T6611449.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,5 +1,5 @@
-T6611449.java:18:9: compiler.err.cant.apply.symbols: kindname.constructor, T6611449, int,{(compiler.misc.inapplicable.method: kindname.constructor, T6611449, <T>T6611449(T), (compiler.misc.incompatible.upper.lower.bounds: T, S, java.lang.Integer)),(compiler.misc.inapplicable.method: kindname.constructor, T6611449, <T>T6611449(T,T), (compiler.misc.infer.arg.length.mismatch: T))}
-T6611449.java:19:9: compiler.err.cant.apply.symbols: kindname.constructor, T6611449, int,int,{(compiler.misc.inapplicable.method: kindname.constructor, T6611449, <T>T6611449(T), (compiler.misc.infer.arg.length.mismatch: T)),(compiler.misc.inapplicable.method: kindname.constructor, T6611449, <T>T6611449(T,T), (compiler.misc.incompatible.upper.lower.bounds: T, S, java.lang.Integer))}
-T6611449.java:20:9: compiler.err.cant.apply.symbol: kindname.method, m1, T, int, kindname.class, T6611449<S>, (compiler.misc.incompatible.upper.lower.bounds: T, S, java.lang.Integer)
-T6611449.java:21:9: compiler.err.cant.apply.symbol: kindname.method, m2, T,T, int,int, kindname.class, T6611449<S>, (compiler.misc.incompatible.upper.lower.bounds: T, S, java.lang.Integer)
+T6611449.java:18:9: compiler.err.cant.apply.symbols: kindname.constructor, T6611449, int,{(compiler.misc.inapplicable.method: kindname.constructor, T6611449, <T>T6611449(T), (compiler.misc.incompatible.bounds: T, (compiler.misc.upper.bounds: S), (compiler.misc.lower.bounds: java.lang.Integer))),(compiler.misc.inapplicable.method: kindname.constructor, T6611449, <T>T6611449(T,T), (compiler.misc.infer.arg.length.mismatch: T))}
+T6611449.java:19:9: compiler.err.cant.apply.symbols: kindname.constructor, T6611449, int,int,{(compiler.misc.inapplicable.method: kindname.constructor, T6611449, <T>T6611449(T), (compiler.misc.infer.arg.length.mismatch: T)),(compiler.misc.inapplicable.method: kindname.constructor, T6611449, <T>T6611449(T,T), (compiler.misc.incompatible.bounds: T, (compiler.misc.upper.bounds: S), (compiler.misc.lower.bounds: java.lang.Integer)))}
+T6611449.java:20:9: compiler.err.cant.apply.symbol: kindname.method, m1, T, int, kindname.class, T6611449<S>, (compiler.misc.incompatible.bounds: T, (compiler.misc.upper.bounds: S), (compiler.misc.lower.bounds: java.lang.Integer))
+T6611449.java:21:9: compiler.err.cant.apply.symbol: kindname.method, m2, T,T, int,int, kindname.class, T6611449<S>, (compiler.misc.incompatible.bounds: T, (compiler.misc.upper.bounds: S), (compiler.misc.lower.bounds: java.lang.Integer))
 4 errors
--- a/test/langtools/tools/javac/generics/inference/6638712/T6638712b.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/inference/6638712/T6638712b.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,2 +1,2 @@
-T6638712b.java:14:21: compiler.err.prob.found.req: (compiler.misc.incompatible.eq.upper.bounds: T, java.lang.Integer, java.lang.String,java.lang.Object)
+T6638712b.java:14:21: compiler.err.prob.found.req: (compiler.misc.incompatible.bounds: T, (compiler.misc.eq.bounds: java.lang.Integer), (compiler.misc.upper.bounds: java.lang.String,java.lang.Object))
 1 error
--- a/test/langtools/tools/javac/generics/inference/6638712/T6638712d.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/inference/6638712/T6638712d.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,2 +1,2 @@
-T6638712d.java:16:9: compiler.err.cant.apply.symbol: kindname.method, m, U,java.util.List<java.util.List<U>>, int,java.util.List<java.util.List<java.lang.String>>, kindname.class, T6638712d, (compiler.misc.incompatible.eq.lower.bounds: U, java.lang.String, java.lang.Integer)
+T6638712d.java:16:9: compiler.err.cant.apply.symbol: kindname.method, m, U,java.util.List<java.util.List<U>>, int,java.util.List<java.util.List<java.lang.String>>, kindname.class, T6638712d, (compiler.misc.incompatible.bounds: U, (compiler.misc.eq.bounds: java.lang.String), (compiler.misc.lower.bounds: java.lang.Integer))
 1 error
--- a/test/langtools/tools/javac/generics/inference/6638712/T6638712e.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/inference/6638712/T6638712e.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,2 +1,2 @@
-T6638712e.java:17:27: compiler.err.prob.found.req: (compiler.misc.incompatible.eq.upper.bounds: X, java.lang.Object, java.lang.Boolean,java.lang.Object)
+T6638712e.java:17:27: compiler.err.prob.found.req: (compiler.misc.incompatible.bounds: X, (compiler.misc.eq.bounds: java.lang.Object), (compiler.misc.upper.bounds: java.lang.Boolean,java.lang.Object))
 1 error
--- a/test/langtools/tools/javac/generics/inference/6650759/T6650759m.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/inference/6650759/T6650759m.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,2 +1,2 @@
-T6650759m.java:43:36: compiler.err.prob.found.req: (compiler.misc.incompatible.upper.lower.bounds: Z, java.lang.Integer,java.lang.Object, java.lang.String)
+T6650759m.java:43:36: compiler.err.prob.found.req: (compiler.misc.incompatible.bounds: Z, (compiler.misc.upper.bounds: java.lang.Integer,java.lang.Object), (compiler.misc.lower.bounds: java.lang.String))
 1 error
--- a/test/langtools/tools/javac/generics/inference/7177306/T7177306b.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/inference/7177306/T7177306b.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,2 +1,2 @@
-T7177306b.java:15:9: compiler.err.cant.apply.symbol: kindname.method, m, java.util.List<? super T>,S,java.lang.Class<java.lang.Object>, java.util.List<java.lang.Integer>,java.util.List<java.lang.String>,java.lang.Class, kindname.class, T7177306b, (compiler.misc.incompatible.eq.upper.bounds: T, java.lang.String, java.lang.Integer,java.lang.Object)
+T7177306b.java:15:9: compiler.err.cant.apply.symbol: kindname.method, m, java.util.List<? super T>,S,java.lang.Class<java.lang.Object>, java.util.List<java.lang.Integer>,java.util.List<java.lang.String>,java.lang.Class, kindname.class, T7177306b, (compiler.misc.incompatible.bounds: T, (compiler.misc.eq.bounds: java.lang.String), (compiler.misc.upper.bounds: java.lang.Integer,java.lang.Object))
 1 error
--- a/test/langtools/tools/javac/generics/inference/7177306/T7177306e.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/inference/7177306/T7177306e.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,2 +1,2 @@
-T7177306e.java:16:8: compiler.err.cant.apply.symbol: kindname.method, m, java.util.List<U>, java.util.List<java.util.List<?>>, kindname.class, T7177306e, (compiler.misc.incompatible.eq.upper.bounds: U, java.util.List<?>, java.util.List<compiler.misc.type.captureof: 1, ?>)
+T7177306e.java:16:8: compiler.err.cant.apply.symbol: kindname.method, m, java.util.List<U>, java.util.List<java.util.List<?>>, kindname.class, T7177306e, (compiler.misc.inferred.do.not.conform.to.eq.bounds: java.lang.Object, compiler.misc.type.captureof: 1, ?)
 1 error
--- a/test/langtools/tools/javac/generics/inference/8019824/T8019824.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/inference/8019824/T8019824.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,2 +1,2 @@
-T8019824.java:9:25: compiler.err.cant.apply.symbol: kindname.method, make, java.lang.Class<C>, java.lang.Class<compiler.misc.type.captureof: 1, ? extends T8019824.Foo<?,?>>, kindname.class, T8019824, (compiler.misc.incompatible.eq.upper.bounds: C, compiler.misc.type.captureof: 1, ? extends T8019824.Foo<?,?>, T8019824.Foo<A,B>)
+T8019824.java:9:25: compiler.err.cant.apply.symbol: kindname.method, make, java.lang.Class<C>, java.lang.Class<compiler.misc.type.captureof: 1, ? extends T8019824.Foo<?,?>>, kindname.class, T8019824, (compiler.misc.incompatible.bounds: C, (compiler.misc.eq.bounds: compiler.misc.type.captureof: 1, ? extends T8019824.Foo<?,?>), (compiler.misc.upper.bounds: T8019824.Foo<A,B>))
 1 error
--- a/test/langtools/tools/javac/generics/inference/8062977/T8062977.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/inference/8062977/T8062977.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,5 +1,5 @@
-T8062977.java:15:31: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: java.util.List<java.lang.Integer>[]&java.lang.Iterable<?>, java.util.List<java.lang.Integer>[],java.lang.Iterable<?>,java.lang.Object)
-T8062977.java:21:29: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: java.lang.Iterable<?>[]&java.util.List<java.lang.Integer>, java.util.List<java.lang.Integer>,java.lang.Iterable<?>[],java.lang.Object)
-T8062977.java:26:31: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: java.util.List<java.lang.Integer>[], java.util.List<java.lang.Integer>[],java.lang.Iterable<?>[][],java.lang.Object)
-T8062977.java:27:29: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: java.lang.Iterable<?>[][]&java.util.List<java.lang.Integer>, java.util.List<java.lang.Integer>,java.lang.Iterable<?>[][],java.lang.Object)
+T8062977.java:15:31: compiler.err.prob.found.req: (compiler.misc.infer.no.conforming.assignment.exists: T,B, (compiler.misc.inconvertible.types: java.lang.Class<java.lang.Iterable<?>>, java.lang.Class<java.lang.Object>))
+T8062977.java:21:29: compiler.err.prob.found.req: (compiler.misc.infer.no.conforming.assignment.exists: T,B, (compiler.misc.inconvertible.types: java.lang.Class<java.lang.Iterable<?>[]>, java.lang.Class<java.lang.Object>))
+T8062977.java:26:31: compiler.err.prob.found.req: (compiler.misc.infer.no.conforming.assignment.exists: T,B, (compiler.misc.inconvertible.types: java.lang.Class<java.lang.Iterable<?>[][]>, java.lang.Class<java.lang.Object>))
+T8062977.java:27:29: compiler.err.prob.found.req: (compiler.misc.infer.no.conforming.assignment.exists: T,B, (compiler.misc.inconvertible.types: java.lang.Class<java.lang.Iterable<?>[][]>, java.lang.Class<java.lang.Object>))
 4 errors
--- a/test/langtools/tools/javac/generics/inference/EagerReturnTypeResolution/PrimitiveTypeBoxingTest.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/inference/EagerReturnTypeResolution/PrimitiveTypeBoxingTest.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,3 +1,3 @@
-PrimitiveTypeBoxingTest.java:19:9: compiler.err.cant.apply.symbol: kindname.method, m1, PrimitiveTypeBoxingTest.F<Z>,Z, @12,int, kindname.class, PrimitiveTypeBoxingTest, (compiler.misc.incompatible.upper.lower.bounds: Z, java.lang.Long,java.lang.Object, java.lang.Integer)
-PrimitiveTypeBoxingTest.java:20:9: compiler.err.cant.apply.symbol: kindname.method, m2, Z,PrimitiveTypeBoxingTest.F<Z>, int,@16, kindname.class, PrimitiveTypeBoxingTest, (compiler.misc.incompatible.upper.lower.bounds: Z, java.lang.Long,java.lang.Object, java.lang.Integer)
+PrimitiveTypeBoxingTest.java:19:9: compiler.err.cant.apply.symbol: kindname.method, m1, PrimitiveTypeBoxingTest.F<Z>,Z, @12,int, kindname.class, PrimitiveTypeBoxingTest, (compiler.misc.incompatible.bounds: Z, (compiler.misc.upper.bounds: java.lang.Long,java.lang.Object), (compiler.misc.lower.bounds: java.lang.Integer))
+PrimitiveTypeBoxingTest.java:20:9: compiler.err.cant.apply.symbol: kindname.method, m2, Z,PrimitiveTypeBoxingTest.F<Z>, int,@16, kindname.class, PrimitiveTypeBoxingTest, (compiler.misc.incompatible.bounds: Z, (compiler.misc.upper.bounds: java.lang.Long,java.lang.Object), (compiler.misc.lower.bounds: java.lang.Integer))
 2 errors
--- a/test/langtools/tools/javac/generics/odersky/BadTest3.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/odersky/BadTest3.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,4 +1,4 @@
-BadTest3.java:31:34: compiler.err.prob.found.req: (compiler.misc.incompatible.eq.upper.bounds: B, java.lang.String, BadTest3.Ord)
-BadTest3.java:33:13: compiler.err.cant.apply.symbol: kindname.method, f, B, List<BadTest3.Ord>, kindname.class, BadTest3.Main, (compiler.misc.incompatible.upper.lower.bounds: B, BadTest3.I,BadTest3.J, List<B>)
-BadTest3.java:35:19: compiler.err.cant.apply.symbol: kindname.method, f, B, List<BadTest3.Ord>, kindname.class, BadTest3.Main, (compiler.misc.incompatible.upper.lower.bounds: B, BadTest3.I,BadTest3.J, List<B>)
+BadTest3.java:31:34: compiler.err.prob.found.req: (compiler.misc.incompatible.bounds: B, (compiler.misc.eq.bounds: java.lang.String), (compiler.misc.upper.bounds: BadTest3.Ord))
+BadTest3.java:33:13: compiler.err.cant.apply.symbol: kindname.method, f, B, List<BadTest3.Ord>, kindname.class, BadTest3.Main, (compiler.misc.incompatible.bounds: B, (compiler.misc.upper.bounds: BadTest3.I,BadTest3.J), (compiler.misc.lower.bounds: List<B>))
+BadTest3.java:35:19: compiler.err.cant.apply.symbol: kindname.method, f, B, List<BadTest3.Ord>, kindname.class, BadTest3.Main, (compiler.misc.incompatible.bounds: B, (compiler.misc.upper.bounds: BadTest3.I,BadTest3.J), (compiler.misc.lower.bounds: List<B>))
 3 errors
--- a/test/langtools/tools/javac/generics/wildcards/6762569/T6762569b.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/generics/wildcards/6762569/T6762569b.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,2 +1,2 @@
-T6762569b.java:13:9: compiler.err.cant.apply.symbol: kindname.method, m, T,java.util.List<? super java.util.List<T>>, java.lang.String,java.util.List<compiler.misc.type.captureof: 1, ? super java.util.List<? extends java.lang.Number>>, kindname.class, T6762569b, (compiler.misc.incompatible.upper.lower.bounds: T, java.lang.Number,java.lang.Object, java.lang.String)
+T6762569b.java:13:9: compiler.err.cant.apply.symbol: kindname.method, m, T,java.util.List<? super java.util.List<T>>, java.lang.String,java.util.List<compiler.misc.type.captureof: 1, ? super java.util.List<? extends java.lang.Number>>, kindname.class, T6762569b, (compiler.misc.incompatible.bounds: T, (compiler.misc.upper.bounds: java.lang.Number,java.lang.Object), (compiler.misc.lower.bounds: java.lang.String))
 1 error
--- a/test/langtools/tools/javac/lambda/8016177/T8016177g.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/lambda/8016177/T8016177g.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,3 +1,3 @@
-T8016177g.java:34:14: compiler.err.cant.apply.symbol: kindname.method, print, java.lang.String, Test.Person, kindname.class, Test, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.incompatible.upper.lower.bounds: R, java.lang.String,java.lang.Object, Test.Person))
+T8016177g.java:34:14: compiler.err.cant.apply.symbol: kindname.method, print, java.lang.String, Test.Person, kindname.class, Test, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.incompatible.bounds: R, (compiler.misc.upper.bounds: java.lang.String,java.lang.Object), (compiler.misc.lower.bounds: Test.Person)))
 T8016177g.java:35:20: compiler.err.cant.apply.symbol: kindname.method, abs, int, java.lang.Double, kindname.class, Test, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: java.lang.Double, java.lang.Integer,java.lang.Object))
 2 errors
--- a/test/langtools/tools/javac/lambda/MethodReference41.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/lambda/MethodReference41.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,4 +1,4 @@
-MethodReference41.java:38:11: compiler.err.cant.apply.symbol: kindname.method, m1, MethodReference41.SAM1, @12, kindname.class, MethodReference41, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.invalid.mref: kindname.constructor, (compiler.misc.cant.apply.symbol: kindname.constructor, Foo, java.lang.Number, java.lang.String, kindname.class, MethodReference41.Foo<X>, (compiler.misc.incompatible.upper.lower.bounds: X, java.lang.Number, java.lang.String))))
-MethodReference41.java:40:11: compiler.err.cant.apply.symbol: kindname.method, m3, MethodReference41.SAM3, @12, kindname.class, MethodReference41, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.invalid.mref: kindname.constructor, (compiler.misc.cant.apply.symbol: kindname.constructor, Foo, java.lang.Number, java.lang.Object, kindname.class, MethodReference41.Foo<X>, (compiler.misc.incompatible.upper.lower.bounds: X, java.lang.Number, java.lang.Object))))
+MethodReference41.java:38:11: compiler.err.cant.apply.symbol: kindname.method, m1, MethodReference41.SAM1, @12, kindname.class, MethodReference41, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.invalid.mref: kindname.constructor, (compiler.misc.cant.apply.symbol: kindname.constructor, Foo, java.lang.Number, java.lang.String, kindname.class, MethodReference41.Foo<X>, (compiler.misc.incompatible.bounds: X, (compiler.misc.upper.bounds: java.lang.Number), (compiler.misc.lower.bounds: java.lang.String)))))
+MethodReference41.java:40:11: compiler.err.cant.apply.symbol: kindname.method, m3, MethodReference41.SAM3, @12, kindname.class, MethodReference41, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.invalid.mref: kindname.constructor, (compiler.misc.cant.apply.symbol: kindname.constructor, Foo, java.lang.Number, java.lang.Object, kindname.class, MethodReference41.Foo<X>, (compiler.misc.incompatible.bounds: X, (compiler.misc.upper.bounds: java.lang.Number), (compiler.misc.lower.bounds: java.lang.Object)))))
 MethodReference41.java:41:9: compiler.err.ref.ambiguous: m4, kindname.method, m4(MethodReference41.SAM2), MethodReference41, kindname.method, m4(MethodReference41.SAM3), MethodReference41
 3 errors
--- a/test/langtools/tools/javac/lambda/MethodReference42.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/lambda/MethodReference42.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,4 +1,4 @@
-MethodReference42.java:38:11: compiler.err.cant.apply.symbol: kindname.method, m1, MethodReference42.SAM1, @12, kindname.class, MethodReference42, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.incompatible.ret.type.in.lambda: (compiler.misc.incompatible.eq.upper.bounds: X, java.lang.String, java.lang.Number)))
-MethodReference42.java:40:11: compiler.err.cant.apply.symbol: kindname.method, m3, MethodReference42.SAM3, @12, kindname.class, MethodReference42, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.incompatible.ret.type.in.lambda: (compiler.misc.incompatible.eq.upper.bounds: X, java.lang.Object, java.lang.Number)))
+MethodReference42.java:38:11: compiler.err.cant.apply.symbol: kindname.method, m1, MethodReference42.SAM1, @12, kindname.class, MethodReference42, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.incompatible.ret.type.in.lambda: (compiler.misc.incompatible.bounds: X, (compiler.misc.eq.bounds: java.lang.String), (compiler.misc.upper.bounds: java.lang.Number))))
+MethodReference42.java:40:11: compiler.err.cant.apply.symbol: kindname.method, m3, MethodReference42.SAM3, @12, kindname.class, MethodReference42, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.incompatible.ret.type.in.lambda: (compiler.misc.incompatible.bounds: X, (compiler.misc.eq.bounds: java.lang.Object), (compiler.misc.upper.bounds: java.lang.Number))))
 MethodReference42.java:41:9: compiler.err.ref.ambiguous: m4, kindname.method, m4(MethodReference42.SAM2), MethodReference42, kindname.method, m4(MethodReference42.SAM3), MethodReference42
 3 errors
--- a/test/langtools/tools/javac/lambda/MethodReference43.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/lambda/MethodReference43.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,5 +1,5 @@
-MethodReference43.java:45:11: compiler.err.cant.apply.symbol: kindname.method, m1, MethodReference43.SAM1, @12, kindname.class, MethodReference43, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.invalid.mref: kindname.constructor, (compiler.misc.cant.apply.symbol: kindname.constructor, Foo, java.lang.Number, java.lang.String, kindname.class, MethodReference43.Foo<X>, (compiler.misc.incompatible.upper.lower.bounds: X, java.lang.Number, java.lang.String))))
-MethodReference43.java:47:11: compiler.err.cant.apply.symbol: kindname.method, m3, MethodReference43.SAM3, @12, kindname.class, MethodReference43, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.invalid.mref: kindname.constructor, (compiler.misc.cant.apply.symbol: kindname.constructor, Foo, java.lang.Number, java.lang.Object, kindname.class, MethodReference43.Foo<X>, (compiler.misc.incompatible.upper.lower.bounds: X, java.lang.Number, java.lang.Object))))
+MethodReference43.java:45:11: compiler.err.cant.apply.symbol: kindname.method, m1, MethodReference43.SAM1, @12, kindname.class, MethodReference43, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.invalid.mref: kindname.constructor, (compiler.misc.cant.apply.symbol: kindname.constructor, Foo, java.lang.Number, java.lang.String, kindname.class, MethodReference43.Foo<X>, (compiler.misc.incompatible.bounds: X, (compiler.misc.upper.bounds: java.lang.Number), (compiler.misc.lower.bounds: java.lang.String)))))
+MethodReference43.java:47:11: compiler.err.cant.apply.symbol: kindname.method, m3, MethodReference43.SAM3, @12, kindname.class, MethodReference43, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.invalid.mref: kindname.constructor, (compiler.misc.cant.apply.symbol: kindname.constructor, Foo, java.lang.Number, java.lang.Object, kindname.class, MethodReference43.Foo<X>, (compiler.misc.incompatible.bounds: X, (compiler.misc.upper.bounds: java.lang.Number), (compiler.misc.lower.bounds: java.lang.Object)))))
 MethodReference43.java:49:9: compiler.err.ref.ambiguous: m5, kindname.method, m5(MethodReference43.SAM3), MethodReference43, kindname.method, m5(MethodReference43.SAM4), MethodReference43
-MethodReference43.java:49:11: compiler.err.cant.apply.symbol: kindname.method, m5, MethodReference43.SAM3, @12, kindname.class, MethodReference43, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.invalid.mref: kindname.constructor, (compiler.misc.cant.apply.symbol: kindname.constructor, Foo, java.lang.Number, java.lang.Object, kindname.class, MethodReference43.Foo<X>, (compiler.misc.incompatible.upper.lower.bounds: X, java.lang.Number, java.lang.Object))))
+MethodReference43.java:49:11: compiler.err.cant.apply.symbol: kindname.method, m5, MethodReference43.SAM3, @12, kindname.class, MethodReference43, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.invalid.mref: kindname.constructor, (compiler.misc.cant.apply.symbol: kindname.constructor, Foo, java.lang.Number, java.lang.Object, kindname.class, MethodReference43.Foo<X>, (compiler.misc.incompatible.bounds: X, (compiler.misc.upper.bounds: java.lang.Number), (compiler.misc.lower.bounds: java.lang.Object)))))
 4 errors
--- a/test/langtools/tools/javac/lambda/MethodReference44.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/lambda/MethodReference44.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,4 +1,4 @@
-MethodReference44.java:40:11: compiler.err.cant.apply.symbol: kindname.method, g1, MethodReference44.SAM1, @12, kindname.class, MethodReference44, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.incompatible.ret.type.in.lambda: (compiler.misc.incompatible.eq.upper.bounds: X, java.lang.String, java.lang.Number)))
-MethodReference44.java:42:11: compiler.err.cant.apply.symbol: kindname.method, g3, MethodReference44.SAM3, @12, kindname.class, MethodReference44, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.incompatible.ret.type.in.lambda: (compiler.misc.incompatible.eq.upper.bounds: X, java.lang.Object, java.lang.Number)))
+MethodReference44.java:40:11: compiler.err.cant.apply.symbol: kindname.method, g1, MethodReference44.SAM1, @12, kindname.class, MethodReference44, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.incompatible.ret.type.in.lambda: (compiler.misc.incompatible.bounds: X, (compiler.misc.eq.bounds: java.lang.String), (compiler.misc.upper.bounds: java.lang.Number))))
+MethodReference44.java:42:11: compiler.err.cant.apply.symbol: kindname.method, g3, MethodReference44.SAM3, @12, kindname.class, MethodReference44, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.incompatible.ret.type.in.lambda: (compiler.misc.incompatible.bounds: X, (compiler.misc.eq.bounds: java.lang.Object), (compiler.misc.upper.bounds: java.lang.Number))))
 MethodReference44.java:43:9: compiler.err.ref.ambiguous: g4, kindname.method, g4(MethodReference44.SAM2), MethodReference44, kindname.method, g4(MethodReference44.SAM3), MethodReference44
 3 errors
--- a/test/langtools/tools/javac/lambda/MethodReference46.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/lambda/MethodReference46.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,4 +1,4 @@
-MethodReference46.java:40:11: compiler.err.cant.apply.symbol: kindname.method, g1, MethodReference46.SAM1, @12, kindname.class, MethodReference46, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.invalid.mref: kindname.method, (compiler.misc.cant.apply.symbol: kindname.method, m, X, java.lang.String, kindname.class, MethodReference46, (compiler.misc.incompatible.upper.lower.bounds: X, java.lang.Number, java.lang.String))))
-MethodReference46.java:42:11: compiler.err.cant.apply.symbol: kindname.method, g3, MethodReference46.SAM3, @12, kindname.class, MethodReference46, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.invalid.mref: kindname.method, (compiler.misc.cant.apply.symbol: kindname.method, m, X, java.lang.Object, kindname.class, MethodReference46, (compiler.misc.incompatible.upper.lower.bounds: X, java.lang.Number, java.lang.Object))))
+MethodReference46.java:40:11: compiler.err.cant.apply.symbol: kindname.method, g1, MethodReference46.SAM1, @12, kindname.class, MethodReference46, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.invalid.mref: kindname.method, (compiler.misc.cant.apply.symbol: kindname.method, m, X, java.lang.String, kindname.class, MethodReference46, (compiler.misc.incompatible.bounds: X, (compiler.misc.upper.bounds: java.lang.Number), (compiler.misc.lower.bounds: java.lang.String)))))
+MethodReference46.java:42:11: compiler.err.cant.apply.symbol: kindname.method, g3, MethodReference46.SAM3, @12, kindname.class, MethodReference46, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.invalid.mref: kindname.method, (compiler.misc.cant.apply.symbol: kindname.method, m, X, java.lang.Object, kindname.class, MethodReference46, (compiler.misc.incompatible.bounds: X, (compiler.misc.upper.bounds: java.lang.Number), (compiler.misc.lower.bounds: java.lang.Object)))))
 MethodReference46.java:43:9: compiler.err.ref.ambiguous: g4, kindname.method, g4(MethodReference46.SAM2), MethodReference46, kindname.method, g4(MethodReference46.SAM3), MethodReference46
 3 errors
--- a/test/langtools/tools/javac/lambda/MethodReference58.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/lambda/MethodReference58.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,2 +1,2 @@
-MethodReference58.java:41:23: compiler.err.prob.found.req: (compiler.misc.invalid.mref: kindname.method, (compiler.misc.cant.apply.symbol: kindname.method, g, Z, X, kindname.class, MethodReference58, (compiler.misc.incompatible.upper.lower.bounds: Z, java.lang.Number, X)))
+MethodReference58.java:41:23: compiler.err.prob.found.req: (compiler.misc.invalid.mref: kindname.method, (compiler.misc.cant.apply.symbol: kindname.method, g, Z, X, kindname.class, MethodReference58, (compiler.misc.incompatible.bounds: Z, (compiler.misc.upper.bounds: java.lang.Number), (compiler.misc.lower.bounds: X))))
 1 error
--- a/test/langtools/tools/javac/lambda/MethodReference68.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/lambda/MethodReference68.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,2 +1,2 @@
-MethodReference68.java:21:10: compiler.err.cant.apply.symbol: kindname.method, g, MethodReference68.F<Z>,Z[], @12,int, kindname.class, MethodReference68, (compiler.misc.incompatible.upper.lower.bounds: Z, MethodReference68.Foo,java.lang.Object, java.lang.Integer)
-1 error
\ No newline at end of file
+MethodReference68.java:21:10: compiler.err.cant.apply.symbol: kindname.method, g, MethodReference68.F<Z>,Z[], @12,int, kindname.class, MethodReference68, (compiler.misc.incompatible.bounds: Z, (compiler.misc.upper.bounds: MethodReference68.Foo,java.lang.Object), (compiler.misc.lower.bounds: java.lang.Integer))
+1 error
--- a/test/langtools/tools/javac/lambda/TargetType02.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/lambda/TargetType02.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,4 +1,4 @@
-TargetType02.java:33:14: compiler.err.prob.found.req: (compiler.misc.incompatible.upper.lower.bounds: Z, java.lang.String, java.lang.Integer)
+TargetType02.java:33:14: compiler.err.prob.found.req: (compiler.misc.incompatible.bounds: Z, (compiler.misc.upper.bounds: java.lang.String), (compiler.misc.lower.bounds: java.lang.Integer))
 TargetType02.java:34:9: compiler.err.ref.ambiguous: call3, kindname.method, <Z>call3(TargetType02.S1<Z>), TargetType02, kindname.method, <Z>call3(TargetType02.S2<Z>), TargetType02
 TargetType02.java:35:9: compiler.err.ref.ambiguous: call3, kindname.method, <Z>call3(TargetType02.S1<Z>), TargetType02, kindname.method, <Z>call3(TargetType02.S2<Z>), TargetType02
 TargetType02.java:37:20: compiler.err.ref.ambiguous: call4, kindname.method, <Z>call4(TargetType02.S1<Z>), TargetType02, kindname.method, <Z>call4(TargetType02.S2<Z>), TargetType02
--- a/test/langtools/tools/javac/lambda/TargetType14.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/lambda/TargetType14.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,2 +1,2 @@
-TargetType14.java:20:29: compiler.err.prob.found.req: (compiler.misc.incompatible.eq.lower.bounds: X, java.lang.Integer, java.lang.String)
+TargetType14.java:20:29: compiler.err.prob.found.req: (compiler.misc.incompatible.bounds: X, (compiler.misc.eq.bounds: java.lang.Integer), (compiler.misc.lower.bounds: java.lang.String))
 1 error
--- a/test/langtools/tools/javac/lambda/TargetType28.out	Mon Apr 23 19:32:41 2018 +0100
+++ b/test/langtools/tools/javac/lambda/TargetType28.out	Tue Apr 24 08:13:30 2018 -0700
@@ -1,2 +1,2 @@
-TargetType28.java:20:32: compiler.err.prob.found.req: (compiler.misc.incompatible.eq.upper.bounds: X, java.lang.String, java.lang.Object,java.lang.Number)
+TargetType28.java:20:32: compiler.err.prob.found.req: (compiler.misc.incompatible.bounds: X, (compiler.misc.eq.bounds: java.lang.String), (compiler.misc.upper.bounds: java.lang.Object,java.lang.Number))
 1 error