/** Returns true if this class is not an interface and not abstract. */ public boolean isConcrete() { return !isInterface() && !isAbstract(); }
public void visit(Node n) { Type t = n.getType(); if (t instanceof RefType) { RefType rt = (RefType) t; if (rt.getSootClass().isAbstract()) { return; } } ret.add(t); } });
SootClass c = s.iterator().next(); s.remove(c); if (!c.isInterface() && !c.isAbstract() && canStoreClass(c, declaringClass)) { SootMethod concreteM = resolveConcreteDispatch(c, m); if (concreteM != null) {
worklist.addAll(c); if (!concreteType.isAbstract()) { while (true) { if (resolved.contains(concreteType)) {
AllocNode(PAG pag, Object newExpr, Type t, SootMethod m) { super(pag, t); this.method = m; if (t instanceof RefType) { RefType rt = (RefType) t; if (rt.getSootClass().isAbstract()) { boolean usesReflectionLog = new CGOptions(PhaseOptions.v().getPhaseOptions("cg")).reflection_log() != null; if (!usesReflectionLog) { throw new RuntimeException("Attempt to create allocnode with abstract type " + t); } } } this.newExpr = newExpr; if (newExpr instanceof ContextVarNode) { throw new RuntimeException(); } pag.getAllocNodeNumberer().add(this); }
SootClass c = s.iterator().next(); s.remove(c); if (!c.isInterface() && !c.isAbstract() && canStoreClass(c, declaringClass)) { SootMethod concreteM = resolveConcreteDispatch(c, m); if (concreteM != null) {
/** Returns true if this class is not an interface and not abstract. */ public boolean isConcrete() { return !isInterface() && !isAbstract(); }
/** Returns true if this class is not an interface and not abstract. */ public boolean isConcrete() { return !isInterface() && !isAbstract(); }
if( !concreteType.isAbstract() ) { while( true ) { if( resolved.contains( concreteType ) ) break;
if( !concreteType.isAbstract() ) { while( true ) { if( resolved.contains( concreteType ) ) break;
SootClass c = (SootClass) s.iterator().next(); s.remove( c ); if( !c.isInterface() && !c.isAbstract() && canStoreClass( c, declaringClass ) ) { SootMethod concreteM = resolveConcreteDispatch( c, m );
SootClass c = (SootClass) s.iterator().next(); s.remove( c ); if( !c.isInterface() && !c.isAbstract() && canStoreClass( c, declaringClass ) ) { SootMethod concreteM = resolveConcreteDispatch( c, m );
SootClass c = (SootClass) s.iterator().next(); s.remove( c ); if( !c.isInterface() && !c.isAbstract() && canStoreClass( c, declaringClass ) ) { SootMethod concreteM = resolveConcreteDispatch( c, m );
SootClass c = (SootClass) s.iterator().next(); s.remove( c ); if( !c.isInterface() && !c.isAbstract() && canStoreClass( c, declaringClass ) ) { SootMethod concreteM = resolveConcreteDispatch( c, m );
logger.warn("Cannot create valid constructor for {}, because it is {} and cannot substitute with subclass", createdClass, (createdClass.isInterface() ? "an interface" : (createdClass.isAbstract() ? "abstract" : ""))); this.failedClasses.add(createdClass); return null; (createdClass.isInterface() ? "an interface" : (createdClass.isAbstract() ? "abstract" : ""))); this.failedClasses.add(createdClass); return null;
if (t instanceof RefType) { SootClass subClass = ((RefType) t).getSootClass(); if (!subClass.isAbstract() && !subClass.isInterface() && subClass.declaresMethod(callee.getSubSignature())) { possibleClasses.add(subClass);
return tempLocal; if (createdClass.isInterface() || createdClass.isAbstract()) { return generateSubstitutedClassConstructor(createdClass, body, constructionStack, parentClasses); } else {
if (applicationClass.isAbstract()) return; if (applicationClass.isPhantom()) {
if (applicationClass.isAbstract()) return; if (applicationClass.isPhantom()) {