structure A : Type := mk
structure B : Type := mk
constant f : A → B
constant g : B → B
constant a : A

namespace foo
  attribute f [coercion]
  print coercions
  check g a
end foo

check g a -- Error

section boo
  attribute f [coercion]
  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