packages feed

Agda-2.3.2.2: test/succeed/Issue137.agda

{-# OPTIONS --no-termination-check #-}
module Issue137 where

record Foo : Set1 where
  field
    foo : {x : Set} → Set

record Bar : Set1 where
  field
    bar : Foo

record Baz (P : Bar) : Set1 where
  field
    baz : Set

postulate
  P : Bar
  Q : Baz P

f : Baz.baz Q → Set
f r with f r
f r | A = A

-- The bug was:

-- Issue137.agda:22,1-12
-- Set should be a function type, but it isn't
-- when checking that the expression λ x → Foo.foo (Bar.bar P) {x} has
-- type Set

-- If the field foo is replaced by
--   foo : (x : Set) → Set
-- then the code type checks.