This commit is contained in:
Jean-Marie Mineau 2025-01-10 14:56:52 +01:00
parent 483ac8637c
commit f9f511013d
Signed by: histausse
GPG key ID: B66AEEDA9B645AD2
9 changed files with 347 additions and 224 deletions

View file

@ -392,32 +392,32 @@ impl<V: Visitor> Visitable<V> for Class {
fn default_visit(&self, v: &mut V) -> Result<()> {
v.visit_type(&self.descriptor)?;
if let Some(superclass) = &self.superclass {
v.visit_type(&superclass)?;
v.visit_type(superclass)?;
}
for interface in &self.interfaces {
v.visit_type(&interface)?;
v.visit_type(interface)?;
}
if let Some(source_file) = &self.source_file {
v.visit_string(&source_file)?;
v.visit_string(source_file)?;
}
for (id, field) in &self.static_fields {
v.visit_field_id(&id)?;
v.visit_field(&field)?;
v.visit_field_id(id)?;
v.visit_field(field)?;
}
for (id, field) in &self.instance_fields {
v.visit_field_id(&id)?;
v.visit_field(&field)?;
v.visit_field_id(id)?;
v.visit_field(field)?;
}
for (id, meth) in &self.direct_methods {
v.visit_method_id(&id)?;
v.visit_method(&meth)?;
v.visit_method_id(id)?;
v.visit_method(meth)?;
}
for (id, meth) in &self.virtual_methods {
v.visit_method_id(&id)?;
v.visit_method(&meth)?;
v.visit_method_id(id)?;
v.visit_method(meth)?;
}
for annot in &self.annotations {
v.visit_annotation_item(&annot)?;
v.visit_annotation_item(annot)?;
}
Ok(())
}

View file

@ -424,12 +424,12 @@ impl Code {
end_label
))?
.clone();
for i in 0..handlers.len() {
handlers[i].1 = new_labels
.get(&handlers[i].1)
for handler in &mut handlers {
handler.1 = new_labels
.get(&handler.1)
.ok_or(anyhow!(
"Internal error: {} not found in renamed label",
handlers[i].1
handler.1
))?
.clone();
}
@ -498,7 +498,7 @@ impl Code {
impl<V: Visitor> Visitable<V> for Code {
fn default_visit(&self, v: &mut V) -> Result<()> {
for ins in &self.insns {
v.visit_instruction(&ins)?;
v.visit_instruction(ins)?;
}
Ok(())
}

View file

@ -30,7 +30,7 @@ impl<V: Visitor> Visitable<V> for IdMethodType {
v.visit_string(&self.shorty)?;
v.visit_type(&self.return_type)?;
for ty in &self.parameters {
v.visit_type(&ty)?;
v.visit_type(ty)?;
}
Ok(())
}

View file

@ -611,7 +611,7 @@ impl DexWriter {
}
Instruction::InvokeCustom { call_site, .. } => {
let call_site_idx = self.call_site_ids.len();
self.insert_call_site_item(&call_site)?;
self.insert_call_site_item(call_site)?;
let ins = ins.get_raw_ins(GetRawInsParam {
call_site_idx: Some(call_site_idx),
..GetRawInsParam::default()
@ -628,7 +628,7 @@ impl DexWriter {
}
Instruction::ConstMethodHandle { handle, .. } => {
let method_handle_idx = self.method_handles.len();
self.insert_method_handle(&handle)?;
self.insert_method_handle(handle)?;
let ins = ins.get_raw_ins(GetRawInsParam {
method_handle_idx: Some(method_handle_idx),
..GetRawInsParam::default()

View file

@ -263,13 +263,13 @@ impl<V: Visitor> Visitable<V> for Field {
v.visit_field_id(&self.descriptor)?;
v.visit_field_visibility(&self.visibility)?;
if let Some(val) = &self.value {
v.visit_value(&val)?;
v.visit_value(val)?;
}
for annot in &self.annotations {
v.visit_annotation_item(&annot)?;
v.visit_annotation_item(annot)?;
}
if let Some(hiddenapi) = &self.hiddenapi {
v.visit_hidden_api_data(&hiddenapi)?;
v.visit_hidden_api_data(hiddenapi)?;
}
Ok(())

File diff suppressed because it is too large Load diff

View file

@ -304,18 +304,18 @@ impl<V: Visitor> Visitable<V> for Method {
v.visit_method_id(&self.descriptor)?;
v.visit_method_visibility(&self.visibility)?;
for annot in &self.annotations {
v.visit_annotation_item(&annot)?;
v.visit_annotation_item(annot)?;
}
for parameter_annotations in &self.parameters_annotations {
for annot in parameter_annotations {
v.visit_annotation_item(&annot)?;
v.visit_annotation_item(annot)?;
}
}
if let Some(hiddenapi) = &self.hiddenapi {
v.visit_hidden_api_data(&hiddenapi)?;
v.visit_hidden_api_data(hiddenapi)?;
}
if let Some(code) = &self.code {
v.visit_code(&code)?;
v.visit_code(code)?;
}
Ok(())
}

View file

@ -424,7 +424,7 @@ impl DexArray {
impl<V: Visitor> Visitable<V> for DexArray {
fn default_visit(&self, v: &mut V) -> Result<()> {
for val in &self.0 {
v.visit_value(&val)?;
v.visit_value(val)?;
}
Ok(())
}

View file

@ -199,7 +199,7 @@ impl DebugInfoItem {
address = addr;
addr_diff = 0;
}
if line_diff < -4 || line_diff >= 15 - 4 {
if !(-4..15 - 4).contains(&line_diff) {
bytecode.push(DbgBytecode::AdvanceLine {
line_diff: Sleb128(line_diff),
});
@ -215,7 +215,7 @@ impl DebugInfoItem {
}
}
}
if bytecode.len() == 0 || bytecode[bytecode.len() - 1] != DbgBytecode::EndSequence {
if bytecode.is_empty() || bytecode[bytecode.len() - 1] != DbgBytecode::EndSequence {
bytecode.push(DbgBytecode::EndSequence);
}
Self {