Index: src/tests/.expect/sched-ext-else.txt
===================================================================
--- src/tests/.expect/sched-ext-else.txt	(revision 4cc9b13dc2db7b8a44af9143406aa8fd30bec6d3)
+++ src/tests/.expect/sched-ext-else.txt	(revision 4cc9b13dc2db7b8a44af9143406aa8fd30bec6d3)
@@ -0,0 +1,9 @@
+Starting
+Step 0
+else called
+Step 1
+else called
+Step 2
+else called
+Step 3
+Done
Index: src/tests/sched-ext-else.c
===================================================================
--- src/tests/sched-ext-else.c	(revision 4cc9b13dc2db7b8a44af9143406aa8fd30bec6d3)
+++ src/tests/sched-ext-else.c	(revision 4cc9b13dc2db7b8a44af9143406aa8fd30bec6d3)
@@ -0,0 +1,48 @@
+#include <fstream>
+#include <monitor>
+
+#include <stdbool.h>
+
+monitor M {};
+
+void notcalled( M & mutex m ) {
+	abort();
+}
+
+void test( M & mutex m ) {
+	int i = 0;
+	sout | "Starting" | endl;
+
+	when( false ) waitfor( notcalled, m );
+
+	sout | "Step" | i++ | endl;
+
+	waitfor( notcalled, m ); or else {
+		sout | "else called" | endl;
+	}
+
+	sout | "Step" | i++ | endl;
+
+	when( true ) waitfor( notcalled, m ); or when( true ) else {
+		sout | "else called" | endl;
+	}
+
+	sout | "Step" | i++ | endl;
+
+	when( false ) waitfor( notcalled, m ); or when( true ) else {
+		sout | "else called" | endl;
+	}
+
+	sout | "Step" | i++ | endl;
+
+	when( false ) waitfor( notcalled, m ); or when( false ) else {
+		sout | "else called" | endl;
+	}
+
+	sout | "Done" | endl;
+}
+
+int main() {
+	M m;
+	test(m);
+}
