lean4-htt/tests/lean/private.lean
2020-10-25 09:16:38 -07:00

68 lines
978 B
Text

-- Issue 1
def foo := 10
def f (x : Nat) := x + x
namespace Bla
private def foo := "hello"
#check foo == "world" -- `foo` resolves to private `Bla.foo`
private def foo : Float := 1.0 -- should produce error like in other programming languages
end Bla
#check foo == 0
#check Bla.foo
-- Issue 2
namespace Boo
def boo := 100
namespace Bla
private def boo := "hello"
#check boo == "world" -- resolving to `Boo.Bla.boo` as expected
#check boo ++ "world" -- should work
end Bla
#check Bla.boo == "world"
#check boo == 100
end Boo
#check Boo.Bla.boo == "world"
#check Boo.boo == 100
/-
Should the following work?
```
namespace N
private def b := 10
end N
open N
#check b
```
-/
-- Issue 3
private def Nat.mul10 (x : Nat) := x * 10
def x := 10
#check x.mul10 -- dot-notation should work with local private declarations
-- Issue 4
def y := 10
private def y := "hello" -- produce error
private def z := 10
def z := "hello" -- produce error