Index: src/tests/.expect/fallthrough-ERROR.txt
===================================================================
--- src/tests/.expect/fallthrough-ERROR.txt	(revision e2c70abaacda28a5de17564ffc349fdaeb8b9ab3)
+++ src/tests/.expect/fallthrough-ERROR.txt	(revision e2c70abaacda28a5de17564ffc349fdaeb8b9ab3)
@@ -0,0 +1,7 @@
+fallthrough.c:54:1 error: 'fallthrough' must be enclosed in a 'switch' or 'choose'
+fallthrough.c:56:1 error: 'fallthrough' must be enclosed in a 'switch' or 'choose'
+fallthrough.c:58:1 error: 'fallthrough' must be enclosed in a 'switch' or 'choose'
+fallthrough.c:65:1 error: 'fallthrough default' must be directly enclosed in a 'switch' or 'choose' control structure with a 'default' clause
+fallthrough.c:67:1 error: 'fallthrough' target must be a later case statement: common3
+fallthrough.c:75:1 error: 'fallthrough' target must be a later case statement: common4
+fallthrough.c:77:1 error: 'fallthrough default' must precede the 'default' clause
Index: src/tests/.expect/fallthrough.txt
===================================================================
--- src/tests/.expect/fallthrough.txt	(revision e2c70abaacda28a5de17564ffc349fdaeb8b9ab3)
+++ src/tests/.expect/fallthrough.txt	(revision e2c70abaacda28a5de17564ffc349fdaeb8b9ab3)
@@ -0,0 +1,6 @@
+case 1
+case 2
+case 3
+default
+case 5
+common2
Index: src/tests/Makefile.am
===================================================================
--- src/tests/Makefile.am	(revision deb52a099a531df5b0f8d93d94f08c9597703efb)
+++ src/tests/Makefile.am	(revision e2c70abaacda28a5de17564ffc349fdaeb8b9ab3)
@@ -110,4 +110,7 @@
 	${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
 
+fallthrough-ERROR: fallthrough.c @CFA_BINDIR@/@CFA_NAME@
+	${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
+
 # Constructor/destructor tests
 raii/dtor-early-exit-ERR1: raii/dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@
Index: src/tests/Makefile.in
===================================================================
--- src/tests/Makefile.in	(revision deb52a099a531df5b0f8d93d94f08c9597703efb)
+++ src/tests/Makefile.in	(revision e2c70abaacda28a5de17564ffc349fdaeb8b9ab3)
@@ -787,4 +787,7 @@
 	${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
 
+fallthrough-ERROR: fallthrough.c @CFA_BINDIR@/@CFA_NAME@
+	${CC} ${AM_CFLAGS} ${CFLAGS} -DERR1 ${<} -o ${@}
+
 # Constructor/destructor tests
 raii/dtor-early-exit-ERR1: raii/dtor-early-exit.c @CFA_BINDIR@/@CFA_NAME@
Index: src/tests/fallthrough.c
===================================================================
--- src/tests/fallthrough.c	(revision e2c70abaacda28a5de17564ffc349fdaeb8b9ab3)
+++ src/tests/fallthrough.c	(revision e2c70abaacda28a5de17564ffc349fdaeb8b9ab3)
@@ -0,0 +1,90 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2018 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// fallthrough.c --
+//
+// Author           : Rob Schluntz
+// Created On       : Wed Mar 14 10:06:25 2018
+// Last Modified By : Rob Schluntz
+// Last Modified On : Wed Mar 14 10:32:12 2018
+// Update Count     : 2
+//
+
+void test(int choice) {
+	choose ( choice ) {
+		case 1:
+			printf("case 1\n");
+			fallthru;
+		case 2:
+			printf("case 2\n");
+			fallthru;
+			printf("did not fallthru\n");
+			if ( 7 ) fallthru common2;
+			fallthru common1;
+		case 3:
+			printf("case 3\n");
+			fallthru default;
+			fallthru common1;
+		common1:
+			printf("common1\n");
+		/* break */
+		case 4:
+			printf("case 4\n");
+			fallthru common2;
+		case 5:
+			printf("case 5\n");
+			fallthru common2;
+			fallthru default;
+		case 6:
+			printf("case 6\n");
+			fallthru common2;
+		common2:
+			printf("common2\n");
+		/* break */
+		default:
+			printf("default\n");
+			fallthru;
+	}
+
+#if ERR1
+	// ERROR: fallthrough must be enclosed in switch or choose
+	fallthru;
+	// ERROR: fallthrough must be enclosed in switch or choose
+	fallthru common4;
+	// ERROR: fallthrough must be enclosed in switch or choose
+	fallthru default;
+	choose ( 3 ) {
+		case 2:
+			for ( ;; ) {
+				choose ( 2 ) {
+					case 1:
+						// ERROR: default is later, but in a different switch
+						fallthru default;
+						// ERROR: common3 is later, but not at the same level as a case clause
+						fallthru common3;
+				}
+				common3: ;
+			}
+		default:
+		case 1:
+		common4:
+			// ERROR: attempt to jump up with fallthrough
+			if ( 7 ) fallthru common4;
+			// ERROR: attempt to jump up with fallthrough
+			fallthru default;
+	}
+#endif
+}
+
+int main() {
+	test(1);
+	test(5);
+}
+
+// Local Variables: //
+// tab-width: 4 //
+// compile-command: "cfa dtor-early-exit" //
+// End: //
