diff -r d0f7a3e441c4 -r 88ab34b6da6d jdk/src/share/classes/java/lang/invoke/MemberName.java --- a/jdk/src/share/classes/java/lang/invoke/MemberName.java Tue May 17 19:48:19 2011 -0700 +++ b/jdk/src/share/classes/java/lang/invoke/MemberName.java Thu May 26 17:37:36 2011 -0700 @@ -506,8 +506,18 @@ if (from != null) message += ", from " + from; return new IllegalAccessException(message); } - public ReflectiveOperationException makeAccessException(String message) { - message = message + ": "+ toString(); + private String message() { + if (isResolved()) + return "no access"; + else if (isConstructor()) + return "no such constructor"; + else if (isMethod()) + return "no such method"; + else + return "no such field"; + } + public ReflectiveOperationException makeAccessException() { + String message = message() + ": "+ toString(); if (isResolved()) return new IllegalAccessException(message); else if (isConstructor()) @@ -641,7 +651,7 @@ MemberName result = resolveOrNull(m, searchSupers, lookupClass); if (result != null) return result; - ReflectiveOperationException ex = m.makeAccessException("no access"); + ReflectiveOperationException ex = m.makeAccessException(); if (ex instanceof IllegalAccessException) throw (IllegalAccessException) ex; throw nsmClass.cast(ex); }