From 81a3f81c046697ff011c93929c75c29f4cd39f2f Mon Sep 17 00:00:00 2001 From: Gaƫtan Gilbert Date: Sun, 15 Nov 2020 21:08:11 +0100 Subject: Intern application arguments in left-to-right order This makes it so that we have an application `h a b` with both `a` and `b` unbound, `a` is the one that is reported (parent commit with my current compiler setup reports `b` first, and the code does not define which it should be). Ideally we would report both but that requires more code. --- interp/constrintern.ml | 5 +++-- test-suite/output/UnboundRef.out | 3 +++ test-suite/output/UnboundRef.v | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 test-suite/output/UnboundRef.out create mode 100644 test-suite/output/UnboundRef.v diff --git a/interp/constrintern.ml b/interp/constrintern.ml index 378617af04..9f10991510 100644 --- a/interp/constrintern.ml +++ b/interp/constrintern.ml @@ -2405,8 +2405,9 @@ let internalize globalenv env pattern_mode (_, ntnvars as lvar) c = and intern_args env subscopes = function | [] -> [] | a::args -> - let (enva,subscopes) = apply_scope_env env subscopes in - (intern_no_implicit enva a) :: (intern_args env subscopes args) + let (enva,subscopes) = apply_scope_env env subscopes in + let a = intern_no_implicit enva a in + a :: (intern_args env subscopes args) in intern env c diff --git a/test-suite/output/UnboundRef.out b/test-suite/output/UnboundRef.out new file mode 100644 index 0000000000..a574e97e0f --- /dev/null +++ b/test-suite/output/UnboundRef.out @@ -0,0 +1,3 @@ +File "stdin", line 1, characters 11-12: +Error: The reference a was not found in the current environment. + diff --git a/test-suite/output/UnboundRef.v b/test-suite/output/UnboundRef.v new file mode 100644 index 0000000000..fd08ae0c5c --- /dev/null +++ b/test-suite/output/UnboundRef.v @@ -0,0 +1,2 @@ +Check Prop a b. +(* Prop is because we need a real head for the application *) -- cgit v1.2.3