MCPcopy Create free account
hub / github.com/Whiley/WhileyCompiler / IndirectInvoke

Class IndirectInvoke

src/main/java/wyil/lang/WyilFile.java:2894–2941  ·  view source on GitHub ↗

Represents an indirect invocation of the form " x.y(e1,..en) ". Here, x.y returns a function value and e1 ... en are the argument expressions . @author David J. Pearce

Source from the content-addressed store, hash-verified

2892 *
2893 */
2894 public static class IndirectInvoke extends AbstractItem implements Expr {
2895
2896 public IndirectInvoke(Type type, Expr source, Tuple<Expr> arguments) {
2897 super(EXPR_indirectinvoke, type, source, arguments);
2898 }
2899
2900 @Override
2901 public Type getType() {
2902 return (Type) operands[0];
2903 }
2904
2905 @Override
2906 public void setType(Type type) {
2907 operands[0] = type;
2908 }
2909
2910 public Expr getSource() {
2911 return (Expr) get(1);
2912 }
2913
2914 @SuppressWarnings("unchecked")
2915 public Tuple<Expr> getArguments() {
2916 return (Tuple<Expr>) get(2);
2917 }
2918
2919 @SuppressWarnings("unchecked")
2920 @Override
2921 public IndirectInvoke clone(Syntactic.Item[] operands) {
2922 return new IndirectInvoke((Type) operands[0], (Expr) operands[1],
2923 (Tuple<Expr>) operands[2]);
2924 }
2925
2926 @Override
2927 public String toString() {
2928 String r = getSource().toString();
2929 r += getArguments();
2930 return r;
2931 }
2932
2933 public static final Descriptor DESCRIPTOR_0 = new Descriptor(Operands.THREE, Data.ZERO, "EXPR_indirectinvoke") {
2934 @SuppressWarnings("unchecked")
2935 @Override
2936 public Syntactic.Item construct(int opcode, Syntactic.Item[] operands, byte[] data) {
2937 return new IndirectInvoke((Type) operands[0], (Expr) operands[1],
2938 (Tuple<Expr>) operands[2]);
2939 }
2940 };
2941 }
2942
2943 /**
2944 * Represents an <i>old expression</i> of the form "<code>old(e)</code>". This

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected