langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Analyzer.java
changeset 30404 952a476681b2
parent 29776 984a79b71cfe
child 32911 6ee3c12d2d18
equal deleted inserted replaced
30403:c904bbdc5ec1 30404:952a476681b2
   224         }
   224         }
   225 
   225 
   226         @Override
   226         @Override
   227         void process(JCNewClass oldTree, JCNewClass newTree, boolean hasErrors) {
   227         void process(JCNewClass oldTree, JCNewClass newTree, boolean hasErrors) {
   228             if (!hasErrors) {
   228             if (!hasErrors) {
   229                 List<Type> inferredArgs = newTree.type.getTypeArguments();
   229                 List<Type> inferredArgs, explicitArgs;
   230                 List<Type> explicitArgs = oldTree.type.getTypeArguments();
   230                 if (oldTree.def != null) {
       
   231                     inferredArgs = newTree.def.implementing.nonEmpty()
       
   232                                       ? newTree.def.implementing.get(0).type.getTypeArguments()
       
   233                                       : newTree.def.extending.type.getTypeArguments();
       
   234                     explicitArgs = oldTree.def.implementing.nonEmpty()
       
   235                                       ? oldTree.def.implementing.get(0).type.getTypeArguments()
       
   236                                       : oldTree.def.extending.type.getTypeArguments();
       
   237                 } else {
       
   238                     inferredArgs = newTree.type.getTypeArguments();
       
   239                     explicitArgs = oldTree.type.getTypeArguments();
       
   240                 }
   231                 for (Type t : inferredArgs) {
   241                 for (Type t : inferredArgs) {
   232                     if (!types.isSameType(t, explicitArgs.head)) {
   242                     if (!types.isSameType(t, explicitArgs.head)) {
   233                         log.warning(oldTree.clazz, "diamond.redundant.args.1",
   243                         log.warning(oldTree.clazz, "diamond.redundant.args.1",
   234                                 oldTree.clazz.type, newTree.clazz.type);
   244                                 oldTree.clazz.type, newTree.clazz.type);
   235                         return;
   245                         return;