summary refs log blame commit diff stats
path: root/tests/overload/tprefer_tygenericinst.nim
blob: 9787af06b975a959a97fff8e3ef8b151569ff7ff (plain) (tree)
1
2
3
4
5
6
7
8
           



                                       


           


                    
 

                                
 

                                
 
                                           
 





















                                                      
discard """
  output: '''Version 2 was called.
This has the highest precedence.
This has the second-highest precedence.
This has the lowest precedence.'''
"""

# bug #2220
when true:
  type A[T] = object
  type B = A[int]

  proc q[X](x: X) =
    echo "Version 1 was called."

  proc q(x: B) =
    echo "Version 2 was called."

  q(B()) # This call reported as ambiguous.

# bug #2219
template testPred(a: expr) =
  block:
    type A = object of RootObj
    type B = object of A
    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 second-highest precedence."
    when a >= 1:
      proc p[X: SomeA](x: X) =
        echo "This has the lowest precedence."

    p(B())

testPred(3)
testPred(2)
testPred(1)