# HG changeset patch # User mcimadamore # Date 1360946239 0 # Node ID 64d698b98faa652295c3d1193eca95cce75f43fc # Parent 22c10640a5212438ba027737ad26014f0d1f53dd# Parent d4249734ecd8723997d724fc5fb005ee5fa993c0 Merge diff -r 22c10640a521 -r 64d698b98faa langtools/src/share/classes/com/sun/tools/javap/ClassWriter.java --- a/langtools/src/share/classes/com/sun/tools/javap/ClassWriter.java Fri Feb 15 16:31:19 2013 +0000 +++ b/langtools/src/share/classes/com/sun/tools/javap/ClassWriter.java Fri Feb 15 16:37:19 2013 +0000 @@ -379,8 +379,8 @@ indent(+1); - if (options.showInternalSignatures) - println("Signature: " + getValue(f.descriptor)); + if (options.showDescriptors) + println("descriptor: " + getValue(f.descriptor)); if (options.verbose && !options.compat) writeList("flags: ", flags.getFieldFlags(), "\n"); @@ -475,8 +475,8 @@ indent(+1); - if (options.showInternalSignatures) { - println("Signature: " + getValue(m.descriptor)); + if (options.showDescriptors) { + println("descriptor: " + getValue(m.descriptor)); } if (options.verbose && !options.compat) { @@ -520,7 +520,7 @@ setPendingNewline( options.showDisassembled || options.showAllAttrs || - options.showInternalSignatures || + options.showDescriptors || options.showLineAndLocalVariableTables || options.verbose); } diff -r 22c10640a521 -r 64d698b98faa langtools/src/share/classes/com/sun/tools/javap/JavapTask.java --- a/langtools/src/share/classes/com/sun/tools/javap/JavapTask.java Fri Feb 15 16:31:19 2013 +0000 +++ b/langtools/src/share/classes/com/sun/tools/javap/JavapTask.java Fri Feb 15 16:37:19 2013 +0000 @@ -140,6 +140,7 @@ new Option(false, "-v", "-verbose", "-all") { void process(JavapTask task, String opt, String arg) { task.options.verbose = true; + task.options.showDescriptors = true; task.options.showFlags = true; task.options.showAllAttrs = true; } @@ -190,7 +191,7 @@ new Option(false, "-s") { void process(JavapTask task, String opt, String arg) { - task.options.showInternalSignatures = true; + task.options.showDescriptors = true; } }, diff -r 22c10640a521 -r 64d698b98faa langtools/src/share/classes/com/sun/tools/javap/Options.java --- a/langtools/src/share/classes/com/sun/tools/javap/Options.java Fri Feb 15 16:31:19 2013 +0000 +++ b/langtools/src/share/classes/com/sun/tools/javap/Options.java Fri Feb 15 16:37:19 2013 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -81,7 +81,7 @@ public Set accessOptions = new HashSet(); public Set details = EnumSet.noneOf(InstructionDetailWriter.Kind.class); public boolean showDisassembled; - public boolean showInternalSignatures; + public boolean showDescriptors; public boolean showAllAttrs; public boolean showConstants; public boolean sysInfo; diff -r 22c10640a521 -r 64d698b98faa langtools/test/tools/javap/DescriptorTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javap/DescriptorTest.java Fri Feb 15 16:37:19 2013 +0000 @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8007052 + * @summary javap should include the descriptor for a method in verbose mode + */ + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.regex.Pattern; + +public class DescriptorTest { + public static void main(String... args) throws Exception { + new DescriptorTest().run(); + } + + void run() throws Exception { + File srcDir = new File("src"); + srcDir.mkdirs(); + File classesDir = new File("classes"); + classesDir.mkdirs(); + + File f = writeFile(new File(srcDir, "E.java"), "enum E { A, B }"); + javac("-d", classesDir.getPath(), f.getPath()); + String out = javap("-p", "-v", new File(classesDir, "E.class").getPath()); + Pattern expect = Pattern.compile("\\Qprivate E();\\E\\s+\\Qdescriptor: (Ljava/lang/String;I)V\\E"); + checkContains(out, expect); + } + + File writeFile(File f, String body) throws IOException { + try (FileWriter out = new FileWriter(f)) { + out.write(body); + } + return f; + } + + void javac(String... args) throws Exception { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + int rc = com.sun.tools.javac.Main.compile(args, pw); + pw.flush(); + String out = sw.toString(); + if (!out.isEmpty()) + System.err.println(out); + if (rc != 0) + throw new Exception("compilation failed"); + } + + String javap(String... args) throws Exception { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + int rc = com.sun.tools.javap.Main.run(args, pw); + pw.flush(); + String out = sw.toString(); + if (!out.isEmpty()) + System.err.println(out); + if (rc != 0) + throw new Exception("javap failed"); + return out; + } + + void checkContains(String s, Pattern p) throws Exception { + if (!p.matcher(s).find()) + throw new Exception("expected pattern not found: " + p); + } +}