diff --git a/test_errors.sh b/test_errors.sh new file mode 100644 index 0000000..be4691e --- /dev/null +++ b/test_errors.sh @@ -0,0 +1,17 @@ +#!/bin/sh +set -eu +test_dir=$(mktemp -d) +trap 'rm -rf "$test_dir"' EXIT HUP INT TERM +for source in \ + 'let _ = let%continue rec x = f in x' \ + 'let _ = let%continue x = f and y = g in x' \ + 'let _ = [%continue 42]' +do + printf '%s\n' "$source" > "$test_dir/invalid.ml" + if "${OCAMLC:-ocamlc}" -ppx ./continuum_ppx -c "$test_dir/invalid.ml" 2> "$test_dir/error"; then + echo "Unexpected success: $source" >&2 + exit 1 + fi + grep -q 'continuum_ppx: expected' "$test_dir/error" +done +echo 'continuum_ppx: invalid syntax checks passed'