langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java
changeset 33907 9ee2b1641949
parent 33708 99085a01b536
child 35349 4a13a361309a
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java	Fri Nov 13 12:29:23 2015 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java	Fri Nov 13 18:09:36 2015 +0530
@@ -840,8 +840,10 @@
                    boolean classExpected,
                    boolean interfaceExpected,
                    boolean checkExtensible) {
+        final DiagnosticPosition pos = tree.hasTag(TYPEAPPLY) ?
+                (((JCTypeApply) tree).clazz).pos() : tree.pos();
         if (t.tsym.isAnonymous()) {
-            log.error(tree.pos(), "cant.inherit.from.anon");
+            log.error(pos, "cant.inherit.from.anon");
             return types.createErrorType(t);
         }
         if (t.isErroneous())
@@ -849,29 +851,29 @@
         if (t.hasTag(TYPEVAR) && !classExpected && !interfaceExpected) {
             // check that type variable is already visible
             if (t.getUpperBound() == null) {
-                log.error(tree.pos(), "illegal.forward.ref");
+                log.error(pos, "illegal.forward.ref");
                 return types.createErrorType(t);
             }
         } else {
-            t = chk.checkClassType(tree.pos(), t, checkExtensible);
+            t = chk.checkClassType(pos, t, checkExtensible);
         }
         if (interfaceExpected && (t.tsym.flags() & INTERFACE) == 0) {
-            log.error(tree.pos(), "intf.expected.here");
+            log.error(pos, "intf.expected.here");
             // return errType is necessary since otherwise there might
             // be undetected cycles which cause attribution to loop
             return types.createErrorType(t);
         } else if (checkExtensible &&
                    classExpected &&
                    (t.tsym.flags() & INTERFACE) != 0) {
-            log.error(tree.pos(), "no.intf.expected.here");
+            log.error(pos, "no.intf.expected.here");
             return types.createErrorType(t);
         }
         if (checkExtensible &&
             ((t.tsym.flags() & FINAL) != 0)) {
-            log.error(tree.pos(),
+            log.error(pos,
                       "cant.inherit.from.final", t.tsym);
         }
-        chk.checkNonCyclic(tree.pos(), t);
+        chk.checkNonCyclic(pos, t);
         return t;
     }