This PR clarifies the invalid field notation error when projected value type is a metavariable. Co-authored-by @sgraf812. --------- Co-authored-by: Sebastian Graf <sg@lean-fro.org>
53 lines
1.2 KiB
Text
53 lines
1.2 KiB
Text
structure Foo where (n : Nat)
|
|
def Foo.f1 (f : Foo) : Nat := f.n
|
|
def Foo.f2 (f : Foo) : Nat := f.n
|
|
def Foo.f3 (f : Foo) : Nat := f.n
|
|
def Foo.f4 (f : Foo) : Nat := f.n
|
|
def Foo.f5 (f : Foo) : Nat := f.n
|
|
|
|
/--
|
|
error: Invalid field notation: type of
|
|
f
|
|
is not known; cannot resolve field 'n'
|
|
---
|
|
error: Invalid field notation: type of
|
|
g
|
|
is not known; cannot resolve field 'n'
|
|
---
|
|
error: Invalid field notation: type of
|
|
f
|
|
is not known; cannot resolve field 'f1'
|
|
---
|
|
error: Invalid field notation: type of
|
|
g
|
|
is not known; cannot resolve field 'f2'
|
|
---
|
|
error: Invalid field notation: type of
|
|
h
|
|
is not known; cannot resolve field 'f3'
|
|
---
|
|
error: Invalid field notation: type of
|
|
f
|
|
is not known; cannot resolve field 'f4'
|
|
---
|
|
error: Invalid field notation: type of
|
|
g
|
|
is not known; cannot resolve field 'f5'
|
|
---
|
|
error: Invalid field notation: type of
|
|
h
|
|
is not known; cannot resolve field 'f6'
|
|
-/
|
|
#guard_msgs in
|
|
example := (λ f g h =>
|
|
let x : Foo := ⟨f.n + 1⟩;
|
|
let y : Foo := ⟨g.n + 1⟩;
|
|
(λ f g h => f.f1 + g.f2 + h.f3 + f.f4 + g.f5 + h.f6) f g h)
|
|
|
|
/--
|
|
error: Invalid field notation: type of
|
|
id x
|
|
is not known; cannot resolve field 'foo'
|
|
-/
|
|
#guard_msgs in
|
|
example := fun x => (id x).foo
|