< prev index next >

src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornException.java

Print this page

        

*** 172,194 **** if (ECMAErrors.isScriptFrame(st)) { final String className = "<" + st.getFileName() + ">"; String methodName = st.getMethodName(); if (methodName.equals(CompilerConstants.PROGRAM.symbolName())) { methodName = "<program>"; ! } ! ! if (methodName.contains(CompilerConstants.ANON_FUNCTION_PREFIX.symbolName())) { ! methodName = "<anonymous>"; } filtered.add(new StackTraceElement(className, methodName, st.getFileName(), st.getLineNumber())); } } return filtered.toArray(new StackTraceElement[0]); } /** * Return a formatted script stack trace string with frames information separated by '\n' * * @param exception exception for which script stack string is returned * @return formatted stack trace string --- 172,208 ---- if (ECMAErrors.isScriptFrame(st)) { final String className = "<" + st.getFileName() + ">"; String methodName = st.getMethodName(); if (methodName.equals(CompilerConstants.PROGRAM.symbolName())) { methodName = "<program>"; ! } else { ! methodName = stripMethodName(methodName); } filtered.add(new StackTraceElement(className, methodName, st.getFileName(), st.getLineNumber())); } } return filtered.toArray(new StackTraceElement[0]); } + private static String stripMethodName(final String methodName) { + String name = methodName; + + final int nestedSeparator = name.lastIndexOf(CompilerConstants.NESTED_FUNCTION_SEPARATOR.symbolName()); + if (nestedSeparator >= 0) { + name = name.substring(nestedSeparator + 1); + } + + final int idSeparator = name.indexOf(CompilerConstants.ID_FUNCTION_SEPARATOR.symbolName()); + if (idSeparator >= 0) { + name = name.substring(0, idSeparator); + } + + return name.contains(CompilerConstants.ANON_FUNCTION_PREFIX.symbolName()) ? "<anonymous>" : name; + } + /** * Return a formatted script stack trace string with frames information separated by '\n' * * @param exception exception for which script stack string is returned * @return formatted stack trace string
< prev index next >