File tree Expand file tree Collapse file tree 2 files changed +7
-6
lines changed
compiler/src/dotty/tools/dotc/typer Expand file tree Collapse file tree 2 files changed +7
-6
lines changed Original file line number Diff line number Diff line change @@ -888,8 +888,8 @@ class Namer { typer: Typer =>
888888 val unsafeInfo = if (isDerived) rhsBodyType else abstracted(rhsBodyType)
889889
890890 def opaqueToBounds (info : Type ): Type =
891- if sym.isOpaqueAlias && info.typeParams.nonEmpty then
892- report.error(em " opaque type alias must be fully applied " , rhs.srcPos)
891+ if sym.isOpaqueAlias && info.typeParams.nonEmpty && info.hkResult.typeParams.nonEmpty then
892+ report.error(em " opaque type alias cannot have multiple type parameter lists " , rhs.srcPos)
893893 sym.opaqueToBounds(info, rhs1, tparamSyms)
894894
895895 if (isDerived) sym.info = unsafeInfo
Original file line number Diff line number Diff line change 11trait Two [A , B ]
22
3- opaque type U [A ] = [B ] =>> Two [A , B ] // error: opaque type alias must be fully applied // error: cannot instantiate
4- opaque type T [A ] = [B ] =>> String // error: opaque type alias must be fully applied
5- opaque type S = [B ] =>> String // error: opaque type alias must be fully applied
6-
3+ opaque type U [A ] = [B ] =>> Two [A , B ] // error: opaque type alias cannot have multiple type parameter lists // error: cannot instantiate
4+ opaque type T = [A ] =>> [B ] =>> String // error: opaque type alias cannot have multiple type parameter lists
5+ opaque type S = [B ] =>> String // ok
6+ opaque type IArray [+ T ] = Array [? <: T ] // ok
7+ opaque type S2 [B ] = String // ok
You can’t perform that action at this time.
0 commit comments