File tree 3 files changed +25
-2
lines changed
compiler/src/dotty/tools/dotc/core
3 files changed +25
-2
lines changed Original file line number Diff line number Diff line change @@ -1121,9 +1121,13 @@ object Denotations {
1121
1121
else if symbol.isAllOf(ClassTypeParam ) then
1122
1122
val arg = symbol.typeRef.argForParam(pre, widenAbstract = true )
1123
1123
if arg.exists then
1124
+ // take the argument bounds, but intersect with the symbols bounds if
1125
+ // this forces nothing and gives a non-empty type.
1124
1126
val newBounds =
1125
- if symbol.isCompleted && ! symbol.info.containsLazyRefs
1126
- then symbol.info.bounds & arg.bounds
1127
+ if symbol.isCompleted && ! symbol.info.containsLazyRefs then
1128
+ val combined @ TypeBounds (lo, hi) = symbol.info.bounds & arg.bounds
1129
+ if lo frozen_<:< hi then combined
1130
+ else arg.bounds
1127
1131
else arg.bounds
1128
1132
derivedSingleDenotation(symbol, newBounds, pre)
1129
1133
else derived(symbol.info)
Original file line number Diff line number Diff line change
1
+ trait BatchDiffFunction [T ]
2
+
3
+ abstract class FirstOrderMinimizer [T , DF <: BatchDiffFunction [T ]]:
4
+ type State = FirstOrderMinimizer .State [T ]
5
+
6
+ object FirstOrderMinimizer :
7
+ case class State [+ T ](x : T )
8
+
9
+ class OptParams :
10
+ def iterations [T ](init : T ): Iterator [FirstOrderMinimizer [T , BatchDiffFunction [T ]]# State ] = ???
Original file line number Diff line number Diff line change
1
+ trait Column [V ]
2
+ trait ColumnPath
3
+
4
+ trait ColumnFactory [V , C <: Column [V ]]:
5
+ def apply (columnPath : ColumnPath ): C
6
+
7
+ object ColumnFactory :
8
+ private def apply [V , C <: Column [V ]](f : String => C ): ColumnFactory [V , C ] =
9
+ columnPath => f(columnPath.toString())
You can’t perform that action at this time.
0 commit comments