structure Bar (α : Type) where
  a : α
  b : Nat → α

structure Baz (α : Type) where
  a : α → α
  c : Bool → α
  d : Nat

set_option structureDiamondWarning false in
structure Foo (α : Type) extends Bar α, Baz α -- Error: parent field type mismatch

set_option structureDiamondWarning false in
structure Foo (α : Type) extends Bar (α → α), Baz α

#print Foo

def f (x : Nat) : Foo Nat :=
  { a := fun y => x + y
    b := (. + .)
    c := fun _ => x
    d := x }

#print f

set_option structureDiamondWarning true in
structure Foo' (α : Type) extends Bar (α → α), Baz α -- Warning: parent field duplication
