File tree Expand file tree Collapse file tree 3 files changed +13
-2
lines changed
compiler/src/dotty/tools/dotc/ast Expand file tree Collapse file tree 3 files changed +13
-2
lines changed Original file line number Diff line number Diff line change @@ -914,7 +914,7 @@ object desugar {
914
914
ctx.error(em " No extension method $allowed" , mdef.sourcePos)
915
915
mdef
916
916
}
917
- else cpy.DefDef (mdef)(tparams = tparams ++ mdef.tparams, vparamss = leadingParams :: Nil )
917
+ else cpy.DefDef (mdef)(tparams = tparams ++ mdef.tparams, vparamss = leadingParams :: mdef.vparamss )
918
918
.withFlags(Extension )
919
919
case mdef : Import =>
920
920
mdef
Original file line number Diff line number Diff line change @@ -10,5 +10,9 @@ object Test {
10
10
" " .l2 // error
11
11
1 .l1 // error
12
12
13
-
13
+ given [T ](xs : List [T ]) {
14
+ def (x : Int ) f1 : T = ??? // error: No extension method allowed here, since collective parameters are given
15
+ def f2 [T ]: T = ??? // error: T is already defined as type T
16
+ def f3 (xs : List [T ]) = ??? // error: xs is already defined as value xs
17
+ }
14
18
}
Original file line number Diff line number Diff line change @@ -19,10 +19,14 @@ object Test extends App {
19
19
given ListOps [T ](xs : List [T ]) {
20
20
def second : T = xs.tail.head
21
21
def third : T = xs.tail.tail.head
22
+ def concat (ys : List [T ]) = xs ++ ys
23
+ def zipp [U ](ys : List [U ]): List [(T , U )] = xs.zip(ys)
22
24
}
23
25
given (xs : List [Int ]) {
24
26
def prod = (1 /: xs)(_ * _)
25
27
}
28
+
29
+
26
30
}
27
31
28
32
object B {
@@ -33,6 +37,9 @@ object Test extends App {
33
37
assert(A .ListOps .second[Int ](xs) == 2 )
34
38
assert(A .ListOps .third(xs) == 3 )
35
39
assert(xs.prod == 6 )
40
+ assert(xs.concat(xs).length == 6 )
41
+ assert(xs.zipp(xs).map(_ + _).prod == 36 )
42
+ assert(xs.zipp[Int , Int ](xs).map(_ + _).prod == 36 )
36
43
}
37
44
}
38
45
You can’t perform that action at this time.
0 commit comments