test(tests/lean): add new test for scoping rules
This commit is contained in:
parent
880faf89e0
commit
42b5b1e679
2 changed files with 37 additions and 0 deletions
24
tests/lean/sec2.lean
Normal file
24
tests/lean/sec2.lean
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
structure A : Type := mk
|
||||||
|
structure B : Type := mk
|
||||||
|
constant f : A → B
|
||||||
|
constant g : B → B
|
||||||
|
constant a : A
|
||||||
|
|
||||||
|
namespace foo
|
||||||
|
coercion f
|
||||||
|
print coercions
|
||||||
|
check g a
|
||||||
|
end foo
|
||||||
|
|
||||||
|
check g a -- Error
|
||||||
|
|
||||||
|
section boo
|
||||||
|
coercion f
|
||||||
|
print coercions
|
||||||
|
check g a
|
||||||
|
end boo
|
||||||
|
-- The metaobjects defined in the section persist to the outer level.
|
||||||
|
-- This is not a bug. The idea is: we can use the scope to define
|
||||||
|
-- auxiliary variables that are then used to define classes/instances/etc.
|
||||||
|
-- That is, the whole point of the scope is to define these metaobjects.
|
||||||
|
check g a -- Ok
|
13
tests/lean/sec2.lean.expected.out
Normal file
13
tests/lean/sec2.lean.expected.out
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
A ↣ B : f
|
||||||
|
g a : B
|
||||||
|
sec2.lean:13:6: error: type mismatch at application
|
||||||
|
g a
|
||||||
|
term
|
||||||
|
a
|
||||||
|
has type
|
||||||
|
A
|
||||||
|
but is expected to have type
|
||||||
|
B
|
||||||
|
A ↣ B : f
|
||||||
|
g a : B
|
||||||
|
g a : B
|
Loading…
Reference in a new issue