diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/loader/AstClass.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/loader/AstClass.java index 564c0e8c2..b997112f8 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/loader/AstClass.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/loader/AstClass.java @@ -10,7 +10,6 @@ *****************************************************************************/ package com.ibm.wala.cast.loader; - import java.net.URL; import java.util.Collection; import java.util.Iterator; @@ -34,19 +33,19 @@ import com.ibm.wala.util.debug.Assertions; abstract public class AstClass implements IClass, ClassConstants { private final CAstSourcePositionMap.Position sourcePosition; - private final TypeName typeName; - private final IClassLoader loader; - private final short modifiers; - protected final Map declaredFields; - protected final Map declaredMethods; - protected AstClass(CAstSourcePositionMap.Position sourcePosition, - TypeName typeName, - IClassLoader loader, - short modifiers, - Map declaredFields, - Map declaredMethods) - { + private final TypeName typeName; + + private final IClassLoader loader; + + private final short modifiers; + + protected final Map declaredFields; + + protected final Map declaredMethods; + + protected AstClass(CAstSourcePositionMap.Position sourcePosition, TypeName typeName, IClassLoader loader, short modifiers, + Map declaredFields, Map declaredMethods) { this.sourcePosition = sourcePosition; this.typeName = typeName; this.loader = loader; @@ -56,15 +55,19 @@ abstract public class AstClass implements IClass, ClassConstants { } public boolean isInterface() { - return (modifiers&ACC_INTERFACE) != 0; + return (modifiers & ACC_INTERFACE) != 0; } public boolean isAbstract() { - return (modifiers&ACC_ABSTRACT) != 0; + return (modifiers & ACC_ABSTRACT) != 0; } public boolean isPublic() { - return (modifiers&ACC_PUBLIC) != 0; + return (modifiers & ACC_PUBLIC) != 0; + } + + public boolean isStatic() { + return (modifiers & ACC_STATIC) != 0; } public boolean isReferenceType() { @@ -103,29 +106,28 @@ abstract public class AstClass implements IClass, ClassConstants { return loader; } - public abstract IClass getSuperclass() throws ClassHierarchyException; - + public abstract IClass getSuperclass() throws ClassHierarchyException; + private Collection gatherInterfaces() throws ClassHierarchyException { Set result = HashSetFactory.make(); - result.addAll( getDirectInterfaces() ); + result.addAll(getDirectInterfaces()); if (getSuperclass() != null) - result.addAll( getSuperclass().getAllImplementedInterfaces() ); + result.addAll(getSuperclass().getAllImplementedInterfaces()); return result; } public abstract Collection getDirectInterfaces() throws ClassHierarchyException; - + public Collection getAllImplementedInterfaces() throws ClassHierarchyException { return gatherInterfaces(); } - public IMethod getClassInitializer() { - return getMethod( MethodReference.clinitSelector ); + return getMethod(MethodReference.clinitSelector); } public IMethod getMethod(Selector selector) { - try { + try { if (declaredMethods.containsKey(selector)) { return declaredMethods.get(selector); } else if (getSuperclass() != null) { @@ -133,25 +135,25 @@ abstract public class AstClass implements IClass, ClassConstants { } else { return null; } - } catch (ClassHierarchyException e) { - Assertions.UNREACHABLE(); - return null; - } + } catch (ClassHierarchyException e) { + Assertions.UNREACHABLE(); + return null; + } } - + public IField getField(Atom name) { try { - if (declaredFields.containsKey(name)) { + if (declaredFields.containsKey(name)) { return declaredFields.get(name); } else if (getSuperclass() != null) { return getSuperclass().getField(name); } else { return null; } - } catch (ClassHierarchyException e) { - Assertions.UNREACHABLE(); - return null; - } + } catch (ClassHierarchyException e) { + Assertions.UNREACHABLE(); + return null; + } } public Collection getDeclaredMethods() { @@ -160,33 +162,33 @@ abstract public class AstClass implements IClass, ClassConstants { public Collection getDeclaredInstanceFields() { Set result = HashSetFactory.make(); - for(Iterator FS = declaredFields.values().iterator(); FS.hasNext();) { + for (Iterator FS = declaredFields.values().iterator(); FS.hasNext();) { IField F = FS.next(); - if (! F.isStatic()) { - result.add( F ); + if (!F.isStatic()) { + result.add(F); } } - + return result; } - + public Collection getDeclaredStaticFields() { Set result = HashSetFactory.make(); - for(Iterator FS = declaredFields.values().iterator(); FS.hasNext();) { + for (Iterator FS = declaredFields.values().iterator(); FS.hasNext();) { IField F = FS.next(); if (F.isStatic()) { - result.add( F ); + result.add(F); } } - + return result; } public Collection getAllInstanceFields() throws ClassHierarchyException { Collection result = HashSetFactory.make(); - result.addAll( getDeclaredInstanceFields() ); + result.addAll(getDeclaredInstanceFields()); if (getSuperclass() != null) { - result.addAll( getSuperclass().getAllInstanceFields() ); + result.addAll(getSuperclass().getAllInstanceFields()); } return result; @@ -194,9 +196,9 @@ abstract public class AstClass implements IClass, ClassConstants { public Collection getAllStaticFields() throws ClassHierarchyException { Collection result = HashSetFactory.make(); - result.addAll( getDeclaredStaticFields() ); + result.addAll(getDeclaredStaticFields()); if (getSuperclass() != null) { - result.addAll( getSuperclass().getAllStaticFields() ); + result.addAll(getSuperclass().getAllStaticFields()); } return result; @@ -204,18 +206,18 @@ abstract public class AstClass implements IClass, ClassConstants { public Collection getAllFields() throws ClassHierarchyException { Collection result = HashSetFactory.make(); - result.addAll( getAllInstanceFields() ); - result.addAll( getAllStaticFields() ); + result.addAll(getAllInstanceFields()); + result.addAll(getAllStaticFields()); return result; } - + public Collection getAllMethods() throws ClassHierarchyException { Collection result = HashSetFactory.make(); - for(Iterator ms = getDeclaredMethods().iterator(); ms.hasNext(); ) { - result.add( ms.next() ); + for (Iterator ms = getDeclaredMethods().iterator(); ms.hasNext();) { + result.add(ms.next()); } if (getSuperclass() != null) { - result.addAll( getSuperclass().getAllMethods() ); + result.addAll(getSuperclass().getAllMethods()); } return result; diff --git a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/loader/AstFunctionClass.java b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/loader/AstFunctionClass.java index 75ecc0df3..de150cdce 100644 --- a/com.ibm.wala.cast/source/java/com/ibm/wala/cast/loader/AstFunctionClass.java +++ b/com.ibm.wala.cast/source/java/com/ibm/wala/cast/loader/AstFunctionClass.java @@ -72,6 +72,10 @@ abstract public class AstFunctionClass implements IClass, ClassConstants { public boolean isPublic() { return true; } + + public boolean isStatic() { + return false; + } public int getModifiers() { return ACC_PUBLIC;