package accrue.analysis.ext;

import java.util.Collection;
import java.util.Set;

import polyglot.types.TypeSystem;
import accrue.analysis.interprocanalysis.AnalysisContext;
import accrue.analysis.pointer.CallSiteNode;
import accrue.analysis.preciseExceptions.ThrowableType;

public interface ExtProcedureCall extends AccrueExt {
    void setCallSiteNode(CallSiteNode callSiteNode);

    CallSiteNode getCallSiteNode();

    void recordPreciseExResults(AnalysisContext context,
            Set<ThrowableType> throwTypes, boolean canTerminateNormally);

    boolean canTerminateNormally(AnalysisContext context);

    Collection<ThrowableType> throwTypes(TypeSystem ts, AnalysisContext context);
}
