This commit is contained in:
Araq 2017-10-27 20:55:36 +02:00
commit 9c00f6decd
3 changed files with 36 additions and 15 deletions

View file

@ -2,7 +2,9 @@ discard """
output: '''Version 2 was called.
This has the highest precedence.
This has the second-highest precedence.
This has the lowest precedence.'''
This has the lowest precedence.
baseobj ==
true'''
"""
# bug #2220
@ -26,13 +28,13 @@ template testPred(a: untyped) =
type SomeA = A|A # A hack to make "A" a typeclass.
when a >= 3:
proc p[X](x: X) =
echo "This has the highest precedence."
when a >= 2:
proc p[X: A](x: X) =
echo "This has the highest precedence."
when a == 2:
proc p[X: SomeA](x: X) =
echo "This has the second-highest precedence."
when a >= 1:
proc p[X: SomeA](x: X) =
proc p[X](x: X) =
echo "This has the lowest precedence."
p(B())
@ -40,3 +42,16 @@ template testPred(a: untyped) =
testPred(3)
testPred(2)
testPred(1)
# bug #6526
type
BaseObj = ref object of RootObj
DerivedObj = ref object of BaseObj
proc `==`*[T1, T2: BaseObj](a: T1, b: T2): bool =
echo "baseobj =="
return true
let a = DerivedObj()
let b = DerivedObj()
echo a == b