From a65e9c0e2520911d16b81e7af47fea8c3fdd2958 Mon Sep 17 00:00:00 2001 From: cooldome Date: Sun, 10 Jun 2018 23:27:45 +0100 Subject: fix comments --- compiler/sigmatch.nim | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) (limited to 'compiler/sigmatch.nim') diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index ec13b7557..bdae01d7d 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -633,26 +633,21 @@ proc procTypeRel(c: var TCandidate, f, a: PType): TTypeRelation = else: discard proc typeRangeRel(f, a: PType): TTypeRelation {.noinline.} = - template check_range_in(t: typedesc): untyped = - let - a0 = firstValue[t](a) - a1 = lastValue[t](a) - f0 = firstValue[t](f) - f1 = lastValue[t](f) - if a0 == f0 and a1 == f1: - result = isEqual - elif a0 >= f0 and a1 <= f1: - result = isConvertible - elif a0 <= f1 and f0 <= a1: + template check_range[T](a_first, a_last, f_first, f_last: T): TTypeRelation = + if a_first == f_first and a_last == f_last: + isEqual + elif a_first >= f_first and a_last <= f_last: + isConvertible + elif a_first <= f_last and f_first <= a_last: # X..Y and C..D overlap iff (X <= D and C <= Y) - result = isConvertible + isConvertible else: - result = isNone + isNone if f.isOrdinalType: - check_range_in(BiggestInt) - else: - check_range_in(BiggestFloat) + check_range(firstOrd(a), lastOrd(a), firstOrd(f), lastOrd(f)) + else: + check_range(firstFloat(a), lastFloat(a), firstFloat(f), lastFloat(f)) proc matchUserTypeClass*(m: var TCandidate; ff, a: PType): PType = -- cgit 1.4.1-2-gfad0