diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-14 21:26:14 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-14 21:40:53 +0000 |
| commit | 5e64358224731d9b167fd155c481166d36b1fddd (patch) | |
| tree | 10dbef6834fb15a1ab49111f87cdf72122a64b88 /src/test/java/org/zwobble/couscous/tests/MethodRunner.java | |
| parent | feca7c0185041c27d7ee2057b5458b02b0b352bf (diff) | |
Add initial method runner for C#
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests/MethodRunner.java')
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/MethodRunner.java | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/MethodRunner.java b/src/test/java/org/zwobble/couscous/tests/MethodRunner.java index 3f69779..1a856ba 100644 --- a/src/test/java/org/zwobble/couscous/tests/MethodRunner.java +++ b/src/test/java/org/zwobble/couscous/tests/MethodRunner.java @@ -1,10 +1,13 @@ package org.zwobble.couscous.tests; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; +import org.zwobble.couscous.ast.*; +import org.zwobble.couscous.values.PrimitiveValue; + import java.util.List; -import org.zwobble.couscous.ast.ClassNode; -import org.zwobble.couscous.ast.TypeName; -import org.zwobble.couscous.values.PrimitiveValue; +import static org.zwobble.couscous.util.ExtraLists.list; public interface MethodRunner { PrimitiveValue runMethod( @@ -12,4 +15,19 @@ public interface MethodRunner { TypeName className, String methodName, List<PrimitiveValue> arguments); + + default PrimitiveValue evalExpression(List<ClassNode> classes, ExpressionNode expression) { + ClassNode programNode = ClassNode.builder("Program") + .method(MethodNode.staticMethod("run") + .statement(ReturnNode.returns(expression)) + .build()) + .build(); + return runMethod( + ImmutableList.copyOf(Iterables.concat( + classes, + list(programNode))), + programNode.getName(), + "run", + list()); + } } |
