7151492: Encapsulate check logic into Attr.ResultInfo

Mon, 26 Mar 2012 15:28:22 +0100

author
mcimadamore
date
Mon, 26 Mar 2012 15:28:22 +0100
changeset 1238
e28a06a3c5d9
parent 1237
568e70bbd9aa
child 1239
2827076dbf64

7151492: Encapsulate check logic into Attr.ResultInfo
Summary: ResultInfo class should be used to make attribution code transparent w.r.t. check logic being used
Reviewed-by: jjg, dlsmith

src/share/classes/com/sun/tools/javac/comp/Attr.java file | annotate | diff | comparison | revisions
src/share/classes/com/sun/tools/javac/comp/Check.java file | annotate | diff | comparison | revisions
src/share/classes/com/sun/tools/javac/comp/Infer.java file | annotate | diff | comparison | revisions
src/share/classes/com/sun/tools/javac/comp/Resolve.java file | annotate | diff | comparison | revisions
src/share/classes/com/sun/tools/javac/resources/compiler.properties file | annotate | diff | comparison | revisions
test/tools/javac/6979683/TestCast6979683_BAD34.java.errlog file | annotate | diff | comparison | revisions
test/tools/javac/6979683/TestCast6979683_BAD35.java.errlog file | annotate | diff | comparison | revisions
test/tools/javac/6979683/TestCast6979683_BAD36.java.errlog file | annotate | diff | comparison | revisions
test/tools/javac/6979683/TestCast6979683_BAD37.java.errlog file | annotate | diff | comparison | revisions
test/tools/javac/6979683/TestCast6979683_BAD38.java.errlog file | annotate | diff | comparison | revisions
test/tools/javac/6979683/TestCast6979683_BAD39.java.errlog file | annotate | diff | comparison | revisions
test/tools/javac/Diagnostics/6722234/T6722234d_1.out file | annotate | diff | comparison | revisions
test/tools/javac/Diagnostics/6722234/T6722234d_2.out file | annotate | diff | comparison | revisions
test/tools/javac/OverrideChecks/6400189/T6400189a.out file | annotate | diff | comparison | revisions
test/tools/javac/OverrideChecks/6400189/T6400189b.out file | annotate | diff | comparison | revisions
test/tools/javac/StringsInSwitch/BadlyTypedLabel1.out file | annotate | diff | comparison | revisions
test/tools/javac/StringsInSwitch/BadlyTypedLabel2.out file | annotate | diff | comparison | revisions
test/tools/javac/T6326754.out file | annotate | diff | comparison | revisions
test/tools/javac/TryWithResources/TwrOnNonResource.out file | annotate | diff | comparison | revisions
test/tools/javac/cast/6270087/T6270087neg.out file | annotate | diff | comparison | revisions
test/tools/javac/cast/6557182/T6557182.out file | annotate | diff | comparison | revisions
test/tools/javac/cast/6665356/T6665356.out file | annotate | diff | comparison | revisions
test/tools/javac/cast/6795580/T6795580.out file | annotate | diff | comparison | revisions
test/tools/javac/cast/6932571/T6932571neg.out file | annotate | diff | comparison | revisions
test/tools/javac/cast/7005095/T7005095neg.out file | annotate | diff | comparison | revisions
test/tools/javac/cast/7005671/T7005671.out file | annotate | diff | comparison | revisions
test/tools/javac/diags/examples.not-yet.txt file | annotate | diff | comparison | revisions
test/tools/javac/diags/examples/CantApplyDiamond1.java file | annotate | diff | comparison | revisions
test/tools/javac/diags/examples/IncompatibleTypes1.java file | annotate | diff | comparison | revisions
test/tools/javac/diags/examples/InconvertibleTypes.java file | annotate | diff | comparison | revisions
test/tools/javac/diags/examples/InvalidInferredTypes.java file | annotate | diff | comparison | revisions
test/tools/javac/diags/examples/PossibleLossPrecision.java file | annotate | diff | comparison | revisions
test/tools/javac/diags/examples/ResourceNotApplicableToType.java file | annotate | diff | comparison | revisions
test/tools/javac/diags/examples/UndeterminedType1.java file | annotate | diff | comparison | revisions
test/tools/javac/diags/examples/WhereIntersection.java file | annotate | diff | comparison | revisions
test/tools/javac/generics/6207386/T6207386.out file | annotate | diff | comparison | revisions
test/tools/javac/generics/diamond/neg/Neg05.out file | annotate | diff | comparison | revisions
test/tools/javac/generics/diamond/neg/Neg06.out file | annotate | diff | comparison | revisions
test/tools/javac/generics/diamond/neg/Neg10.out file | annotate | diff | comparison | revisions
test/tools/javac/generics/inference/6315770/T6315770.out file | annotate | diff | comparison | revisions
test/tools/javac/generics/inference/6638712/T6638712b.out file | annotate | diff | comparison | revisions
test/tools/javac/generics/inference/6638712/T6638712e.out file | annotate | diff | comparison | revisions
test/tools/javac/generics/inference/6650759/T6650759m.out file | annotate | diff | comparison | revisions
test/tools/javac/generics/rawOverride/7062745/T7062745neg.out file | annotate | diff | comparison | revisions
test/tools/javac/generics/wildcards/6886247/T6886247_2.out file | annotate | diff | comparison | revisions
test/tools/javac/multicatch/Neg06.out file | annotate | diff | comparison | revisions
test/tools/javac/multicatch/Neg07.out file | annotate | diff | comparison | revisions
test/tools/javac/types/CastObjectToPrimitiveTest.out file | annotate | diff | comparison | revisions
test/tools/javac/varargs/6313164/T6313164.out file | annotate | diff | comparison | revisions
test/tools/javac/varargs/7097436/T7097436.out file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Attr.java	Mon Mar 26 15:27:51 2012 +0100
     1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Attr.java	Mon Mar 26 15:28:22 2012 +0100
     1.3 @@ -42,6 +42,7 @@
     1.4  import com.sun.tools.javac.code.Symbol.*;
     1.5  import com.sun.tools.javac.tree.JCTree.*;
     1.6  import com.sun.tools.javac.code.Type.*;
     1.7 +import com.sun.tools.javac.comp.Check.CheckContext;
     1.8  
     1.9  import com.sun.source.tree.IdentifierTree;
    1.10  import com.sun.source.tree.MemberSelectTree;
    1.11 @@ -132,6 +133,11 @@
    1.12          findDiamonds = options.get("findDiamond") != null &&
    1.13                   source.allowDiamond();
    1.14          useBeforeDeclarationWarning = options.isSet("useBeforeDeclarationWarning");
    1.15 +
    1.16 +        statInfo = new ResultInfo(NIL, Type.noType);
    1.17 +        varInfo = new ResultInfo(VAR, Type.noType);
    1.18 +        unknownExprInfo = new ResultInfo(VAL, Type.noType);
    1.19 +        unknownTypeInfo = new ResultInfo(TYP, Type.noType);
    1.20      }
    1.21  
    1.22      /** Switch: relax some constraints for retrofit mode.
    1.23 @@ -204,7 +210,7 @@
    1.24      Type check(JCTree tree, Type owntype, int ownkind, ResultInfo resultInfo) {
    1.25          if (owntype.tag != ERROR && resultInfo.pt.tag != METHOD && resultInfo.pt.tag != FORALL) {
    1.26              if ((ownkind & ~resultInfo.pkind) == 0) {
    1.27 -                owntype = chk.checkType(tree.pos(), owntype, resultInfo.pt, errKey);
    1.28 +                owntype = resultInfo.check(tree, owntype);
    1.29              } else {
    1.30                  log.error(tree.pos(), "unexpected.type",
    1.31                            kindNames(resultInfo.pkind),
    1.32 @@ -394,20 +400,30 @@
    1.33          }
    1.34      }
    1.35  
    1.36 -    static class ResultInfo {
    1.37 +    class ResultInfo {
    1.38          int pkind;
    1.39          Type pt;
    1.40 +        CheckContext checkContext;
    1.41  
    1.42          ResultInfo(int pkind, Type pt) {
    1.43 +            this(pkind, pt, chk.basicHandler);
    1.44 +        }
    1.45 +
    1.46 +        protected ResultInfo(int pkind, Type pt, CheckContext checkContext) {
    1.47              this.pkind = pkind;
    1.48              this.pt = pt;
    1.49 +            this.checkContext = checkContext;
    1.50 +        }
    1.51 +
    1.52 +        protected Type check(DiagnosticPosition pos, Type found) {
    1.53 +            return chk.checkType(pos, found, pt, checkContext);
    1.54          }
    1.55      }
    1.56  
    1.57 -    private final ResultInfo statInfo = new ResultInfo(NIL, Type.noType);
    1.58 -    private final ResultInfo varInfo = new ResultInfo(VAR, Type.noType);
    1.59 -    private final ResultInfo unknownExprInfo = new ResultInfo(VAL, Type.noType);
    1.60 -    private final ResultInfo unknownTypeInfo = new ResultInfo(TYP, Type.noType);
    1.61 +    private final ResultInfo statInfo;
    1.62 +    private final ResultInfo varInfo;
    1.63 +    private final ResultInfo unknownExprInfo;
    1.64 +    private final ResultInfo unknownTypeInfo;
    1.65  
    1.66      Type pt() {
    1.67          return resultInfo.pt;
    1.68 @@ -429,10 +445,6 @@
    1.69       */
    1.70      ResultInfo resultInfo;
    1.71  
    1.72 -    /** Visitor argument: the error key to be generated when a type error occurs
    1.73 -     */
    1.74 -    String errKey;
    1.75 -
    1.76      /** Visitor result: the computed type.
    1.77       */
    1.78      Type result;
    1.79 @@ -445,17 +457,11 @@
    1.80       *  @param resultInfo   The result info visitor argument.
    1.81       */
    1.82      private Type attribTree(JCTree tree, Env<AttrContext> env, ResultInfo resultInfo) {
    1.83 -        return attribTree(tree, env, resultInfo, "incompatible.types");
    1.84 -    }
    1.85 -
    1.86 -    private Type attribTree(JCTree tree, Env<AttrContext> env, ResultInfo resultInfo, String errKey) {
    1.87          Env<AttrContext> prevEnv = this.env;
    1.88          ResultInfo prevResult = this.resultInfo;
    1.89 -        String prevErrKey = this.errKey;
    1.90          try {
    1.91              this.env = env;
    1.92              this.resultInfo = resultInfo;
    1.93 -            this.errKey = errKey;
    1.94              tree.accept(this);
    1.95              if (tree == breakTree)
    1.96                  throw new BreakAttr(env);
    1.97 @@ -466,18 +472,13 @@
    1.98          } finally {
    1.99              this.env = prevEnv;
   1.100              this.resultInfo = prevResult;
   1.101 -            this.errKey = prevErrKey;
   1.102          }
   1.103      }
   1.104  
   1.105      /** Derived visitor method: attribute an expression tree.
   1.106       */
   1.107      public Type attribExpr(JCTree tree, Env<AttrContext> env, Type pt) {
   1.108 -        return attribExpr(tree, env, pt, "incompatible.types");
   1.109 -    }
   1.110 -
   1.111 -    public Type attribExpr(JCTree tree, Env<AttrContext> env, Type pt, String key) {
   1.112 -        return attribTree(tree, env, new ResultInfo(VAL, pt.tag != ERROR ? pt : Type.noType), key);
   1.113 +        return attribTree(tree, env, new ResultInfo(VAL, pt.tag != ERROR ? pt : Type.noType));
   1.114      }
   1.115  
   1.116      /** Derived visitor method: attribute an expression tree with
   1.117 @@ -1121,9 +1122,16 @@
   1.118              localEnv;
   1.119          // Attribute resource declarations
   1.120          for (JCTree resource : tree.resources) {
   1.121 +            CheckContext twrContext = new Check.NestedCheckContext(resultInfo.checkContext) {
   1.122 +                @Override
   1.123 +                public void report(DiagnosticPosition pos, Type found, Type req, JCDiagnostic details) {
   1.124 +                    chk.basicHandler.report(pos, found, req, diags.fragment("try.not.applicable.to.type", found));
   1.125 +                }
   1.126 +            };
   1.127 +            ResultInfo twrResult = new ResultInfo(VAL, syms.autoCloseableType, twrContext);
   1.128              if (resource.hasTag(VARDEF)) {
   1.129                  attribStat(resource, tryEnv);
   1.130 -                chk.checkType(resource, resource.type, syms.autoCloseableType, "try.not.applicable.to.type");
   1.131 +                twrResult.check(resource, resource.type);
   1.132  
   1.133                  //check that resource type cannot throw InterruptedException
   1.134                  checkAutoCloseable(resource.pos(), localEnv, resource.type);
   1.135 @@ -1131,7 +1139,7 @@
   1.136                  VarSymbol var = (VarSymbol)TreeInfo.symbolFor(resource);
   1.137                  var.setData(ElementKind.RESOURCE_VARIABLE);
   1.138              } else {
   1.139 -                attribExpr(resource, tryEnv, syms.autoCloseableType, "try.not.applicable.to.type");
   1.140 +                attribTree(resource, tryEnv, twrResult);
   1.141              }
   1.142          }
   1.143          // Attribute body
   1.144 @@ -1846,7 +1854,7 @@
   1.145      }
   1.146  
   1.147      Type attribDiamond(Env<AttrContext> env,
   1.148 -                        JCNewClass tree,
   1.149 +                        final JCNewClass tree,
   1.150                          Type clazztype,
   1.151                          List<Type> argtypes,
   1.152                          List<Type> typeargtypes) {
   1.153 @@ -1886,25 +1894,17 @@
   1.154              clazztype = syms.errType;
   1.155          }
   1.156  
   1.157 -        if (clazztype.tag == FORALL && !pt().isErroneous()) {
   1.158 -            //if the resolved constructor's return type has some uninferred
   1.159 -            //type-variables, infer them using the expected type and declared
   1.160 -            //bounds (JLS 15.12.2.8).
   1.161 +        if (clazztype.tag == FORALL && !resultInfo.pt.isErroneous()) {
   1.162              try {
   1.163 -                clazztype = infer.instantiateExpr((ForAll) clazztype,
   1.164 -                        pt().tag == NONE ? syms.objectType : pt(),
   1.165 -                        Warner.noWarnings);
   1.166 +                clazztype = resultInfo.checkContext.rawInstantiatePoly((ForAll)clazztype, pt(), Warner.noWarnings);
   1.167              } catch (Infer.InferenceException ex) {
   1.168                  //an error occurred while inferring uninstantiated type-variables
   1.169 -                log.error(tree.clazz.pos(),
   1.170 -                        "cant.apply.diamond.1",
   1.171 -                        diags.fragment("diamond", clazztype.tsym),
   1.172 -                        ex.diagnostic);
   1.173 +                resultInfo.checkContext.report(tree.clazz.pos(), clazztype, resultInfo.pt,
   1.174 +                        diags.fragment("cant.apply.diamond.1", diags.fragment("diamond", clazztype.tsym), ex.diagnostic));
   1.175              }
   1.176          }
   1.177 -        return chk.checkClassType(tree.clazz.pos(),
   1.178 -                clazztype,
   1.179 -                true);
   1.180 +
   1.181 +        return chk.checkClassType(tree.clazz.pos(), clazztype, true);
   1.182      }
   1.183  
   1.184      /** Make an attributed null check tree.
     2.1 --- a/src/share/classes/com/sun/tools/javac/comp/Check.java	Mon Mar 26 15:27:51 2012 +0100
     2.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Check.java	Mon Mar 26 15:28:22 2012 +0100
     2.3 @@ -269,23 +269,6 @@
     2.4          else return syms.errType;
     2.5      }
     2.6  
     2.7 -    /** Report a type error.
     2.8 -     *  @param pos        Position to be used for error reporting.
     2.9 -     *  @param problem    A string describing the error.
    2.10 -     *  @param found      The type that was found.
    2.11 -     *  @param req        The type that was required.
    2.12 -     */
    2.13 -    Type typeError(DiagnosticPosition pos, Object problem, Type found, Type req) {
    2.14 -        log.error(pos, "prob.found.req",
    2.15 -                  problem, found, req);
    2.16 -        return types.createErrorType(found);
    2.17 -    }
    2.18 -
    2.19 -    Type typeError(DiagnosticPosition pos, String problem, Type found, Type req, Object explanation) {
    2.20 -        log.error(pos, "prob.found.req.1", problem, found, req, explanation);
    2.21 -        return types.createErrorType(found);
    2.22 -    }
    2.23 -
    2.24      /** Report an error that wrong type tag was found.
    2.25       *  @param pos        Position to be used for error reporting.
    2.26       *  @param required   An internationalized string describing the type tag
    2.27 @@ -430,6 +413,86 @@
    2.28   * Type Checking
    2.29   **************************************************************************/
    2.30  
    2.31 +    /**
    2.32 +     * A check context is an object that can be used to perform compatibility
    2.33 +     * checks - depending on the check context, meaning of 'compatibility' might
    2.34 +     * vary significantly.
    2.35 +     */
    2.36 +    interface CheckContext {
    2.37 +        /**
    2.38 +         * Is type 'found' compatible with type 'req' in given context
    2.39 +         */
    2.40 +        boolean compatible(Type found, Type req, Warner warn);
    2.41 +        /**
    2.42 +         * Instantiate a ForAll type against a given target type 'req' in given context
    2.43 +         */
    2.44 +        Type rawInstantiatePoly(ForAll found, Type req, Warner warn);
    2.45 +        /**
    2.46 +         * Report a check error
    2.47 +         */
    2.48 +        void report(DiagnosticPosition pos, Type found, Type req, JCDiagnostic details);
    2.49 +        /**
    2.50 +         * Obtain a warner for this check context
    2.51 +         */
    2.52 +        public Warner checkWarner(DiagnosticPosition pos, Type found, Type req);
    2.53 +    }
    2.54 +
    2.55 +    /**
    2.56 +     * This class represent a check context that is nested within another check
    2.57 +     * context - useful to check sub-expressions. The default behavior simply
    2.58 +     * redirects all method calls to the enclosing check context leveraging
    2.59 +     * the forwarding pattern.
    2.60 +     */
    2.61 +    static class NestedCheckContext implements CheckContext {
    2.62 +        CheckContext enclosingContext;
    2.63 +
    2.64 +        NestedCheckContext(CheckContext enclosingContext) {
    2.65 +            this.enclosingContext = enclosingContext;
    2.66 +        }
    2.67 +
    2.68 +        public boolean compatible(Type found, Type req, Warner warn) {
    2.69 +            return enclosingContext.compatible(found, req, warn);
    2.70 +        }
    2.71 +
    2.72 +        public Type rawInstantiatePoly(ForAll found, Type req, Warner warn) {
    2.73 +            return enclosingContext.rawInstantiatePoly(found, req, warn);
    2.74 +        }
    2.75 +
    2.76 +        public void report(DiagnosticPosition pos, Type found, Type req, JCDiagnostic details) {
    2.77 +            enclosingContext.report(pos, found, req, details);
    2.78 +        }
    2.79 +
    2.80 +        public Warner checkWarner(DiagnosticPosition pos, Type found, Type req) {
    2.81 +            return enclosingContext.checkWarner(pos, found, req);
    2.82 +        }
    2.83 +    }
    2.84 +
    2.85 +    /**
    2.86 +     * Check context to be used when evaluating assignment/return statements
    2.87 +     */
    2.88 +    CheckContext basicHandler = new CheckContext() {
    2.89 +        public void report(DiagnosticPosition pos, Type found, Type req, JCDiagnostic details) {
    2.90 +            if (details == null) {
    2.91 +                log.error(pos, "prob.found.req", found, req);
    2.92 +            } else {
    2.93 +                log.error(pos, "prob.found.req.1", details);
    2.94 +            }
    2.95 +        }
    2.96 +        public boolean compatible(Type found, Type req, Warner warn) {
    2.97 +            return types.isAssignable(found, req, warn);
    2.98 +        }
    2.99 +
   2.100 +        public Type rawInstantiatePoly(ForAll found, Type req, Warner warn) {
   2.101 +            if (req.tag == NONE)
   2.102 +                req = found.qtype.tag <= VOID ? found.qtype : syms.objectType;
   2.103 +            return infer.instantiateExpr(found, req, warn);
   2.104 +        }
   2.105 +
   2.106 +        public Warner checkWarner(DiagnosticPosition pos, Type found, Type req) {
   2.107 +            return convertWarner(pos, found, req);
   2.108 +        }
   2.109 +    };
   2.110 +
   2.111      /** Check that a given type is assignable to a given proto-type.
   2.112       *  If it is, return the type, otherwise return errType.
   2.113       *  @param pos        Position to be used for error reporting.
   2.114 @@ -437,64 +500,54 @@
   2.115       *  @param req        The type that was required.
   2.116       */
   2.117      Type checkType(DiagnosticPosition pos, Type found, Type req) {
   2.118 -        return checkType(pos, found, req, "incompatible.types");
   2.119 +        return checkType(pos, found, req, basicHandler);
   2.120      }
   2.121  
   2.122 -    Type checkType(DiagnosticPosition pos, Type found, Type req, String errKey) {
   2.123 +    Type checkType(final DiagnosticPosition pos, Type found, Type req, CheckContext checkContext) {
   2.124          if (req.tag == ERROR)
   2.125              return req;
   2.126 -        if (found.tag == FORALL)
   2.127 -            return instantiatePoly(pos, (ForAll)found, req, convertWarner(pos, found, req));
   2.128 +        if (found.tag == FORALL) {
   2.129 +            ForAll fa = (ForAll)found;
   2.130 +            Type owntype = instantiatePoly(pos, checkContext, fa, req, checkContext.checkWarner(pos, found, req));
   2.131 +            return checkType(pos, owntype, req, checkContext);
   2.132 +        }
   2.133          if (req.tag == NONE)
   2.134              return found;
   2.135 -        if (types.isAssignable(found, req, convertWarner(pos, found, req)))
   2.136 +        if (checkContext.compatible(found, req, checkContext.checkWarner(pos, found, req))) {
   2.137              return found;
   2.138 -        if (found.tag <= DOUBLE && req.tag <= DOUBLE)
   2.139 -            return typeError(pos, diags.fragment("possible.loss.of.precision"), found, req);
   2.140 -        if (found.isSuperBound()) {
   2.141 -            log.error(pos, "assignment.from.super-bound", found);
   2.142 +        } else {
   2.143 +            if (found.tag <= DOUBLE && req.tag <= DOUBLE) {
   2.144 +                checkContext.report(pos, found, req, diags.fragment("possible.loss.of.precision"));
   2.145 +                return types.createErrorType(found);
   2.146 +            }
   2.147 +            checkContext.report(pos, found, req, null);
   2.148              return types.createErrorType(found);
   2.149          }
   2.150 -        if (req.isExtendsBound()) {
   2.151 -            log.error(pos, "assignment.to.extends-bound", req);
   2.152 -            return types.createErrorType(found);
   2.153 -        }
   2.154 -        return typeError(pos, diags.fragment(errKey), found, req);
   2.155      }
   2.156  
   2.157      /** Instantiate polymorphic type to some prototype, unless
   2.158       *  prototype is `anyPoly' in which case polymorphic type
   2.159       *  is returned unchanged.
   2.160       */
   2.161 -    Type instantiatePoly(DiagnosticPosition pos, ForAll t, Type pt, Warner warn) throws Infer.NoInstanceException {
   2.162 -        if (pt == Infer.anyPoly && complexInference) {
   2.163 -            return t;
   2.164 -        } else if (pt == Infer.anyPoly || pt.tag == NONE) {
   2.165 -            Type newpt = t.qtype.tag <= VOID ? t.qtype : syms.objectType;
   2.166 -            return instantiatePoly(pos, t, newpt, warn);
   2.167 -        } else if (pt.tag == ERROR) {
   2.168 -            return pt;
   2.169 -        } else {
   2.170 -            try {
   2.171 -                return infer.instantiateExpr(t, pt, warn);
   2.172 -            } catch (Infer.NoInstanceException ex) {
   2.173 +    Type instantiatePoly(DiagnosticPosition pos, CheckContext checkContext, ForAll t, Type pt, Warner warn) throws Infer.NoInstanceException {
   2.174 +        try {
   2.175 +            return checkContext.rawInstantiatePoly(t, pt, warn);
   2.176 +        } catch (final Infer.NoInstanceException ex) {
   2.177 +            JCDiagnostic d = ex.getDiagnostic();
   2.178 +            if (d != null) {
   2.179                  if (ex.isAmbiguous) {
   2.180 -                    JCDiagnostic d = ex.getDiagnostic();
   2.181 -                    log.error(pos,
   2.182 -                              "undetermined.type" + (d!=null ? ".1" : ""),
   2.183 -                              t, d);
   2.184 -                    return types.createErrorType(pt);
   2.185 -                } else {
   2.186 -                    JCDiagnostic d = ex.getDiagnostic();
   2.187 -                    return typeError(pos,
   2.188 -                                     diags.fragment("incompatible.types" + (d!=null ? ".1" : ""), d),
   2.189 -                                     t, pt);
   2.190 +                    d = diags.fragment("undetermined.type", t, d);
   2.191                  }
   2.192 -            } catch (Infer.InvalidInstanceException ex) {
   2.193 -                JCDiagnostic d = ex.getDiagnostic();
   2.194 -                log.error(pos, "invalid.inferred.types", t.tvars, d);
   2.195 -                return types.createErrorType(pt);
   2.196              }
   2.197 +            checkContext.report(pos, t, pt, d);
   2.198 +            return types.createErrorType(pt);
   2.199 +        } catch (Infer.InvalidInstanceException ex) {
   2.200 +            JCDiagnostic d = ex.getDiagnostic();
   2.201 +            if (d != null) {
   2.202 +                d = diags.fragment("invalid.inferred.types", t.tvars, d);
   2.203 +            }
   2.204 +            checkContext.report(pos, t, pt, d);
   2.205 +            return types.createErrorType(pt);
   2.206          }
   2.207      }
   2.208  
   2.209 @@ -505,15 +558,17 @@
   2.210       *  @param req        The target type of the cast.
   2.211       */
   2.212      Type checkCastable(DiagnosticPosition pos, Type found, Type req) {
   2.213 +        return checkCastable(pos, found, req, basicHandler);
   2.214 +    }
   2.215 +    Type checkCastable(DiagnosticPosition pos, Type found, Type req, CheckContext checkContext) {
   2.216          if (found.tag == FORALL) {
   2.217 -            instantiatePoly(pos, (ForAll) found, req, castWarner(pos, found, req));
   2.218 +            instantiatePoly(pos, basicHandler, (ForAll) found, req, castWarner(pos, found, req));
   2.219              return req;
   2.220          } else if (types.isCastable(found, req, castWarner(pos, found, req))) {
   2.221              return req;
   2.222          } else {
   2.223 -            return typeError(pos,
   2.224 -                             diags.fragment("inconvertible.types"),
   2.225 -                             found, req);
   2.226 +            checkContext.report(pos, found, req, diags.fragment("inconvertible.types", found, req));
   2.227 +            return types.createErrorType(found);
   2.228          }
   2.229      }
   2.230  
   2.231 @@ -867,14 +922,6 @@
   2.232                  && types.isSubtype(actual, types.supertype(formal))
   2.233                  && types.isSubtypeUnchecked(actual, types.interfaces(formal), warn))
   2.234                  return;
   2.235 -
   2.236 -            if (false) {
   2.237 -                // TODO: make assertConvertible work
   2.238 -                typeError(tree.pos(), diags.fragment("incompatible.types"), actual, formal);
   2.239 -                throw new AssertionError("Tree: " + tree
   2.240 -                                         + " actual:" + actual
   2.241 -                                         + " formal: " + formal);
   2.242 -            }
   2.243          }
   2.244  
   2.245      /**
     3.1 --- a/src/share/classes/com/sun/tools/javac/comp/Infer.java	Mon Mar 26 15:27:51 2012 +0100
     3.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Infer.java	Mon Mar 26 15:28:22 2012 +0100
     3.3 @@ -347,7 +347,7 @@
     3.4                      that.tvars,
     3.5                      instantiateAsUninferredVars(undetvars, that.tvars));
     3.6          }
     3.7 -        return chk.checkType(warn.pos(), that.inst(targs, types), to);
     3.8 +        return that.inst(targs, types);
     3.9      }
    3.10      //where
    3.11      private List<Type> instantiateAsUninferredVars(List<Type> undetvars, List<Type> tvars) {
     4.1 --- a/src/share/classes/com/sun/tools/javac/comp/Resolve.java	Mon Mar 26 15:27:51 2012 +0100
     4.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Resolve.java	Mon Mar 26 15:28:22 2012 +0100
     4.3 @@ -29,6 +29,8 @@
     4.4  import com.sun.tools.javac.code.*;
     4.5  import com.sun.tools.javac.code.Type.*;
     4.6  import com.sun.tools.javac.code.Symbol.*;
     4.7 +import com.sun.tools.javac.comp.Attr.ResultInfo;
     4.8 +import com.sun.tools.javac.comp.Check.CheckContext;
     4.9  import com.sun.tools.javac.comp.Resolve.MethodResolutionContext.Candidate;
    4.10  import com.sun.tools.javac.jvm.*;
    4.11  import com.sun.tools.javac.tree.*;
    4.12 @@ -70,6 +72,7 @@
    4.13      Names names;
    4.14      Log log;
    4.15      Symtab syms;
    4.16 +    Attr attr;
    4.17      Check chk;
    4.18      Infer infer;
    4.19      ClassReader reader;
    4.20 @@ -101,6 +104,7 @@
    4.21  
    4.22          names = Names.instance(context);
    4.23          log = Log.instance(context);
    4.24 +        attr = Attr.instance(context);
    4.25          chk = Check.instance(context);
    4.26          infer = Infer.instance(context);
    4.27          reader = ClassReader.instance(context);
    4.28 @@ -627,15 +631,8 @@
    4.29          }
    4.30  
    4.31          while (argtypes.nonEmpty() && formals.head != varargsFormal) {
    4.32 -            Type undetFormal = infer.asUndetType(formals.head, undetvars);
    4.33 -            Type capturedActual = types.capture(argtypes.head);
    4.34 -            boolean works = allowBoxing ?
    4.35 -                    types.isConvertible(capturedActual, undetFormal, warn) :
    4.36 -                    types.isSubtypeUnchecked(capturedActual, undetFormal, warn);
    4.37 -            if (!works) {
    4.38 -                throw handler.argumentMismatch(false, argtypes.head, formals.head);
    4.39 -            }
    4.40 -            checkedArgs.append(capturedActual);
    4.41 +            ResultInfo resultInfo = methodCheckResult(formals.head, allowBoxing, false, undetvars, handler, warn);
    4.42 +            checkedArgs.append(resultInfo.check(env.tree.pos(), argtypes.head));
    4.43              argtypes = argtypes.tail;
    4.44              formals = formals.tail;
    4.45          }
    4.46 @@ -648,13 +645,9 @@
    4.47              //note: if applicability check is triggered by most specific test,
    4.48              //the last argument of a varargs is _not_ an array type (see JLS 15.12.2.5)
    4.49              Type elt = types.elemtype(varargsFormal);
    4.50 -            Type eltUndet = infer.asUndetType(elt, undetvars);
    4.51              while (argtypes.nonEmpty()) {
    4.52 -                Type capturedActual = types.capture(argtypes.head);
    4.53 -                if (!types.isConvertible(capturedActual, eltUndet, warn)) {
    4.54 -                    throw handler.argumentMismatch(true, argtypes.head, elt);
    4.55 -                }
    4.56 -                checkedArgs.append(capturedActual);
    4.57 +                ResultInfo resultInfo = methodCheckResult(elt, allowBoxing, true, undetvars, handler, warn);
    4.58 +                checkedArgs.append(resultInfo.check(env.tree.pos(), argtypes.head));
    4.59                  argtypes = argtypes.tail;
    4.60              }
    4.61              //check varargs element type accessibility
    4.62 @@ -665,39 +658,116 @@
    4.63          }
    4.64          return checkedArgs.toList();
    4.65      }
    4.66 -    // where
    4.67 -        public static class InapplicableMethodException extends RuntimeException {
    4.68 -            private static final long serialVersionUID = 0;
    4.69  
    4.70 -            JCDiagnostic diagnostic;
    4.71 -            JCDiagnostic.Factory diags;
    4.72 +    /**
    4.73 +     * Check context to be used during method applicability checks. A method check
    4.74 +     * context might contain inference variables.
    4.75 +     */
    4.76 +    abstract class MethodCheckContext implements CheckContext {
    4.77  
    4.78 -            InapplicableMethodException(JCDiagnostic.Factory diags) {
    4.79 -                this.diagnostic = null;
    4.80 -                this.diags = diags;
    4.81 +        MethodCheckHandler handler;
    4.82 +        boolean useVarargs;
    4.83 +        List<Type> undetvars;
    4.84 +        Warner rsWarner;
    4.85 +
    4.86 +        public MethodCheckContext(MethodCheckHandler handler, boolean useVarargs, List<Type> undetvars, Warner rsWarner) {
    4.87 +            this.handler = handler;
    4.88 +            this.useVarargs = useVarargs;
    4.89 +            this.undetvars = undetvars;
    4.90 +            this.rsWarner = rsWarner;
    4.91 +        }
    4.92 +
    4.93 +        public void report(DiagnosticPosition pos, Type found, Type req, JCDiagnostic details) {
    4.94 +            throw handler.argumentMismatch(useVarargs, found, req);
    4.95 +        }
    4.96 +
    4.97 +        public Type rawInstantiatePoly(ForAll found, Type req, Warner warn) {
    4.98 +            throw new AssertionError("ForAll in argument position");
    4.99 +        }
   4.100 +
   4.101 +        public Warner checkWarner(DiagnosticPosition pos, Type found, Type req) {
   4.102 +            return rsWarner;
   4.103 +        }
   4.104 +    }
   4.105 +
   4.106 +    /**
   4.107 +     * Subclass of method check context class that implements strict method conversion.
   4.108 +     * Strict method conversion checks compatibility between types using subtyping tests.
   4.109 +     */
   4.110 +    class StrictMethodContext extends MethodCheckContext {
   4.111 +
   4.112 +        public StrictMethodContext(MethodCheckHandler handler, boolean useVarargs, List<Type> undetvars, Warner rsWarner) {
   4.113 +            super(handler, useVarargs, undetvars, rsWarner);
   4.114 +        }
   4.115 +
   4.116 +        public boolean compatible(Type found, Type req, Warner warn) {
   4.117 +            return types.isSubtypeUnchecked(found, infer.asUndetType(req, undetvars), warn);
   4.118 +        }
   4.119 +    }
   4.120 +
   4.121 +    /**
   4.122 +     * Subclass of method check context class that implements loose method conversion.
   4.123 +     * Loose method conversion checks compatibility between types using method conversion tests.
   4.124 +     */
   4.125 +    class LooseMethodContext extends MethodCheckContext {
   4.126 +
   4.127 +        public LooseMethodContext(MethodCheckHandler handler, boolean useVarargs, List<Type> undetvars, Warner rsWarner) {
   4.128 +            super(handler, useVarargs, undetvars, rsWarner);
   4.129 +        }
   4.130 +
   4.131 +        public boolean compatible(Type found, Type req, Warner warn) {
   4.132 +            return types.isConvertible(found, infer.asUndetType(req, undetvars), warn);
   4.133 +        }
   4.134 +    }
   4.135 +
   4.136 +    /**
   4.137 +     * Create a method check context to be used during method applicability check
   4.138 +     */
   4.139 +    ResultInfo methodCheckResult(Type to, boolean allowBoxing, boolean useVarargs,
   4.140 +            List<Type> undetvars, MethodCheckHandler methodHandler, Warner rsWarner) {
   4.141 +        MethodCheckContext checkContext = allowBoxing ?
   4.142 +                new LooseMethodContext(methodHandler, useVarargs, undetvars, rsWarner) :
   4.143 +                new StrictMethodContext(methodHandler, useVarargs, undetvars, rsWarner);
   4.144 +        return attr.new ResultInfo(VAL, to, checkContext) {
   4.145 +            @Override
   4.146 +            protected Type check(DiagnosticPosition pos, Type found) {
   4.147 +                return super.check(pos, chk.checkNonVoid(pos, types.capture(types.upperBound(found))));
   4.148              }
   4.149 -            InapplicableMethodException setMessage() {
   4.150 -                this.diagnostic = null;
   4.151 -                return this;
   4.152 -            }
   4.153 -            InapplicableMethodException setMessage(String key) {
   4.154 -                this.diagnostic = key != null ? diags.fragment(key) : null;
   4.155 -                return this;
   4.156 -            }
   4.157 -            InapplicableMethodException setMessage(String key, Object... args) {
   4.158 -                this.diagnostic = key != null ? diags.fragment(key, args) : null;
   4.159 -                return this;
   4.160 -            }
   4.161 -            InapplicableMethodException setMessage(JCDiagnostic diag) {
   4.162 -                this.diagnostic = diag;
   4.163 -                return this;
   4.164 -            }
   4.165 +        };
   4.166 +    }
   4.167  
   4.168 -            public JCDiagnostic getDiagnostic() {
   4.169 -                return diagnostic;
   4.170 -            }
   4.171 +    public static class InapplicableMethodException extends RuntimeException {
   4.172 +        private static final long serialVersionUID = 0;
   4.173 +
   4.174 +        JCDiagnostic diagnostic;
   4.175 +        JCDiagnostic.Factory diags;
   4.176 +
   4.177 +        InapplicableMethodException(JCDiagnostic.Factory diags) {
   4.178 +            this.diagnostic = null;
   4.179 +            this.diags = diags;
   4.180          }
   4.181 -        private final InapplicableMethodException inapplicableMethodException;
   4.182 +        InapplicableMethodException setMessage() {
   4.183 +            this.diagnostic = null;
   4.184 +            return this;
   4.185 +        }
   4.186 +        InapplicableMethodException setMessage(String key) {
   4.187 +            this.diagnostic = key != null ? diags.fragment(key) : null;
   4.188 +            return this;
   4.189 +        }
   4.190 +        InapplicableMethodException setMessage(String key, Object... args) {
   4.191 +            this.diagnostic = key != null ? diags.fragment(key, args) : null;
   4.192 +            return this;
   4.193 +        }
   4.194 +        InapplicableMethodException setMessage(JCDiagnostic diag) {
   4.195 +            this.diagnostic = diag;
   4.196 +            return this;
   4.197 +        }
   4.198 +
   4.199 +        public JCDiagnostic getDiagnostic() {
   4.200 +            return diagnostic;
   4.201 +        }
   4.202 +    }
   4.203 +    private final InapplicableMethodException inapplicableMethodException;
   4.204  
   4.205  /* ***************************************************************************
   4.206   *  Symbol lookup
     5.1 --- a/src/share/classes/com/sun/tools/javac/resources/compiler.properties	Mon Mar 26 15:27:51 2012 +0100
     5.2 +++ b/src/share/classes/com/sun/tools/javac/resources/compiler.properties	Mon Mar 26 15:28:22 2012 +0100
     5.3 @@ -134,12 +134,6 @@
     5.4  compiler.err.array.req.but.found=\
     5.5      array required, but {0} found
     5.6  
     5.7 -compiler.err.assignment.from.super-bound=\
     5.8 -    assigning from wildcard {0}
     5.9 -
    5.10 -compiler.err.assignment.to.extends-bound=\
    5.11 -    assigning to wildcard {0}
    5.12 -
    5.13  compiler.err.attribute.value.must.be.constant=\
    5.14      attribute value must be constant
    5.15  
    5.16 @@ -779,25 +773,23 @@
    5.17  compiler.err.undef.label=\
    5.18      undefined label: {0}
    5.19  
    5.20 -compiler.err.undetermined.type=\
    5.21 -    cannot infer type arguments for {0}
    5.22 -
    5.23 -# 0: type, 1: message segment
    5.24 -compiler.err.undetermined.type.1=\
    5.25 -    cannot infer type arguments for {0};\n\
    5.26 +# 0: list of type, 1: message segment
    5.27 +compiler.misc.invalid.inferred.types=\
    5.28 +    invalid inferred types for {0}\n\
    5.29      reason: {1}
    5.30  
    5.31 -# 0: list of type, 1: message segment
    5.32 -compiler.err.invalid.inferred.types=\
    5.33 -    invalid inferred types for {0}; {1}
    5.34 -
    5.35  # 0: message segment, 1: unused
    5.36  compiler.err.cant.apply.diamond=\
    5.37      cannot infer type arguments for {0}
    5.38  
    5.39  # 0: message segment or type, 1: message segment
    5.40  compiler.err.cant.apply.diamond.1=\
    5.41 -    cannot infer type arguments for {0};\n\
    5.42 +    cannot infer type arguments for {0}\n\
    5.43 +    reason: {1}
    5.44 +
    5.45 +# 0: message segment or type, 1: message segment
    5.46 +compiler.misc.cant.apply.diamond.1=\
    5.47 +    cannot infer type arguments for {0}\n\
    5.48      reason: {1}
    5.49  
    5.50  compiler.err.unreachable.stmt=\
    5.51 @@ -1503,11 +1495,15 @@
    5.52  
    5.53  #####
    5.54  
    5.55 -# 0: message segment, 1: type, 2: type
    5.56 +# 0: type, 1: type
    5.57  compiler.err.prob.found.req=\
    5.58 -    {0}\n\
    5.59 -    required: {2}\n\
    5.60 -    found:    {1}
    5.61 +    incompatible types\n\
    5.62 +    required: {0}\n\
    5.63 +    found: {1}
    5.64 +
    5.65 +# 0: message segment
    5.66 +compiler.err.prob.found.req.1=\
    5.67 +    incompatible types: {0}
    5.68  
    5.69  # 0: message segment, 1: type, 2: type
    5.70  compiler.warn.prob.found.req=\
    5.71 @@ -1515,22 +1511,9 @@
    5.72      required: {2}\n\
    5.73      found:    {1}
    5.74  
    5.75 -compiler.err.prob.found.req.1=\
    5.76 -    {0} {3}\n\
    5.77 -    required: {2}\n\
    5.78 -    found:    {1}
    5.79 -
    5.80 -## The following are all possible strings for the first argument ({0}) of the
    5.81 -## above strings.
    5.82 -compiler.misc.incompatible.types=\
    5.83 -    incompatible types
    5.84 -
    5.85 -# 0: message segment
    5.86 -compiler.misc.incompatible.types.1=\
    5.87 -    incompatible types; {0}
    5.88 -
    5.89 +# 0: type, 1: type
    5.90  compiler.misc.inconvertible.types=\
    5.91 -    inconvertible types
    5.92 +    {0} cannot be converted to {1}
    5.93  
    5.94  compiler.misc.possible.loss.of.precision=\
    5.95      possible loss of precision
    5.96 @@ -1545,19 +1528,15 @@
    5.97  compiler.misc.unchecked.cast.to.type=\
    5.98      unchecked cast
    5.99  
   5.100 -compiler.misc.assignment.from.super-bound=\
   5.101 -    assignment from super-bound type {0}
   5.102 -
   5.103 -compiler.misc.assignment.to.extends-bound=\
   5.104 -    assignment to extends-bound type {0}
   5.105 -
   5.106  # compiler.err.star.expected=\
   5.107  #     ''*'' expected
   5.108  # compiler.err.no.elem.type=\
   5.109  #     \[\*\] cannot have a type
   5.110  
   5.111 +# 0: type
   5.112  compiler.misc.try.not.applicable.to.type=\
   5.113 -    try-with-resources not applicable to variable type
   5.114 +    try-with-resources not applicable to variable type {0}\n\
   5.115 +    (expected a variable of type java.lang.AutoCloseable)
   5.116  
   5.117  #####
   5.118  
   5.119 @@ -1592,8 +1571,11 @@
   5.120  
   5.121  ## The following are all possible strings for the last argument of all those
   5.122  ## diagnostics whose key ends in ".1"
   5.123 +
   5.124 +# 0: type, 1: message segment
   5.125  compiler.misc.undetermined.type=\
   5.126 -    undetermined type
   5.127 +    cannot infer type arguments for {0}\n\
   5.128 +    reason: {1}
   5.129  
   5.130  compiler.misc.type.variable.has.undetermined.type=\
   5.131      type variable {0} has undetermined type
     6.1 --- a/test/tools/javac/6979683/TestCast6979683_BAD34.java.errlog	Mon Mar 26 15:27:51 2012 +0100
     6.2 +++ b/test/tools/javac/6979683/TestCast6979683_BAD34.java.errlog	Mon Mar 26 15:28:22 2012 +0100
     6.3 @@ -1,2 +1,2 @@
     6.4 -TestCast6979683_BAD34.java:34:49: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.lang.Number, boolean
     6.5 +TestCast6979683_BAD34.java:34:49: compiler.err.prob.found.req: java.lang.Number, boolean
     6.6  1 error
     7.1 --- a/test/tools/javac/6979683/TestCast6979683_BAD35.java.errlog	Mon Mar 26 15:27:51 2012 +0100
     7.2 +++ b/test/tools/javac/6979683/TestCast6979683_BAD35.java.errlog	Mon Mar 26 15:28:22 2012 +0100
     7.3 @@ -1,2 +1,2 @@
     7.4 -TestCast6979683_BAD35.java:35:45: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.lang.Number, int
     7.5 +TestCast6979683_BAD35.java:35:45: compiler.err.prob.found.req: java.lang.Number, int
     7.6  1 error
     8.1 --- a/test/tools/javac/6979683/TestCast6979683_BAD36.java.errlog	Mon Mar 26 15:27:51 2012 +0100
     8.2 +++ b/test/tools/javac/6979683/TestCast6979683_BAD36.java.errlog	Mon Mar 26 15:28:22 2012 +0100
     8.3 @@ -1,2 +1,2 @@
     8.4 -TestCast6979683_BAD36.java:36:58: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.lang.Comparable<java.lang.Integer>, int
     8.5 +TestCast6979683_BAD36.java:36:58: compiler.err.prob.found.req: java.lang.Comparable<java.lang.Integer>, int
     8.6  1 error
     9.1 --- a/test/tools/javac/6979683/TestCast6979683_BAD37.java.errlog	Mon Mar 26 15:27:51 2012 +0100
     9.2 +++ b/test/tools/javac/6979683/TestCast6979683_BAD37.java.errlog	Mon Mar 26 15:28:22 2012 +0100
     9.3 @@ -1,2 +1,2 @@
     9.4 -TestCast6979683_BAD37.java:37:61: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), java.lang.Comparable<java.lang.Short>, int
     9.5 +TestCast6979683_BAD37.java:37:61: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: java.lang.Comparable<java.lang.Short>, int)
     9.6  1 error
    10.1 --- a/test/tools/javac/6979683/TestCast6979683_BAD38.java.errlog	Mon Mar 26 15:27:51 2012 +0100
    10.2 +++ b/test/tools/javac/6979683/TestCast6979683_BAD38.java.errlog	Mon Mar 26 15:28:22 2012 +0100
    10.3 @@ -1,2 +1,2 @@
    10.4 -TestCast6979683_BAD38.java:38:62: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.lang.Comparable<java.lang.Character>, float
    10.5 +TestCast6979683_BAD38.java:38:62: compiler.err.prob.found.req: java.lang.Comparable<java.lang.Character>, float
    10.6  1 error
    11.1 --- a/test/tools/javac/6979683/TestCast6979683_BAD39.java.errlog	Mon Mar 26 15:27:51 2012 +0100
    11.2 +++ b/test/tools/javac/6979683/TestCast6979683_BAD39.java.errlog	Mon Mar 26 15:28:22 2012 +0100
    11.3 @@ -1,2 +1,2 @@
    11.4 -TestCast6979683_BAD39.java:39:53: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), java.lang.Number, char
    11.5 +TestCast6979683_BAD39.java:39:53: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: java.lang.Number, char)
    11.6  1 error
    12.1 --- a/test/tools/javac/Diagnostics/6722234/T6722234d_1.out	Mon Mar 26 15:27:51 2012 +0100
    12.2 +++ b/test/tools/javac/Diagnostics/6722234/T6722234d_1.out	Mon Mar 26 15:28:22 2012 +0100
    12.3 @@ -1,3 +1,3 @@
    12.4 -T6722234d.java:18:20: compiler.err.prob.found.req: (compiler.misc.incompatible.types), compiler.misc.intersection.type: 1, T6722234d.A
    12.5 +T6722234d.java:18:20: compiler.err.prob.found.req: compiler.misc.intersection.type: 1, T6722234d.A
    12.6  - compiler.misc.where.description.intersection: compiler.misc.intersection.type: 1,{(compiler.misc.where.intersection: compiler.misc.intersection.type: 1, java.lang.Object,T6722234d.I1,T6722234d.I2)}
    12.7  1 error
    13.1 --- a/test/tools/javac/Diagnostics/6722234/T6722234d_2.out	Mon Mar 26 15:27:51 2012 +0100
    13.2 +++ b/test/tools/javac/Diagnostics/6722234/T6722234d_2.out	Mon Mar 26 15:28:22 2012 +0100
    13.3 @@ -1,3 +1,3 @@
    13.4 -T6722234d.java:18:20: compiler.err.prob.found.req: (compiler.misc.incompatible.types), compiler.misc.intersection.type: 1, T6722234d.A
    13.5 +T6722234d.java:18:20: compiler.err.prob.found.req: compiler.misc.intersection.type: 1, T6722234d.A
    13.6  - compiler.misc.where.description.intersection: compiler.misc.intersection.type: 1,{(compiler.misc.where.intersection: compiler.misc.intersection.type: 1, Object,I1,I2)}
    13.7  1 error
    14.1 --- a/test/tools/javac/OverrideChecks/6400189/T6400189a.out	Mon Mar 26 15:27:51 2012 +0100
    14.2 +++ b/test/tools/javac/OverrideChecks/6400189/T6400189a.out	Mon Mar 26 15:28:22 2012 +0100
    14.3 @@ -1,4 +1,4 @@
    14.4  T6400189a.java:14:35: compiler.warn.unchecked.call.mbr.of.raw.type: <T>getAnnotation(java.lang.Class<T>), java.lang.reflect.Constructor
    14.5 -T6400189a.java:14:35: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.lang.annotation.Annotation, java.lang.annotation.Documented
    14.6 +T6400189a.java:14:35: compiler.err.prob.found.req: java.lang.annotation.Annotation, java.lang.annotation.Documented
    14.7  1 error
    14.8  1 warning
    15.1 --- a/test/tools/javac/OverrideChecks/6400189/T6400189b.out	Mon Mar 26 15:27:51 2012 +0100
    15.2 +++ b/test/tools/javac/OverrideChecks/6400189/T6400189b.out	Mon Mar 26 15:28:22 2012 +0100
    15.3 @@ -1,4 +1,4 @@
    15.4  T6400189b.java:24:24: compiler.warn.unchecked.call.mbr.of.raw.type: <T>m(T6400189b<T>), T6400189b.B
    15.5 -T6400189b.java:24:24: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.lang.Object, java.lang.Integer
    15.6 +T6400189b.java:24:24: compiler.err.prob.found.req: java.lang.Object, java.lang.Integer
    15.7  1 error
    15.8  1 warning
    16.1 --- a/test/tools/javac/StringsInSwitch/BadlyTypedLabel1.out	Mon Mar 26 15:27:51 2012 +0100
    16.2 +++ b/test/tools/javac/StringsInSwitch/BadlyTypedLabel1.out	Mon Mar 26 15:28:22 2012 +0100
    16.3 @@ -1,2 +1,2 @@
    16.4 -BadlyTypedLabel1.java:13:14: compiler.err.prob.found.req: (compiler.misc.incompatible.types), int, java.lang.String
    16.5 +BadlyTypedLabel1.java:13:14: compiler.err.prob.found.req: int, java.lang.String
    16.6  1 error
    17.1 --- a/test/tools/javac/StringsInSwitch/BadlyTypedLabel2.out	Mon Mar 26 15:27:51 2012 +0100
    17.2 +++ b/test/tools/javac/StringsInSwitch/BadlyTypedLabel2.out	Mon Mar 26 15:28:22 2012 +0100
    17.3 @@ -1,2 +1,2 @@
    17.4 -BadlyTypedLabel2.java:15:14: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.math.RoundingMode, java.lang.String
    17.5 +BadlyTypedLabel2.java:15:14: compiler.err.prob.found.req: java.math.RoundingMode, java.lang.String
    17.6  1 error
    18.1 --- a/test/tools/javac/T6326754.out	Mon Mar 26 15:27:51 2012 +0100
    18.2 +++ b/test/tools/javac/T6326754.out	Mon Mar 26 15:28:22 2012 +0100
    18.3 @@ -1,6 +1,6 @@
    18.4  T6326754.java:44:12: compiler.err.name.clash.same.erasure: TestConstructor(T), TestConstructor(K)
    18.5  T6326754.java:52:17: compiler.err.name.clash.same.erasure: setT(K), setT(T)
    18.6 -T6326754.java:64:18: compiler.err.prob.found.req: (compiler.misc.incompatible.types), T, T
    18.7 +T6326754.java:64:18: compiler.err.prob.found.req: T, T
    18.8  T6326754.java:70:11: compiler.err.cant.apply.symbol.1: kindname.method, setT, java.lang.Object, compiler.misc.no.args, kindname.class, TestC<T>, (compiler.misc.arg.length.mismatch)
    18.9  - compiler.note.unchecked.filename: T6326754.java
   18.10  - compiler.note.unchecked.recompile
    19.1 --- a/test/tools/javac/TryWithResources/TwrOnNonResource.out	Mon Mar 26 15:27:51 2012 +0100
    19.2 +++ b/test/tools/javac/TryWithResources/TwrOnNonResource.out	Mon Mar 26 15:28:22 2012 +0100
    19.3 @@ -1,4 +1,4 @@
    19.4 -TwrOnNonResource.java:12:30: compiler.err.prob.found.req: (compiler.misc.try.not.applicable.to.type), TwrOnNonResource, java.lang.AutoCloseable
    19.5 -TwrOnNonResource.java:15:30: compiler.err.prob.found.req: (compiler.misc.try.not.applicable.to.type), TwrOnNonResource, java.lang.AutoCloseable
    19.6 -TwrOnNonResource.java:18:30: compiler.err.prob.found.req: (compiler.misc.try.not.applicable.to.type), TwrOnNonResource, java.lang.AutoCloseable
    19.7 +TwrOnNonResource.java:12:30: compiler.err.prob.found.req.1: (compiler.misc.try.not.applicable.to.type: TwrOnNonResource)
    19.8 +TwrOnNonResource.java:15:30: compiler.err.prob.found.req.1: (compiler.misc.try.not.applicable.to.type: TwrOnNonResource)
    19.9 +TwrOnNonResource.java:18:30: compiler.err.prob.found.req.1: (compiler.misc.try.not.applicable.to.type: TwrOnNonResource)
   19.10  3 errors
    20.1 --- a/test/tools/javac/cast/6270087/T6270087neg.out	Mon Mar 26 15:27:51 2012 +0100
    20.2 +++ b/test/tools/javac/cast/6270087/T6270087neg.out	Mon Mar 26 15:28:22 2012 +0100
    20.3 @@ -1,2 +1,2 @@
    20.4 -T6270087neg.java:36:29: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6270087neg.Foo<V>, T6270087neg.Foo<U>
    20.5 +T6270087neg.java:36:29: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6270087neg.Foo<V>, T6270087neg.Foo<U>)
    20.6  1 error
    21.1 --- a/test/tools/javac/cast/6557182/T6557182.out	Mon Mar 26 15:27:51 2012 +0100
    21.2 +++ b/test/tools/javac/cast/6557182/T6557182.out	Mon Mar 26 15:28:22 2012 +0100
    21.3 @@ -1,4 +1,4 @@
    21.4 -T6557182.java:12:56: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T, java.lang.Comparable<java.lang.Integer>
    21.5 +T6557182.java:12:56: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T, java.lang.Comparable<java.lang.Integer>)
    21.6  T6557182.java:16:56: compiler.warn.prob.found.req: (compiler.misc.unchecked.cast.to.type), T, java.lang.Comparable<java.lang.Integer>
    21.7  1 error
    21.8  1 warning
    22.1 --- a/test/tools/javac/cast/6665356/T6665356.out	Mon Mar 26 15:27:51 2012 +0100
    22.2 +++ b/test/tools/javac/cast/6665356/T6665356.out	Mon Mar 26 15:28:22 2012 +0100
    22.3 @@ -1,8 +1,8 @@
    22.4 -T6665356.java:31:55: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6665356.Outer<java.lang.Integer>.Inner<java.lang.Long>, T6665356.Outer<? super java.lang.Number>.Inner<java.lang.Long>
    22.5 -T6665356.java:35:58: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6665356.Outer<java.lang.Integer>.Inner<java.lang.Long>, T6665356.Outer<java.lang.Integer>.Inner<? super java.lang.Number>
    22.6 -T6665356.java:39:65: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6665356.Outer<java.lang.Integer>.Inner<java.lang.Long>, T6665356.Outer<? super java.lang.Number>.Inner<? super java.lang.Number>
    22.7 -T6665356.java:43:57: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6665356.Outer<java.lang.Integer>.Inner<java.lang.Long>, T6665356.Outer<? extends java.lang.String>.Inner<java.lang.Long>
    22.8 -T6665356.java:47:60: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6665356.Outer<java.lang.Integer>.Inner<java.lang.Long>, T6665356.Outer<java.lang.Integer>.Inner<? extends java.lang.String>
    22.9 -T6665356.java:51:55: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6665356.Outer<java.lang.Integer>.Inner<java.lang.Long>, T6665356.Outer<? super java.lang.String>.Inner<java.lang.Long>
   22.10 -T6665356.java:55:58: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6665356.Outer<java.lang.Integer>.Inner<java.lang.Long>, T6665356.Outer<java.lang.Integer>.Inner<? super java.lang.String>
   22.11 +T6665356.java:31:55: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6665356.Outer<java.lang.Integer>.Inner<java.lang.Long>, T6665356.Outer<? super java.lang.Number>.Inner<java.lang.Long>)
   22.12 +T6665356.java:35:58: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6665356.Outer<java.lang.Integer>.Inner<java.lang.Long>, T6665356.Outer<java.lang.Integer>.Inner<? super java.lang.Number>)
   22.13 +T6665356.java:39:65: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6665356.Outer<java.lang.Integer>.Inner<java.lang.Long>, T6665356.Outer<? super java.lang.Number>.Inner<? super java.lang.Number>)
   22.14 +T6665356.java:43:57: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6665356.Outer<java.lang.Integer>.Inner<java.lang.Long>, T6665356.Outer<? extends java.lang.String>.Inner<java.lang.Long>)
   22.15 +T6665356.java:47:60: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6665356.Outer<java.lang.Integer>.Inner<java.lang.Long>, T6665356.Outer<java.lang.Integer>.Inner<? extends java.lang.String>)
   22.16 +T6665356.java:51:55: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6665356.Outer<java.lang.Integer>.Inner<java.lang.Long>, T6665356.Outer<? super java.lang.String>.Inner<java.lang.Long>)
   22.17 +T6665356.java:55:58: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6665356.Outer<java.lang.Integer>.Inner<java.lang.Long>, T6665356.Outer<java.lang.Integer>.Inner<? super java.lang.String>)
   22.18  7 errors
    23.1 --- a/test/tools/javac/cast/6795580/T6795580.out	Mon Mar 26 15:27:51 2012 +0100
    23.2 +++ b/test/tools/javac/cast/6795580/T6795580.out	Mon Mar 26 15:28:22 2012 +0100
    23.3 @@ -1,8 +1,8 @@
    23.4 -T6795580.java:31:57: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<? super java.lang.Number>.Inner<java.lang.Long>[]
    23.5 -T6795580.java:35:60: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<java.lang.Integer>.Inner<? super java.lang.Number>[]
    23.6 -T6795580.java:39:67: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<? super java.lang.Number>.Inner<? super java.lang.Number>[]
    23.7 -T6795580.java:43:59: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<? extends java.lang.String>.Inner<java.lang.Long>[]
    23.8 -T6795580.java:47:62: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<java.lang.Integer>.Inner<? extends java.lang.String>[]
    23.9 -T6795580.java:51:57: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<? super java.lang.String>.Inner<java.lang.Long>[]
   23.10 -T6795580.java:55:60: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<java.lang.Integer>.Inner<? super java.lang.String>[]
   23.11 +T6795580.java:31:57: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<? super java.lang.Number>.Inner<java.lang.Long>[])
   23.12 +T6795580.java:35:60: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<java.lang.Integer>.Inner<? super java.lang.Number>[])
   23.13 +T6795580.java:39:67: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<? super java.lang.Number>.Inner<? super java.lang.Number>[])
   23.14 +T6795580.java:43:59: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<? extends java.lang.String>.Inner<java.lang.Long>[])
   23.15 +T6795580.java:47:62: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<java.lang.Integer>.Inner<? extends java.lang.String>[])
   23.16 +T6795580.java:51:57: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<? super java.lang.String>.Inner<java.lang.Long>[])
   23.17 +T6795580.java:55:60: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6795580.Outer<java.lang.Integer>.Inner<java.lang.Long>[], T6795580.Outer<java.lang.Integer>.Inner<? super java.lang.String>[])
   23.18  7 errors
    24.1 --- a/test/tools/javac/cast/6932571/T6932571neg.out	Mon Mar 26 15:27:51 2012 +0100
    24.2 +++ b/test/tools/javac/cast/6932571/T6932571neg.out	Mon Mar 26 15:28:22 2012 +0100
    24.3 @@ -1,2 +1,2 @@
    24.4 -T6932571neg.java:39:19: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T6932571neg.S, G
    24.5 +T6932571neg.java:39:19: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T6932571neg.S, G)
    24.6  1 error
    25.1 --- a/test/tools/javac/cast/7005095/T7005095neg.out	Mon Mar 26 15:27:51 2012 +0100
    25.2 +++ b/test/tools/javac/cast/7005095/T7005095neg.out	Mon Mar 26 15:28:22 2012 +0100
    25.3 @@ -1,2 +1,2 @@
    25.4 -T7005095neg.java:13:25: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), T7005095pos.FooImpl, T7005095pos.Foo<T>
    25.5 +T7005095neg.java:13:25: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: T7005095pos.FooImpl, T7005095pos.Foo<T>)
    25.6  1 error
    26.1 --- a/test/tools/javac/cast/7005671/T7005671.out	Mon Mar 26 15:27:51 2012 +0100
    26.2 +++ b/test/tools/javac/cast/7005671/T7005671.out	Mon Mar 26 15:28:22 2012 +0100
    26.3 @@ -1,17 +1,17 @@
    26.4 -T7005671.java:12:26: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), byte[], X[]
    26.5 -T7005671.java:13:26: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), short[], X[]
    26.6 -T7005671.java:14:26: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), int[], X[]
    26.7 -T7005671.java:15:26: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), long[], X[]
    26.8 -T7005671.java:16:26: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), float[], X[]
    26.9 -T7005671.java:17:26: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), double[], X[]
   26.10 -T7005671.java:18:26: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), char[], X[]
   26.11 -T7005671.java:19:26: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), boolean[], X[]
   26.12 -T7005671.java:23:29: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), X[], byte[]
   26.13 -T7005671.java:24:30: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), X[], short[]
   26.14 -T7005671.java:25:28: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), X[], int[]
   26.15 -T7005671.java:26:29: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), X[], long[]
   26.16 -T7005671.java:27:30: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), X[], float[]
   26.17 -T7005671.java:28:31: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), X[], double[]
   26.18 -T7005671.java:29:29: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), X[], char[]
   26.19 -T7005671.java:30:32: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), X[], boolean[]
   26.20 +T7005671.java:12:26: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: byte[], X[])
   26.21 +T7005671.java:13:26: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: short[], X[])
   26.22 +T7005671.java:14:26: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: int[], X[])
   26.23 +T7005671.java:15:26: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: long[], X[])
   26.24 +T7005671.java:16:26: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: float[], X[])
   26.25 +T7005671.java:17:26: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: double[], X[])
   26.26 +T7005671.java:18:26: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: char[], X[])
   26.27 +T7005671.java:19:26: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: boolean[], X[])
   26.28 +T7005671.java:23:29: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: X[], byte[])
   26.29 +T7005671.java:24:30: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: X[], short[])
   26.30 +T7005671.java:25:28: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: X[], int[])
   26.31 +T7005671.java:26:29: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: X[], long[])
   26.32 +T7005671.java:27:30: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: X[], float[])
   26.33 +T7005671.java:28:31: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: X[], double[])
   26.34 +T7005671.java:29:29: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: X[], char[])
   26.35 +T7005671.java:30:32: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: X[], boolean[])
   26.36  16 errors
    27.1 --- a/test/tools/javac/diags/examples.not-yet.txt	Mon Mar 26 15:27:51 2012 +0100
    27.2 +++ b/test/tools/javac/diags/examples.not-yet.txt	Mon Mar 26 15:28:22 2012 +0100
    27.3 @@ -1,8 +1,6 @@
    27.4  compiler.err.already.annotated                          # internal compiler error?
    27.5  compiler.err.already.defined.this.unit                  # seems to be masked by compiler.err.duplicate.class
    27.6  compiler.err.annotation.value.not.allowable.type        # cannot happen: precluded by complete type-specific tests
    27.7 -compiler.err.assignment.from.super-bound                # DEAD
    27.8 -compiler.err.assignment.to.extends-bound                # DEAD
    27.9  compiler.err.cant.apply.symbol
   27.10  compiler.err.cant.read.file                             # (apt.JavaCompiler?)
   27.11  compiler.err.cant.select.static.class.from.param.type
   27.12 @@ -24,7 +22,6 @@
   27.13  compiler.err.no.encl.instance.of.type.in.scope          # cannot occur; always followed by assert false;
   27.14  compiler.err.no.match.entry                             # UNUSED?
   27.15  compiler.err.not.annotation.type                        # cannot occur given preceding checkType
   27.16 -compiler.err.prob.found.req.1                           # Check: DEAD, in unused method
   27.17  compiler.err.proc.bad.config.file                       # JavacProcessingEnvironment
   27.18  compiler.err.proc.cant.access                           # completion failure
   27.19  compiler.err.proc.cant.access.1                         # completion failure, no stack trace
   27.20 @@ -38,12 +35,9 @@
   27.21  compiler.err.stack.sim.error
   27.22  compiler.err.type.var.more.than.once                    # UNUSED
   27.23  compiler.err.type.var.more.than.once.in.result          # UNUSED
   27.24 -compiler.err.undetermined.type
   27.25  compiler.err.unexpected.type
   27.26  compiler.err.unsupported.cross.fp.lit                   # Scanner: host system dependent
   27.27  compiler.err.wrong.target.for.polymorphic.signature.definition     # Transitional 292
   27.28 -compiler.misc.assignment.from.super-bound
   27.29 -compiler.misc.assignment.to.extends-bound
   27.30  compiler.misc.bad.class.file.header                     # bad class file
   27.31  compiler.misc.bad.class.signature                       # bad class file
   27.32  compiler.misc.bad.const.pool.tag                        # bad class file
   27.33 @@ -88,7 +82,6 @@
   27.34  compiler.misc.type.variable.has.undetermined.type
   27.35  compiler.misc.unable.to.access.file                     # ClassFile
   27.36  compiler.misc.undecl.type.var                           # ClassReader
   27.37 -compiler.misc.undetermined.type
   27.38  compiler.misc.unicode.str.not.supported                 # ClassReader
   27.39  compiler.misc.verbose.retro                             # UNUSED
   27.40  compiler.misc.verbose.retro.with                        # UNUSED
    28.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.2 +++ b/test/tools/javac/diags/examples/CantApplyDiamond1.java	Mon Mar 26 15:28:22 2012 +0100
    28.3 @@ -0,0 +1,36 @@
    28.4 +/*
    28.5 + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
    28.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    28.7 + *
    28.8 + * This code is free software; you can redistribute it and/or modify it
    28.9 + * under the terms of the GNU General Public License version 2 only, as
   28.10 + * published by the Free Software Foundation.
   28.11 + *
   28.12 + * This code is distributed in the hope that it will be useful, but WITHOUT
   28.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   28.14 + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   28.15 + * version 2 for more details (a copy is included in the LICENSE file that
   28.16 + * accompanied this code).
   28.17 + *
   28.18 + * You should have received a copy of the GNU General Public License version
   28.19 + * 2 along with this work; if not, write to the Free Software Foundation,
   28.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
   28.21 + *
   28.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
   28.23 + * or visit www.oracle.com if you need additional information or have any
   28.24 + * questions.
   28.25 + */
   28.26 +
   28.27 +// key: compiler.err.prob.found.req.1
   28.28 +// key: compiler.misc.cant.apply.diamond.1
   28.29 +// key: compiler.misc.infer.no.conforming.instance.exists
   28.30 +// key: compiler.misc.diamond
   28.31 +
   28.32 +class CantApplyDiamond1<X> {
   28.33 +
   28.34 +    CantApplyDiamond1(CantApplyDiamond1<? super X> lz) { }
   28.35 +
   28.36 +    void test(CantApplyDiamond1<Integer> li) {
   28.37 +       CantApplyDiamond1<String> ls = new CantApplyDiamond1<>(li);
   28.38 +    }
   28.39 +}
    29.1 --- a/test/tools/javac/diags/examples/IncompatibleTypes1.java	Mon Mar 26 15:27:51 2012 +0100
    29.2 +++ b/test/tools/javac/diags/examples/IncompatibleTypes1.java	Mon Mar 26 15:28:22 2012 +0100
    29.3 @@ -21,9 +21,8 @@
    29.4   * questions.
    29.5   */
    29.6  
    29.7 -// key: compiler.misc.incompatible.types.1
    29.8  // key: compiler.misc.infer.no.conforming.instance.exists
    29.9 -// key: compiler.err.prob.found.req
   29.10 +// key: compiler.err.prob.found.req.1
   29.11  
   29.12  class IncompatibleTypes1<V> {
   29.13      <T extends Integer & Runnable> IncompatibleTypes1<T> m() {
    30.1 --- a/test/tools/javac/diags/examples/InconvertibleTypes.java	Mon Mar 26 15:27:51 2012 +0100
    30.2 +++ b/test/tools/javac/diags/examples/InconvertibleTypes.java	Mon Mar 26 15:28:22 2012 +0100
    30.3 @@ -22,7 +22,7 @@
    30.4   */
    30.5  
    30.6  // key: compiler.misc.inconvertible.types
    30.7 -// key: compiler.err.prob.found.req
    30.8 +// key: compiler.err.prob.found.req.1
    30.9  
   30.10  class InconvertibleTypes {
   30.11      class Outer<S> {
    31.1 --- a/test/tools/javac/diags/examples/InvalidInferredTypes.java	Mon Mar 26 15:27:51 2012 +0100
    31.2 +++ b/test/tools/javac/diags/examples/InvalidInferredTypes.java	Mon Mar 26 15:28:22 2012 +0100
    31.3 @@ -21,7 +21,8 @@
    31.4   * questions.
    31.5   */
    31.6  
    31.7 -// key: compiler.err.invalid.inferred.types
    31.8 +// key: compiler.err.prob.found.req.1
    31.9 +// key: compiler.misc.invalid.inferred.types
   31.10  // key: compiler.misc.inferred.do.not.conform.to.bounds
   31.11  
   31.12  import java.util.*;
    32.1 --- a/test/tools/javac/diags/examples/PossibleLossPrecision.java	Mon Mar 26 15:27:51 2012 +0100
    32.2 +++ b/test/tools/javac/diags/examples/PossibleLossPrecision.java	Mon Mar 26 15:28:22 2012 +0100
    32.3 @@ -22,7 +22,7 @@
    32.4   */
    32.5  
    32.6  // key: compiler.misc.possible.loss.of.precision
    32.7 -// key: compiler.err.prob.found.req
    32.8 +// key: compiler.err.prob.found.req.1
    32.9  
   32.10  class PossibleLossPrecision {
   32.11      long l;
    33.1 --- a/test/tools/javac/diags/examples/ResourceNotApplicableToType.java	Mon Mar 26 15:27:51 2012 +0100
    33.2 +++ b/test/tools/javac/diags/examples/ResourceNotApplicableToType.java	Mon Mar 26 15:28:22 2012 +0100
    33.3 @@ -22,7 +22,7 @@
    33.4   */
    33.5  
    33.6  // key: compiler.misc.try.not.applicable.to.type
    33.7 -// key: compiler.err.prob.found.req
    33.8 +// key: compiler.err.prob.found.req.1
    33.9  
   33.10  class ResourceNotApplicableToType {
   33.11      void m() {
    34.1 --- a/test/tools/javac/diags/examples/UndeterminedType1.java	Mon Mar 26 15:27:51 2012 +0100
    34.2 +++ b/test/tools/javac/diags/examples/UndeterminedType1.java	Mon Mar 26 15:28:22 2012 +0100
    34.3 @@ -21,7 +21,8 @@
    34.4   * questions.
    34.5   */
    34.6  
    34.7 -// key: compiler.err.undetermined.type.1
    34.8 +// key: compiler.err.prob.found.req.1
    34.9 +// key: compiler.misc.undetermined.type
   34.10  // key: compiler.misc.no.unique.maximal.instance.exists
   34.11  
   34.12  class UndeterminedType1<V> {
    35.1 --- a/test/tools/javac/diags/examples/WhereIntersection.java	Mon Mar 26 15:27:51 2012 +0100
    35.2 +++ b/test/tools/javac/diags/examples/WhereIntersection.java	Mon Mar 26 15:28:22 2012 +0100
    35.3 @@ -24,7 +24,6 @@
    35.4  // key: compiler.misc.where.intersection
    35.5  // key: compiler.misc.where.description.intersection
    35.6  // key: compiler.misc.intersection.type
    35.7 -// key: compiler.misc.incompatible.types
    35.8  // key: compiler.err.prob.found.req
    35.9  // options: -XDdiags=where
   35.10  // run: simple
    36.1 --- a/test/tools/javac/generics/6207386/T6207386.out	Mon Mar 26 15:27:51 2012 +0100
    36.2 +++ b/test/tools/javac/generics/6207386/T6207386.out	Mon Mar 26 15:28:22 2012 +0100
    36.3 @@ -1,2 +1,2 @@
    36.4 -T6207386.java:13:30: compiler.err.prob.found.req: (compiler.misc.incompatible.types), X, T6207386.F<? super X>
    36.5 +T6207386.java:13:30: compiler.err.prob.found.req: X, T6207386.F<? super X>
    36.6  1 error
    37.1 --- a/test/tools/javac/generics/diamond/neg/Neg05.out	Mon Mar 26 15:27:51 2012 +0100
    37.2 +++ b/test/tools/javac/generics/diamond/neg/Neg05.out	Mon Mar 26 15:28:22 2012 +0100
    37.3 @@ -1,19 +1,19 @@
    37.4  Neg05.java:19:48: compiler.err.improperly.formed.type.inner.raw.param
    37.5 -Neg05.java:19:35: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo<java.lang.String>, Neg05<?>.Foo<java.lang.String>
    37.6 +Neg05.java:19:35: compiler.err.prob.found.req: Neg05.Foo<java.lang.String>, Neg05<?>.Foo<java.lang.String>
    37.7  Neg05.java:20:58: compiler.err.improperly.formed.type.inner.raw.param
    37.8 -Neg05.java:20:45: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo<java.lang.String>, Neg05<?>.Foo<? extends java.lang.String>
    37.9 +Neg05.java:20:45: compiler.err.prob.found.req: Neg05.Foo<java.lang.String>, Neg05<?>.Foo<? extends java.lang.String>
   37.10  Neg05.java:21:43: compiler.err.improperly.formed.type.inner.raw.param
   37.11 -Neg05.java:21:30: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo<java.lang.String>, Neg05<?>.Foo<?>
   37.12 +Neg05.java:21:30: compiler.err.prob.found.req: Neg05.Foo<java.lang.String>, Neg05<?>.Foo<?>
   37.13  Neg05.java:22:56: compiler.err.improperly.formed.type.inner.raw.param
   37.14 -Neg05.java:22:43: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo<java.lang.String>, Neg05<?>.Foo<? super java.lang.String>
   37.15 +Neg05.java:22:43: compiler.err.prob.found.req: Neg05.Foo<java.lang.String>, Neg05<?>.Foo<? super java.lang.String>
   37.16  Neg05.java:24:48: compiler.err.improperly.formed.type.inner.raw.param
   37.17 -Neg05.java:24:35: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo<java.lang.String>, Neg05<?>.Foo<java.lang.String>
   37.18 +Neg05.java:24:35: compiler.err.prob.found.req: Neg05.Foo<java.lang.String>, Neg05<?>.Foo<java.lang.String>
   37.19  Neg05.java:25:58: compiler.err.improperly.formed.type.inner.raw.param
   37.20 -Neg05.java:25:45: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo<java.lang.String>, Neg05<?>.Foo<? extends java.lang.String>
   37.21 +Neg05.java:25:45: compiler.err.prob.found.req: Neg05.Foo<java.lang.String>, Neg05<?>.Foo<? extends java.lang.String>
   37.22  Neg05.java:26:43: compiler.err.improperly.formed.type.inner.raw.param
   37.23 -Neg05.java:26:30: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo<java.lang.String>, Neg05<?>.Foo<?>
   37.24 +Neg05.java:26:30: compiler.err.prob.found.req: Neg05.Foo<java.lang.String>, Neg05<?>.Foo<?>
   37.25  Neg05.java:27:56: compiler.err.improperly.formed.type.inner.raw.param
   37.26 -Neg05.java:27:43: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg05.Foo<java.lang.String>, Neg05<?>.Foo<? super java.lang.String>
   37.27 +Neg05.java:27:43: compiler.err.prob.found.req: Neg05.Foo<java.lang.String>, Neg05<?>.Foo<? super java.lang.String>
   37.28  Neg05.java:31:37: compiler.err.improperly.formed.type.inner.raw.param
   37.29  Neg05.java:32:47: compiler.err.improperly.formed.type.inner.raw.param
   37.30  Neg05.java:33:32: compiler.err.improperly.formed.type.inner.raw.param
    38.1 --- a/test/tools/javac/generics/diamond/neg/Neg06.out	Mon Mar 26 15:27:51 2012 +0100
    38.2 +++ b/test/tools/javac/generics/diamond/neg/Neg06.out	Mon Mar 26 15:28:22 2012 +0100
    38.3 @@ -1,2 +1,2 @@
    38.4 -Neg06.java:16:37: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: Neg06.CFoo), (compiler.misc.infer.no.conforming.instance.exists: X, Neg06.CFoo<X>, Neg06.CSuperFoo<java.lang.String>)
    38.5 +Neg06.java:16:37: compiler.err.prob.found.req.1: (compiler.misc.cant.apply.diamond.1: (compiler.misc.diamond: Neg06.CFoo), (compiler.misc.infer.no.conforming.instance.exists: X, Neg06.CFoo<X>, Neg06.CSuperFoo<java.lang.String>))
    38.6  1 error
    39.1 --- a/test/tools/javac/generics/diamond/neg/Neg10.out	Mon Mar 26 15:27:51 2012 +0100
    39.2 +++ b/test/tools/javac/generics/diamond/neg/Neg10.out	Mon Mar 26 15:28:22 2012 +0100
    39.3 @@ -1,2 +1,2 @@
    39.4 -Neg10.java:16:22: compiler.err.prob.found.req: (compiler.misc.incompatible.types), Neg10.Foo<java.lang.Integer>, Neg10.Foo<java.lang.Number>
    39.5 +Neg10.java:16:22: compiler.err.prob.found.req: Neg10.Foo<java.lang.Integer>, Neg10.Foo<java.lang.Number>
    39.6  1 error
    40.1 --- a/test/tools/javac/generics/inference/6315770/T6315770.out	Mon Mar 26 15:27:51 2012 +0100
    40.2 +++ b/test/tools/javac/generics/inference/6315770/T6315770.out	Mon Mar 26 15:28:22 2012 +0100
    40.3 @@ -1,3 +1,3 @@
    40.4 -T6315770.java:16:42: compiler.err.undetermined.type.1: <T>T6315770<T>, (compiler.misc.no.unique.maximal.instance.exists: T, java.lang.String,java.lang.Integer,java.lang.Runnable)
    40.5 -T6315770.java:17:40: compiler.err.prob.found.req: (compiler.misc.incompatible.types.1: (compiler.misc.infer.no.conforming.instance.exists: T, T6315770<T>, T6315770<? super java.lang.String>)), <T>T6315770<T>, T6315770<? super java.lang.String>
    40.6 +T6315770.java:16:42: compiler.err.prob.found.req.1: (compiler.misc.undetermined.type: <T>T6315770<T>, (compiler.misc.no.unique.maximal.instance.exists: T, java.lang.String,java.lang.Integer,java.lang.Runnable))
    40.7 +T6315770.java:17:40: compiler.err.prob.found.req.1: (compiler.misc.infer.no.conforming.instance.exists: T, T6315770<T>, T6315770<? super java.lang.String>)
    40.8  2 errors
    41.1 --- a/test/tools/javac/generics/inference/6638712/T6638712b.out	Mon Mar 26 15:27:51 2012 +0100
    41.2 +++ b/test/tools/javac/generics/inference/6638712/T6638712b.out	Mon Mar 26 15:28:22 2012 +0100
    41.3 @@ -1,2 +1,2 @@
    41.4 -T6638712b.java:14:21: compiler.err.prob.found.req: (compiler.misc.incompatible.types.1: (compiler.misc.infer.no.conforming.instance.exists: T, T, java.lang.String)), <T>T, java.lang.String
    41.5 +T6638712b.java:14:21: compiler.err.prob.found.req.1: (compiler.misc.infer.no.conforming.instance.exists: T, T, java.lang.String)
    41.6  1 error
    42.1 --- a/test/tools/javac/generics/inference/6638712/T6638712e.out	Mon Mar 26 15:27:51 2012 +0100
    42.2 +++ b/test/tools/javac/generics/inference/6638712/T6638712e.out	Mon Mar 26 15:28:22 2012 +0100
    42.3 @@ -1,2 +1,2 @@
    42.4 -T6638712e.java:17:27: compiler.err.prob.found.req: (compiler.misc.incompatible.types.1: (compiler.misc.infer.no.conforming.instance.exists: X, T6638712e.Foo<X,java.lang.String>, T6638712e.Foo<java.lang.Object,java.lang.String>)), <X>T6638712e.Foo<X,java.lang.String>, T6638712e.Foo<java.lang.Object,java.lang.String>
    42.5 +T6638712e.java:17:27: compiler.err.prob.found.req.1: (compiler.misc.infer.no.conforming.instance.exists: X, T6638712e.Foo<X,java.lang.String>, T6638712e.Foo<java.lang.Object,java.lang.String>)
    42.6  1 error
    43.1 --- a/test/tools/javac/generics/inference/6650759/T6650759m.out	Mon Mar 26 15:27:51 2012 +0100
    43.2 +++ b/test/tools/javac/generics/inference/6650759/T6650759m.out	Mon Mar 26 15:28:22 2012 +0100
    43.3 @@ -1,2 +1,2 @@
    43.4 -T6650759m.java:43:36: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.util.List<? super java.lang.Integer>, java.util.List<? super java.lang.String>
    43.5 +T6650759m.java:43:36: compiler.err.prob.found.req: java.util.List<? super java.lang.Integer>, java.util.List<? super java.lang.String>
    43.6  1 error
    44.1 --- a/test/tools/javac/generics/rawOverride/7062745/T7062745neg.out	Mon Mar 26 15:27:51 2012 +0100
    44.2 +++ b/test/tools/javac/generics/rawOverride/7062745/T7062745neg.out	Mon Mar 26 15:28:22 2012 +0100
    44.3 @@ -1,2 +1,2 @@
    44.4 -T7062745neg.java:16:36: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.lang.Object, java.lang.Number
    44.5 +T7062745neg.java:16:36: compiler.err.prob.found.req: java.lang.Object, java.lang.Number
    44.6  1 error
    45.1 --- a/test/tools/javac/generics/wildcards/6886247/T6886247_2.out	Mon Mar 26 15:27:51 2012 +0100
    45.2 +++ b/test/tools/javac/generics/wildcards/6886247/T6886247_2.out	Mon Mar 26 15:28:22 2012 +0100
    45.3 @@ -1,2 +1,2 @@
    45.4 -T6886247_2.java:35:28: compiler.err.prob.found.req: (compiler.misc.incompatible.types), compiler.misc.type.captureof: 1, ?, E
    45.5 +T6886247_2.java:35:28: compiler.err.prob.found.req: compiler.misc.type.captureof: 1, ?, E
    45.6  1 error
    46.1 --- a/test/tools/javac/multicatch/Neg06.out	Mon Mar 26 15:27:51 2012 +0100
    46.2 +++ b/test/tools/javac/multicatch/Neg06.out	Mon Mar 26 15:28:22 2012 +0100
    46.3 @@ -1,3 +1,3 @@
    46.4 -Neg06.java:14:16: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.lang.String, java.lang.Throwable
    46.5 -Neg06.java:14:25: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.lang.Integer, java.lang.Throwable
    46.6 +Neg06.java:14:16: compiler.err.prob.found.req: java.lang.String, java.lang.Throwable
    46.7 +Neg06.java:14:25: compiler.err.prob.found.req: java.lang.Integer, java.lang.Throwable
    46.8  2 errors
    47.1 --- a/test/tools/javac/multicatch/Neg07.out	Mon Mar 26 15:27:51 2012 +0100
    47.2 +++ b/test/tools/javac/multicatch/Neg07.out	Mon Mar 26 15:28:22 2012 +0100
    47.3 @@ -1,2 +1,2 @@
    47.4 -Neg07.java:14:56: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.lang.Class<compiler.misc.type.captureof: 1, ? extends Neg07.ParentException>, java.lang.Class<? extends Neg07.HasFoo>
    47.5 +Neg07.java:14:56: compiler.err.prob.found.req: java.lang.Class<compiler.misc.type.captureof: 1, ? extends Neg07.ParentException>, java.lang.Class<? extends Neg07.HasFoo>
    47.6  1 error
    48.1 --- a/test/tools/javac/types/CastObjectToPrimitiveTest.out	Mon Mar 26 15:27:51 2012 +0100
    48.2 +++ b/test/tools/javac/types/CastObjectToPrimitiveTest.out	Mon Mar 26 15:28:22 2012 +0100
    48.3 @@ -1,2 +1,2 @@
    48.4 -CastObjectToPrimitiveTest.java:36:23: compiler.err.prob.found.req: (compiler.misc.inconvertible.types), java.lang.Object, int
    48.5 +CastObjectToPrimitiveTest.java:36:23: compiler.err.prob.found.req.1: (compiler.misc.inconvertible.types: java.lang.Object, int)
    48.6  1 error
    49.1 --- a/test/tools/javac/varargs/6313164/T6313164.out	Mon Mar 26 15:27:51 2012 +0100
    49.2 +++ b/test/tools/javac/varargs/6313164/T6313164.out	Mon Mar 26 15:28:22 2012 +0100
    49.3 @@ -1,6 +1,6 @@
    49.4  T6313164.java:12:8: compiler.err.cant.apply.symbol.1: kindname.method, foo1, p1.A[], p1.B,p1.B, kindname.class, p1.B, (compiler.misc.inaccessible.varargs.type: p1.A, kindname.class, T6313164)
    49.5 -T6313164.java:14:13: compiler.err.invalid.inferred.types: X, (compiler.misc.inaccessible.varargs.type: p1.A, kindname.class, T6313164)
    49.6 -T6313164.java:15:13: compiler.err.invalid.inferred.types: X, (compiler.misc.inaccessible.varargs.type: p1.A, kindname.class, T6313164)
    49.7 +T6313164.java:14:13: compiler.err.prob.found.req.1: (compiler.misc.invalid.inferred.types: X, (compiler.misc.inaccessible.varargs.type: p1.A, kindname.class, T6313164))
    49.8 +T6313164.java:15:13: compiler.err.prob.found.req.1: (compiler.misc.invalid.inferred.types: X, (compiler.misc.inaccessible.varargs.type: p1.A, kindname.class, T6313164))
    49.9  - compiler.note.unchecked.filename: B.java
   49.10  - compiler.note.unchecked.recompile
   49.11  3 errors
    50.1 --- a/test/tools/javac/varargs/7097436/T7097436.out	Mon Mar 26 15:27:51 2012 +0100
    50.2 +++ b/test/tools/javac/varargs/7097436/T7097436.out	Mon Mar 26 15:28:22 2012 +0100
    50.3 @@ -1,6 +1,6 @@
    50.4  T7097436.java:13:20: compiler.warn.varargs.unsafe.use.varargs.param: ls
    50.5  T7097436.java:14:25: compiler.warn.varargs.unsafe.use.varargs.param: ls
    50.6 -T7097436.java:15:20: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.util.List<java.lang.String>[], java.lang.String
    50.7 -T7097436.java:16:26: compiler.err.prob.found.req: (compiler.misc.incompatible.types), java.util.List<java.lang.String>[], java.lang.Integer[]
    50.8 +T7097436.java:15:20: compiler.err.prob.found.req: java.util.List<java.lang.String>[], java.lang.String
    50.9 +T7097436.java:16:26: compiler.err.prob.found.req: java.util.List<java.lang.String>[], java.lang.Integer[]
   50.10  2 errors
   50.11  2 warnings

mercurial