aboutsummaryrefslogtreecommitdiff
path: root/test/cases
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-01-29 19:10:56 -0500
committerAndrew Kelley <superjoe30@gmail.com>2017-01-29 19:10:56 -0500
commitc75e58ffe6905c6a7d4e9f082726ea2cdcec514e (patch)
tree154dd3fc23953eab6273a7ff4481a6e155e5f969 /test/cases
parente0a422ae7e9716172ef316e88a1050f98fb7f1fa (diff)
downloadzig-c75e58ffe6905c6a7d4e9f082726ea2cdcec514e.tar.gz
zig-c75e58ffe6905c6a7d4e9f082726ea2cdcec514e.zip
fix behavior for comptime and runtime basic block phi
Diffstat (limited to 'test/cases')
-rw-r--r--test/cases/eval.zig28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/cases/eval.zig b/test/cases/eval.zig
index 31901edca0..8e6f1dd096 100644
--- a/test/cases/eval.zig
+++ b/test/cases/eval.zig
@@ -191,3 +191,31 @@ fn testTryToTrickEvalWithRuntimeIf(b: bool) -> usize {
return i;
}
}
+
+fn max(comptime T: type, a: T, b: T) -> T {
+ if (T == bool) {
+ return a || b;
+ } else if (a > b) {
+ return a;
+ } else {
+ return b;
+ }
+}
+fn letsTryToCompareBools(a: bool, b: bool) -> bool {
+ max(bool, a, b)
+}
+fn inlinedBlockAndRuntimeBlockPhi() {
+ @setFnTest(this);
+
+ assert(letsTryToCompareBools(true, true));
+ assert(letsTryToCompareBools(true, false));
+ assert(letsTryToCompareBools(false, true));
+ assert(!letsTryToCompareBools(false, false));
+
+ comptime {
+ assert(letsTryToCompareBools(true, true));
+ assert(letsTryToCompareBools(true, false));
+ assert(letsTryToCompareBools(false, true));
+ assert(!letsTryToCompareBools(false, false));
+ }
+}