Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Type Parameters #153

Open
tilmanrossmy opened this issue Sep 29, 2017 · 3 comments
Open

Support for Type Parameters #153

tilmanrossmy opened this issue Sep 29, 2017 · 3 comments

Comments

@tilmanrossmy
Copy link

At the moment it is only possible to use Type classes with a wildcard, thus loosing all type information

@import TypedCaseClass
 @(typedCaseClass: TypedCaseClass[_])(implicit request: RequestHeader, 
  messages: Messages){
   //...
 }

It would be nice, if something like this would be possible:

@import TypedCaseClass
 @[T](typedCaseClass: TypedCaseClass[T])(implicit request: RequestHeader, 
  messages: Messages){
   //...
 }
@gmethvin
Copy link
Member

gmethvin commented Dec 2, 2017

Would be an interesting feature if someone wants to implement it.

@mhzajac
Copy link

mhzajac commented Jun 13, 2018

The biggest roadblock I see for this are the TemplateN traits that have the abstract render methods. For example:

trait Template1[A, Result] {
  def render(a: A): Result
}

It seems like render is mostly a Play-Java thing, as I've rarely (if ever) have seen it used from Scala code, and unless I'm mistaken, it seems like an alias to apply, with the exception that it's required by these template traits, where apply actually isn't. Anyway, the issue arises where if we want a template with this signature:

@[A](list: List[A])

It should compile to have an apply method that looks like

def apply[A](list: List[A]): Html

But then render also needs to include the type parameter A in it's signature to call apply, but it can't because then the signature required by Template1 would be left unimplemented. I was able to get some basic examples working by cutting out the TemplateN traits, but this is a pretty big API change, so I can't really proceed without some guidance.

@mkurz
Copy link
Member

mkurz commented Nov 10, 2018

Also see #37

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants