Mon, 26 Mar 2012 15:28:22 +0100
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
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