Skip to content

Commit 22e13cd

Browse files
committed
Merge branch 'develop' of github.com:Sable/soot into develop
2 parents 560cdd8 + 8d9d137 commit 22e13cd

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

src/soot/toDex/DexPrinter.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
import soot.Trap;
8585
import soot.Type;
8686
import soot.Unit;
87+
import soot.dexpler.DexType;
8788
import soot.dexpler.Util;
8889
import soot.jimple.Jimple;
8990
import soot.jimple.NopStmt;
@@ -549,6 +550,7 @@ else if (c.hasOuterClass()) {
549550
if (memberClassesItem != null)
550551
annotations.addAll(memberClassesItem);
551552
}
553+
552554

553555
for (Tag t : c.getTags()) {
554556
if (t.getName().equals("VisibilityAnnotationTag")){
@@ -585,7 +587,7 @@ else if (c.hasOuterClass()) {
585587
(defaultAnnotationTag, skipList);
586588
annotations.addAll(visibilityItems);
587589
}
588-
590+
589591
return annotations;
590592
}
591593

@@ -615,6 +617,26 @@ private Set<Annotation> buildMethodAnnotations(SootMethod m) {
615617
annotations.addAll(visibilityItems);
616618
}
617619
}
620+
List<SootClass> exceptionList = m.getExceptions();
621+
if (exceptionList != null) {
622+
Set<ImmutableAnnotationElement> elements = new HashSet<ImmutableAnnotationElement>();
623+
List<ImmutableEncodedValue> valueList = new ArrayList<ImmutableEncodedValue>();
624+
for (SootClass exceptionClass : exceptionList) {
625+
626+
valueList.add(new ImmutableTypeEncodedValue(DexType.toDalvikICAT(exceptionClass.getName()).replace(".", "/")));
627+
628+
}
629+
ImmutableArrayEncodedValue valueValue = new ImmutableArrayEncodedValue(valueList);
630+
ImmutableAnnotationElement valueElement = new ImmutableAnnotationElement
631+
("value", valueValue);
632+
elements.add(valueElement);
633+
ImmutableAnnotation ann = new ImmutableAnnotation
634+
(AnnotationVisibility.SYSTEM,
635+
"Ldalvik/annotation/Throws;",
636+
elements);
637+
annotations.add(ann);
638+
}
639+
618640

619641
return annotations;
620642
}
@@ -677,7 +699,7 @@ private Set<Annotation> buildCommonAnnotations(AbstractHost host, Set<String> sk
677699
elements);
678700
annotations.add(ann);
679701
skipList.add("Ldalvik/annotation/Signature;");
680-
}
702+
}
681703

682704
return annotations;
683705
}

0 commit comments

Comments
 (0)