Skip to content

Commit dbbb8b7

Browse files
authored
Merge pull request #15297 from dotty-staging/fix-15141
Align description how context bounds expand with implementation
2 parents 1ea177d + 60901f3 commit dbbb8b7

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

docs/_docs/reference/contextual/context-bounds.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,14 @@ A context bound is a shorthand for expressing the common pattern of a context pa
1010
def maximum[T: Ord](xs: List[T]): T = xs.reduceLeft(max)
1111
```
1212

13-
A bound like `: Ord` on a type parameter `T` of a method or class indicates a context parameter `using Ord[T]`. The context parameter(s) generated from context bounds come last in the definition of the containing method or class. For instance,
13+
A bound like `: Ord` on a type parameter `T` of a method or class indicates a context parameter `using Ord[T]`. The context parameter(s) generated from context bounds
14+
are added as follows:
15+
16+
- If the method parameters end in an implicit parameter list or using clause,
17+
context parameters are added in front of that list.
18+
- Otherwise they are added as a separate parameter clause at the end.
19+
20+
Example:
1421

1522
```scala
1623
def f[T: C1 : C2, U: C3](x: T)(using y: U, z: V): R
@@ -19,7 +26,7 @@ def f[T: C1 : C2, U: C3](x: T)(using y: U, z: V): R
1926
would expand to
2027

2128
```scala
22-
def f[T, U](x: T)(using y: U, z: V)(using C1[T], C2[T], C3[U]): R
29+
def f[T, U](x: T)(using _: C1[T], _: C2[T], _: C3[U], y: U, z: V): R
2330
```
2431

2532
Context bounds can be combined with subtype bounds. If both are present, subtype bounds come first, e.g.

0 commit comments

Comments
 (0)