Skip to content

Support PCP type healing for higher kinded types #5965

Closed
@nicolasstucki

Description

@nicolasstucki

Currently

def f[T, S[_]](implicit ev: Type[S[T]]): Any = '{
  val a: S[T] = ???
}

fails with

15 |      val a: S[T] = ???
   |             ^
   |            access to type S from wrong staging level:
   |             - the definition is at level 0,
   |             - but the access is at level 1.
   |            
   |             The access would be accepted with the right type tag, but
   |             no implicit argument of type scala.quoted.Type[S] was found
15 |      val a: S[T] = ???
   |               ^
   |            access to type T from wrong staging level:
   |             - the definition is at level 0,
   |             - but the access is at level 1.
   |            
   |             The access would be accepted with the right type tag, but
   |             no implicit argument of type scala.quoted.Type[T] was found

When healing the types we just do not try to find implicit Type for applied higher kinded types. To support this it looks like we need to handle AppliedTypes in PCPCheckAndHeal.checkType before trying to heal it's parts.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions