src/share/classes/com/sun/tools/javac/comp/Flow.java

changeset 878
fa0e4e1916f4
parent 820
2d5aff89aaa3
child 880
0c24826853b2
     1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Flow.java	Tue Feb 15 11:49:46 2011 +0000
     1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Flow.java	Tue Feb 15 11:51:04 2011 +0000
     1.3 @@ -314,13 +314,22 @@
     1.4          for (PendingExit exit = pendingExits.next();
     1.5               exit != null;
     1.6               exit = pendingExits.next()) {
     1.7 -            boolean synthetic = classDef != null &&
     1.8 -                classDef.pos == exit.tree.pos;
     1.9 -            log.error(exit.tree.pos(),
    1.10 -                      synthetic
    1.11 -                      ? "unreported.exception.default.constructor"
    1.12 -                      : "unreported.exception.need.to.catch.or.throw",
    1.13 -                      exit.thrown);
    1.14 +            if (classDef != null &&
    1.15 +                classDef.pos == exit.tree.pos) {
    1.16 +                log.error(exit.tree.pos(),
    1.17 +                        "unreported.exception.default.constructor",
    1.18 +                        exit.thrown);
    1.19 +            } else if (exit.tree.getTag() == JCTree.VARDEF &&
    1.20 +                    ((JCVariableDecl)exit.tree).sym.isResourceVariable()) {
    1.21 +                log.error(exit.tree.pos(),
    1.22 +                        "unreported.exception.implicit.close",
    1.23 +                        exit.thrown,
    1.24 +                        ((JCVariableDecl)exit.tree).sym.name);
    1.25 +            } else {
    1.26 +                log.error(exit.tree.pos(),
    1.27 +                        "unreported.exception.need.to.catch.or.throw",
    1.28 +                        exit.thrown);
    1.29 +            }
    1.30          }
    1.31      }
    1.32  
    1.33 @@ -1021,7 +1030,7 @@
    1.34                              List.<Type>nil());
    1.35                      if (closeMethod.kind == MTH) {
    1.36                          for (Type t : ((MethodSymbol)closeMethod).getThrownTypes()) {
    1.37 -                            markThrown(tree.body, t);
    1.38 +                            markThrown(resource, t);
    1.39                          }
    1.40                      }
    1.41                  }

mercurial