(reader: &mut BlockReader)
| 816 | } |
| 817 | |
| 818 | fn read_element_value(reader: &mut BlockReader) -> ElementValue { |
| 819 | let tag = reader.get_u8(); |
| 820 | |
| 821 | match tag { |
| 822 | 66 /* B */ => ElementValue::ConstantValue(tag, ConstantPoolIndex::new(reader.get_u16() as usize)), |
| 823 | 67 /* C */ => ElementValue::ConstantValue(tag, ConstantPoolIndex::new(reader.get_u16() as usize)), |
| 824 | 68 /* D */ => ElementValue::ConstantValue(tag, ConstantPoolIndex::new(reader.get_u16() as usize)), |
| 825 | 70 /* F */ => ElementValue::ConstantValue(tag, ConstantPoolIndex::new(reader.get_u16() as usize)), |
| 826 | 73 /* I */ => ElementValue::ConstantValue(tag, ConstantPoolIndex::new(reader.get_u16() as usize)), |
| 827 | 74 /* J */ => ElementValue::ConstantValue(tag, ConstantPoolIndex::new(reader.get_u16() as usize)), |
| 828 | 83 /* S */ => ElementValue::ConstantValue(tag, ConstantPoolIndex::new(reader.get_u16() as usize)), |
| 829 | 90 /* Z */ => ElementValue::ConstantValue(tag, ConstantPoolIndex::new(reader.get_u16() as usize)), |
| 830 | 115 /* s */ => ElementValue::ConstantValue(tag, ConstantPoolIndex::new(reader.get_u16() as usize)), |
| 831 | 101 /* e */ => ElementValue::Enum { |
| 832 | type_name_index: ConstantPoolIndex::new(reader.get_u16() as usize), |
| 833 | const_name_index: ConstantPoolIndex::new(reader.get_u16() as usize) }, |
| 834 | 99 /* c */ => ElementValue::ClassInfo(ConstantPoolIndex::new(reader.get_u16() as usize)), |
| 835 | 64 /* @ */ => ElementValue::Annotation(ClassReader::read_annotation(reader)), |
| 836 | 91 /* [ */ => ElementValue::Array({ |
| 837 | let n = reader.get_u16(); |
| 838 | (0..n).map(|_| ClassReader::read_element_value(reader)).collect() |
| 839 | }), |
| 840 | _ => ElementValue::ConstantValue(tag, ConstantPoolIndex::new(0)) // TODO this deserves a better error handling |
| 841 | } |
| 842 | } |
| 843 | |
| 844 | fn read_constant_pool_index(reader: &mut BlockReader) -> Result<ConstantPoolIndex, Error> { |
| 845 | match reader.read_u16() { |
nothing calls this directly
no test coverage detected