diff --git a/sootup.java.core/src/main/java/sootup/java/core/HasAnnotation.java b/sootup.java.core/src/main/java/sootup/java/core/HasAnnotation.java new file mode 100644 index 00000000000..feacde34002 --- /dev/null +++ b/sootup.java.core/src/main/java/sootup/java/core/HasAnnotation.java @@ -0,0 +1,32 @@ +package sootup.java.core; + +/*- + * #%L + * SootUp + * %% + * Copyright (C) 1997 - 2024 Raja Vallée-Rai and others + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 2.1 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * . + * #L% + */ + +/** + * Interface to mark Soot code objects that may contain annotations. + * + * @author liyiwei + */ +public interface HasAnnotation { + Iterable getAnnotations(); +} diff --git a/sootup.java.core/src/main/java/sootup/java/core/JavaSootClass.java b/sootup.java.core/src/main/java/sootup/java/core/JavaSootClass.java index d7bb49a4454..890a7633444 100644 --- a/sootup.java.core/src/main/java/sootup/java/core/JavaSootClass.java +++ b/sootup.java.core/src/main/java/sootup/java/core/JavaSootClass.java @@ -35,7 +35,7 @@ import sootup.core.types.Type; import sootup.java.core.types.JavaClassType; -public class JavaSootClass extends SootClass { +public class JavaSootClass extends SootClass implements HasAnnotation { public JavaSootClass(JavaSootClassSource classSource, SourceType sourceType) { super(classSource, sourceType); diff --git a/sootup.java.core/src/main/java/sootup/java/core/JavaSootField.java b/sootup.java.core/src/main/java/sootup/java/core/JavaSootField.java index 6b0ecc6959d..ba9e117de8a 100644 --- a/sootup.java.core/src/main/java/sootup/java/core/JavaSootField.java +++ b/sootup.java.core/src/main/java/sootup/java/core/JavaSootField.java @@ -29,7 +29,7 @@ import sootup.core.model.SootField; import sootup.core.signatures.FieldSignature; -public class JavaSootField extends SootField { +public class JavaSootField extends SootField implements HasAnnotation { @Nonnull private final Iterable annotations; diff --git a/sootup.java.core/src/main/java/sootup/java/core/JavaSootMethod.java b/sootup.java.core/src/main/java/sootup/java/core/JavaSootMethod.java index 31376b4e07a..2ed0c8c0cdc 100644 --- a/sootup.java.core/src/main/java/sootup/java/core/JavaSootMethod.java +++ b/sootup.java.core/src/main/java/sootup/java/core/JavaSootMethod.java @@ -34,7 +34,7 @@ import sootup.core.signatures.MethodSignature; import sootup.core.types.ClassType; -public class JavaSootMethod extends SootMethod { +public class JavaSootMethod extends SootMethod implements HasAnnotation { @Nonnull private final Iterable annotations; public JavaSootMethod( diff --git a/sootup.java.core/src/main/java/sootup/java/core/jimple/basic/JavaLocal.java b/sootup.java.core/src/main/java/sootup/java/core/jimple/basic/JavaLocal.java index 12e007f5379..4c470aea752 100644 --- a/sootup.java.core/src/main/java/sootup/java/core/jimple/basic/JavaLocal.java +++ b/sootup.java.core/src/main/java/sootup/java/core/jimple/basic/JavaLocal.java @@ -26,8 +26,9 @@ import sootup.core.jimple.basic.Local; import sootup.core.types.Type; import sootup.java.core.AnnotationUsage; +import sootup.java.core.HasAnnotation; -public class JavaLocal extends Local { +public class JavaLocal extends Local implements HasAnnotation { // TODO: [ms] add to JavaJimple // TODO: [ms] make use of this class in both Java Frontends