本文整理汇总了Java中com.sun.tools.classfile.ConstantPool.UnexpectedEntry类的典型用法代码示例。如果您正苦于以下问题:Java UnexpectedEntry类的具体用法?Java UnexpectedEntry怎么用?Java UnexpectedEntry使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
UnexpectedEntry类属于com.sun.tools.classfile.ConstantPool包,在下文中一共展示了UnexpectedEntry类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: checkMethod
import com.sun.tools.classfile.ConstantPool.UnexpectedEntry; //导入依赖的package包/类
void checkMethod(ConstantPool constantPool, Method method, AliveRanges ranges)
throws InvalidIndex, UnexpectedEntry, ConstantPoolException {
Code_attribute code = (Code_attribute) method.attributes.get(Attribute.Code);
LocalVariableTable_attribute lvt =
(LocalVariableTable_attribute) (code.attributes.get(Attribute.LocalVariableTable));
List<String> infoFromRanges = convertToStringList(ranges);
List<String> infoFromLVT = convertToStringList(constantPool, lvt);
// infoFromRanges most be contained in infoFromLVT
int i = 0;
int j = 0;
while (i < infoFromRanges.size() && j < infoFromLVT.size()) {
int comparison = infoFromRanges.get(i).compareTo(infoFromLVT.get(j));
if (comparison == 0) {
i++; j++;
} else if (comparison > 0) {
j++;
} else {
break;
}
}
if (i < infoFromRanges.size()) {
error(infoFromLVT, infoFromRanges, method.getName(constantPool).toString());
}
}
示例2: compare
import com.sun.tools.classfile.ConstantPool.UnexpectedEntry; //导入依赖的package包/类
public static boolean compare(Map<String, TypeAnnotation.Position> expectedAnnos,
List<TypeAnnotation> actualAnnos, ClassFile cf) throws InvalidIndex, UnexpectedEntry {
if (actualAnnos.size() != expectedAnnos.size()) {
throw new ComparisionException("Wrong number of annotations",
expectedAnnos,
actualAnnos);
}
for (Map.Entry<String, TypeAnnotation.Position> e : expectedAnnos.entrySet()) {
String aName = e.getKey();
TypeAnnotation.Position expected = e.getValue();
TypeAnnotation actual = findAnnotation(aName, actualAnnos, cf);
if (actual == null)
throw new ComparisionException("Expected annotation not found: " + aName);
if (!areEquals(expected, actual.position)) {
throw new ComparisionException("Unexpected position for annotation : " + aName +
"\n Expected: " + expected.toString() +
"\n Found: " + actual.position.toString());
}
}
return true;
}
示例3: compare
import com.sun.tools.classfile.ConstantPool.UnexpectedEntry; //导入依赖的package包/类
public static boolean compare(Map<String, TypeAnnotation.Position> expectedAnnos,
List<TypeAnnotation> actualAnnos, ClassFile cf) throws InvalidIndex, UnexpectedEntry {
if (actualAnnos.size() != expectedAnnos.size()) {
throw new ComparisionException("Wrong number of annotations",
expectedAnnos,
actualAnnos);
}
for (Map.Entry<String, TypeAnnotation.Position> e : expectedAnnos.entrySet()) {
String aName = e.getKey();
TypeAnnotation.Position expected = e.getValue();
TypeAnnotation actual = findAnnotation(aName, actualAnnos, cf);
if (actual == null)
throw new ComparisionException("Expected annotation not found: " + aName);
// TODO: you currently get an exception if the test case does not use all necessary
// annotation attributes, e.g. forgetting the offset for a local variable.
// It would be nicer to give an understandable warning instead.
if (!areEquals(expected, actual.position)) {
throw new ComparisionException("Unexpected position for annotation : " + aName +
"\n Expected: " + expected.toString() +
"\n Found: " + actual.position.toString());
}
}
return true;
}
示例4: checkMethod
import com.sun.tools.classfile.ConstantPool.UnexpectedEntry; //导入依赖的package包/类
void checkMethod(ConstantPool constantPool, Method method, AliveRanges ranges)
throws InvalidIndex, UnexpectedEntry {
Code_attribute code = (Code_attribute) method.attributes.get(Attribute.Code);
LocalVariableTable_attribute lvt =
(LocalVariableTable_attribute) (code.attributes.get(Attribute.LocalVariableTable));
List<String> infoFromRanges = convertToStringList(ranges);
List<String> infoFromLVT = convertToStringList(constantPool, lvt);
// infoFromRanges most be contained in infoFromLVT
int i = 0;
int j = 0;
while (i < infoFromRanges.size() && j < infoFromLVT.size()) {
int comparison = infoFromRanges.get(i).compareTo(infoFromLVT.get(j));
if (comparison == 0) {
i++; j++;
} else if (comparison > 0) {
j++;
} else {
break;
}
}
if (i < infoFromRanges.size()) {
error(infoFromLVT, infoFromRanges);
}
}
示例5: compare
import com.sun.tools.classfile.ConstantPool.UnexpectedEntry; //导入依赖的package包/类
public static boolean compare(List<Pair<String, TypeAnnotation.Position>> expectedAnnos,
List<TypeAnnotation> actualAnnos, ClassFile cf) throws InvalidIndex, UnexpectedEntry {
if (actualAnnos.size() != expectedAnnos.size()) {
throw new ComparisionException("Wrong number of annotations",
expectedAnnos,
actualAnnos);
}
for (Pair<String, TypeAnnotation.Position> e : expectedAnnos) {
String aName = e.first;
TypeAnnotation.Position expected = e.second;
TypeAnnotation actual = findAnnotation(aName, expected, actualAnnos, cf);
if (actual == null) {
throw new ComparisionException("Expected annotation not found: " + aName + " position: " + expected,
expectedAnnos,
actualAnnos);
}
}
return true;
}
示例6: checkMatch
import com.sun.tools.classfile.ConstantPool.UnexpectedEntry; //导入依赖的package包/类
/**
* Indicate whether an annotation matches this expected
* annotation.
*
* @param ConstantPool The constant pool to use.
* @param anno The annotation to check.
* @return Whether the annotation matches.
*/
protected boolean checkMatch(ConstantPool cpool,
Annotation anno) {
try {
return cpool.getUTF8Info(anno.type_index).value.equals("L" + expectedName + ";");
} catch (InvalidIndex | UnexpectedEntry e) {
return false;
}
}
示例7: convertToStringList
import com.sun.tools.classfile.ConstantPool.UnexpectedEntry; //导入依赖的package包/类
List<String> convertToStringList(ConstantPool constantPool,
LocalVariableTable_attribute lvt) throws InvalidIndex, UnexpectedEntry {
List<String> result = new ArrayList<>();
for (Entry entry : lvt.local_variable_table) {
String str = formatLocalVariableData(constantPool.getUTF8Value(entry.name_index),
entry.start_pc, entry.length);
result.add(str);
}
Collections.sort(result);
return result;
}
示例8: findAnnotation
import com.sun.tools.classfile.ConstantPool.UnexpectedEntry; //导入依赖的package包/类
private static TypeAnnotation findAnnotation(String name, List<TypeAnnotation> annotations, ClassFile cf) throws InvalidIndex, UnexpectedEntry {
String properName = "L" + name + ";";
for (TypeAnnotation anno : annotations) {
String actualName = cf.constant_pool.getUTF8Value(anno.annotation.type_index);
if (properName.equals(actualName))
return anno;
}
return null;
}
示例9: findAnnotation
import com.sun.tools.classfile.ConstantPool.UnexpectedEntry; //导入依赖的package包/类
private static TypeAnnotation findAnnotation(String name, TypeAnnotation.Position expected, List<TypeAnnotation> annotations, ClassFile cf) throws InvalidIndex, UnexpectedEntry {
String properName = "L" + name + ";";
for (TypeAnnotation anno : annotations) {
String actualName = cf.constant_pool.getUTF8Value(anno.annotation.type_index);
if (properName.equals(actualName) &&
areEquals(expected, anno.position))
return anno;
}
return null;
}