@@ -1051,18 +1051,45 @@ class TypeSuite extends UnrestrictedUnpicklingSuite {
1051
1051
throw AssertionError (s " unexpected type $tpe" )
1052
1052
}
1053
1053
1054
- testWithContext(" scala-2-default-params" ) {
1054
+ testWithContext(" default-params" ) {
1055
+ extension (sym : TermSymbol ) def paramCount : Int = sym.declaredType.asInstanceOf [MethodType ].paramNames.size
1056
+
1055
1057
val DefaultParamsClass = ctx.findTopLevelClass(" simple_trees.DefaultParams" )
1056
1058
assert(clue(DefaultParamsClass .getNonOverloadedDecl(DefaultGetterName (termName(" foo" ), 0 ))).isEmpty)
1057
1059
DefaultParamsClass .findNonOverloadedDecl(DefaultGetterName (termName(" foo" ), 1 ))
1058
1060
DefaultParamsClass .findNonOverloadedDecl(DefaultGetterName (termName(" foo" ), 2 ))
1059
1061
assert(clue(DefaultParamsClass .getNonOverloadedDecl(DefaultGetterName (termName(" foo" ), 3 ))).isEmpty)
1060
1062
1063
+ val fooOverloads = DefaultParamsClass .findAllOverloadedDecls(termName(" foo" ))
1064
+
1065
+ val fooWithDefaults = fooOverloads.find(_.paramCount == 3 ).get
1066
+ assert(clue(fooWithDefaults.hasParamWithDefault) && ! clue(fooWithDefaults.isParamWithDefault))
1067
+ val List (Left (fooWithDefaultsParams)) = fooWithDefaults.paramSymss: @ unchecked
1068
+ assert(clue(fooWithDefaultsParams.map(_.isParamWithDefault)) == List (false , true , true ))
1069
+ assert(clue(fooWithDefaultsParams.map(_.hasParamWithDefault)).forall(_ == false ))
1070
+
1071
+ for fooOverload <- fooOverloads if fooOverload ne fooWithDefaults do
1072
+ assert(! clue(fooOverload.hasParamWithDefault) && ! clue(fooOverload.isParamWithDefault))
1073
+ val List (Left (params)) = fooOverload.paramSymss: @ unchecked
1074
+ assert(clue(params.map(_.isParamWithDefault)).forall(_ == false ))
1075
+ assert(clue(params.map(_.hasParamWithDefault)).forall(_ == false ))
1076
+ }
1077
+
1078
+ testWithContext(" default-params-scala-2" ) {
1061
1079
val IteratorClass = ctx.findTopLevelClass(" scala.collection.Iterator" )
1062
1080
assert(clue(IteratorClass .getNonOverloadedDecl(DefaultGetterName (termName(" indexWhere" ), 0 ))).isEmpty)
1063
1081
IteratorClass .findNonOverloadedDecl(DefaultGetterName (termName(" indexWhere" ), 1 ))
1064
1082
assert(clue(IteratorClass .getNonOverloadedDecl(DefaultGetterName (termName(" indexWhere" ), 2 ))).isEmpty)
1065
1083
1084
+ locally {
1085
+ val indexWhere = IteratorClass .findNonOverloadedDecl(termName(" indexWhere" ))
1086
+ assert(clue(indexWhere.hasParamWithDefault) && ! clue(indexWhere.isParamWithDefault))
1087
+
1088
+ val List (Left (List (p, from))) = indexWhere.paramSymss: @ unchecked
1089
+ assert(! clue(p.hasParamWithDefault) && ! clue(p.isParamWithDefault))
1090
+ assert(! clue(from.hasParamWithDefault) && clue(from.isParamWithDefault))
1091
+ }
1092
+
1066
1093
val ArrayDequeModClass = ctx.findTopLevelModuleClass(" scala.collection.mutable.ArrayDeque" )
1067
1094
ArrayDequeModClass .findNonOverloadedDecl(DefaultGetterName (nme.Constructor , 0 ))
1068
1095
assert(clue(ArrayDequeModClass .getNonOverloadedDecl(DefaultGetterName (nme.Constructor , 1 ))).isEmpty)
0 commit comments