Support generic type aliases that start with Option
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 38/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- scala
调研方向
从 issue 中的 reproducer 开始,跟踪编译器错误中显示的 each 扩展和 QuicklensFunctor 实例查找过程。确认 Option[Wrapper[String]] 的行为,然后验证 OptWrap[T] 别名情况可以编译并支持 .each.value。
由索引模型根据 Issue 内容生成。
描述
Let's consider case class containing optional wrapped generic field:
case class Wrapper[T](value: T)
case class X(f1: Option[Wrapper[String]])
val x = X(Option(Wrapper("test")))
modify(x)(_.f1.each.value).using(duplicate)
It works correctly.
But if we define generic type alias like that:
case class Wrapper[T](value: T)
type OptWrap[T] = Option[Wrapper[T]]
case class X(f1: OptWrap[String])
val x = X(Option(Wrapper("test")))
modify(x)(_.f1.each.value).using(duplicate)
then it fails to compile with error:
value each is not a member of ModifyEachTest.this.OptWrap[String].
An extension method was tried, but could not be fully constructed:
com.softwaremill.quicklens.each[[T] =>> Option[ModifyEachTest.this.Wrapper[T]],
String](_$8.f1)(
com.softwaremill.quicklens.QuicklensFunctor.given_QuicklensFunctor_M[K, M])
failed with:
No given instance of type com.softwaremill.quicklens.QuicklensFunctor[
[T] =>> Option[ModifyEachTest.this.Wrapper[T]]] was found for an implicit parameter of method each in package com.softwaremill.quicklens.
I found:
com.softwaremill.quicklens.QuicklensFunctor.given_QuicklensFunctor_M[K, M]
But given instance given_QuicklensFunctor_M in object QuicklensFunctor does not match type com.softwaremill.quicklens.QuicklensFunctor[
[T] =>> Option[ModifyEachTest.this.Wrapper[T]]].
modify(x)(_.f1.each.value).using(duplicate)
Is it possible to support such cases in quicklens?
- 主要语言
- Scala
- 星标
- 851
- 派生
- 53
- 平均合并
- 3 天 8 小时
- 30 天内合并 PR
- 3
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
softwaremill/quicklens 的其他 Issue
-
难度 3/5 1-2 天 新手友好度 48/100
softwaremill/quicklens#296 ·
-
难度 3/5 1-2 天 新手友好度 35/100
softwaremill/quicklens#291 · 1 条评论 ·
-
难度 4/5 3-5 天 新手友好度 45/100
softwaremill/quicklens#258 · 4 条评论 ·
-
Cannot use modify in opaque types可能重新可做 @KacperFKorban 于 836 天前认领,目前没有进行中的 PR。 未关闭
softwaremill/quicklens#234 · 2 条评论 · 已指派 1 人 ·
-
难度 3/5 1-2 天 新手友好度 35/100
softwaremill/quicklens#116 · 1 条评论 ·
查看 softwaremill/quicklens 的全部 Issue
相似的 Issue
-
requires-triage
难度 2/5 1-3 小时 新手友好度 68/100
apache/datafusion-comet#7001 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
lichess-org/lila#22088 ·
维护者通常 1 天内回复
-
agent-ready area/dev-tooling layer/infra size/S
难度 1/5 1 小时以内 新手友好度 90/100
marola-dev/marola-app#111 ·
维护者通常 1 天内回复
-
agent-ready area/dev-tooling kind/docs-only layer/docs size/XS
难度 2/5 1 小时以内 新手友好度 72/100
marola-dev/marola#824 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 74/100
维护者通常 1 天内回复