File tree Expand file tree Collapse file tree 2 files changed +20
-1
lines changed
compiler/src/dotty/tools/dotc/typer Expand file tree Collapse file tree 2 files changed +20
-1
lines changed Original file line number Diff line number Diff line change @@ -183,6 +183,12 @@ object ConstFold {
183
183
case nme.MOD => Constant (x.doubleValue % y.doubleValue)
184
184
case _ => null
185
185
}
186
+ private def foldStringOp (op : Name , x : Constant , y : Constant ): Constant = op match {
187
+ case nme.EQ => Constant (x.stringValue == y.stringValue)
188
+ case nme.NE => Constant (x.stringValue != y.stringValue)
189
+ case nme.ADD => Constant (x.stringValue + y.stringValue)
190
+ case _ => null
191
+ }
186
192
187
193
private def foldBinop (op : Name , x : Constant , y : Constant ): Constant = {
188
194
val optag =
@@ -196,7 +202,7 @@ object ConstFold {
196
202
case LongTag => foldLongOp(op, x, y)
197
203
case FloatTag => foldFloatOp(op, x, y)
198
204
case DoubleTag => foldDoubleOp(op, x, y)
199
- case StringTag if op == nme. ADD => Constant (x.stringValue + y.stringValue )
205
+ case StringTag => foldStringOp(op, x, y )
200
206
case _ => null
201
207
}
202
208
catch {
Original file line number Diff line number Diff line change
1
+ object Test {
2
+ def assertT (t : { true }) = ()
3
+ def assertF (f : { false }) = ()
4
+
5
+ dependent def r1 = 1 == 1 ; assertT(r1)
6
+ dependent def r2 = " 1" == " 1" ; assertT(r2)
7
+ dependent def r3 = 1 == 2 ; assertF(r3)
8
+ dependent def r4 = " 1" == " 2" ; assertF(r4)
9
+ dependent def r6 = 1 != 1 ; assertF(r6)
10
+ dependent def r7 = " 1" != " 1" ; assertF(r7)
11
+ dependent def r8 = 1 != 2 ; assertT(r8)
12
+ dependent def r9 = " 1" != " 2" ; assertT(r9)
13
+ }
You can’t perform that action at this time.
0 commit comments