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; |