d7af112d8d
Correcting expected line numbers Reviewed-by: alundblad
54 lines
2.1 KiB
Java
54 lines
2.1 KiB
Java
/*
|
|
* @test /nodynamiccopyright/
|
|
* @bug 8050993
|
|
* @summary Verify that the condition in the conditional lexpression gets a LineNumberTable entry
|
|
* @modules jdk.jdeps/com.sun.tools.classfile
|
|
* @compile -g T8050993.java
|
|
* @run main T8050993
|
|
*/
|
|
|
|
import java.io.IOException;
|
|
import java.util.Arrays;
|
|
import java.util.HashSet;
|
|
import java.util.Objects;
|
|
import java.util.Set;
|
|
import java.util.stream.Collectors;
|
|
|
|
import com.sun.tools.classfile.*;
|
|
|
|
public class T8050993 {
|
|
public static void main(String[] args) throws IOException, ConstantPoolException {
|
|
ClassFile someTestIn = ClassFile.read(T8050993.class.getResourceAsStream("T8050993.class"));
|
|
Set<Integer> expectedLineNumbers = new HashSet<>(Arrays.asList(49, 50, 47, 48));
|
|
for (Method m : someTestIn.methods) {
|
|
if ("method".equals(m.getName(someTestIn.constant_pool))) {
|
|
Code_attribute code_attribute = (Code_attribute) m.attributes.get(Attribute.Code);
|
|
for (Attribute at : code_attribute.attributes) {
|
|
if (Attribute.LineNumberTable.equals(at.getName(someTestIn.constant_pool))) {
|
|
LineNumberTable_attribute att = (LineNumberTable_attribute) at;
|
|
Set<Integer> actualLinesNumbers = Arrays.stream(att.line_number_table)
|
|
.map(e -> e.line_number)
|
|
.collect(Collectors.toSet());
|
|
if (!Objects.equals(expectedLineNumbers, actualLinesNumbers)) {
|
|
throw new AssertionError("Expected LineNumber entries not found;" +
|
|
"actual=" + actualLinesNumbers + ";" +
|
|
"expected=" + expectedLineNumbers);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static int field;
|
|
|
|
public static String method() {
|
|
String s =
|
|
field % 2 == 0 ?
|
|
"true" + field :
|
|
"false" + field;
|
|
return s;
|
|
}
|
|
|
|
}
|