fix #13538 sigmatch errors are now sorted (#13701)

* fix #13538 sigmatch now sorted and has reliable order

* re-enable tests that were disabled because of that bug

* fix remaining tests and un-disable 2 other tests that were affected by this bug
This commit is contained in:
Timothee Cour 2020-03-20 01:28:03 -07:00 • committed by GitHub
commit dd362ab4c0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 58 additions and 51 deletions

View file

@ -1,6 +1,5 @@
discard """
errormsg: "type mismatch: got <Bar[system.int]>"
disabled: "32bit"
nimout: '''
t3330.nim(78, 4) Error: type mismatch: got <Bar[system.int]>
but expected one of:
@ -9,33 +8,33 @@ proc test(foo: Foo[int])
required type for foo: Foo[int]
but expression 'bar' is of type: Bar[system.int]
t3330.nim(63, 8) Hint: Non-matching candidates for add(k, string, T)
proc add(x: var string; y: string)
first type mismatch at position: 1
required type for x: var string
but expression 'k' is of type: Alias
proc add[T](x: var seq[T]; y: openArray[T])
first type mismatch at position: 1
required type for x: var seq[T]
but expression 'k' is of type: Alias
proc add(result: var string; x: float)
first type mismatch at position: 1
required type for result: var string
but expression 'k' is of type: Alias
proc add[T](x: var seq[T]; y: T)
proc add(result: var string; x: int64)
first type mismatch at position: 1
required type for x: var seq[T]
but expression 'k' is of type: Alias
proc add(x: var string; y: cstring)
first type mismatch at position: 1
required type for x: var string
required type for result: var string
but expression 'k' is of type: Alias
proc add(x: var string; y: char)
first type mismatch at position: 1
required type for x: var string
but expression 'k' is of type: Alias
proc add(result: var string; x: int64)
proc add(x: var string; y: cstring)
first type mismatch at position: 1
required type for result: var string
required type for x: var string
but expression 'k' is of type: Alias
proc add(x: var string; y: string)
first type mismatch at position: 1
required type for x: var string
but expression 'k' is of type: Alias
proc add[T](x: var seq[T]; y: T)
first type mismatch at position: 1
required type for x: var seq[T]
but expression 'k' is of type: Alias
proc add[T](x: var seq[T]; y: openArray[T])
first type mismatch at position: 1
required type for x: var seq[T]
but expression 'k' is of type: Alias
t3330.nim(63, 8) template/generic instantiation of `add` from here
@ -46,10 +45,11 @@ t3330.nim(71, 6) Foo: 'bar.x' cannot be assigned to
expression: test(bar)'''
"""
# Note: currently disabled on 32bit because the candidates are presented in
# different order on travis with `NIM_COMPILE_TO_CPP=false CPU=i386`;
# a possible fix would be to sort the candidates by proc signature or
# declaration location

View file

@ -37,20 +37,24 @@ texplain.nim(124, 5) ExplainedConcept: concept predicate failed
texplain.nim(168, 20) Error: type mismatch: got <NonMatchingType>
but expected one of:
proc e(i: int): int
first type mismatch at position: 1
required type for i: int
but expression 'n' is of type: NonMatchingType
proc e(o: ExplainedConcept): int
first type mismatch at position: 1
required type for o: ExplainedConcept
but expression 'n' is of type: NonMatchingType
texplain.nim(168, 9) template/generic instantiation of `assert` from here
texplain.nim(124, 5) ExplainedConcept: concept predicate failed
proc e(i: int): int
first type mismatch at position: 1
required type for i: int
but expression 'n' is of type: NonMatchingType
expression: e(n)
texplain.nim(169, 20) Error: type mismatch: got <NonMatchingType>
but expected one of:
proc r(i: string): int
first type mismatch at position: 1
required type for i: string
but expression 'n' is of type: NonMatchingType
proc r(o: RegularConcept): int
first type mismatch at position: 1
required type for o: RegularConcept
@ -61,21 +65,17 @@ proc r[T](a: SomeNumber; b: T; c: auto)
first type mismatch at position: 1
required type for a: SomeNumber
but expression 'n' is of type: NonMatchingType
proc r(i: string): int
first type mismatch at position: 1
required type for i: string
but expression 'n' is of type: NonMatchingType
expression: r(n)
texplain.nim(170, 20) Hint: Non-matching candidates for r(y)
proc r[T](a: SomeNumber; b: T; c: auto)
first type mismatch at position: 1
required type for a: SomeNumber
but expression 'y' is of type: MatchingType
proc r(i: string): int
first type mismatch at position: 1
required type for i: string
but expression 'y' is of type: MatchingType
proc r[T](a: SomeNumber; b: T; c: auto)
first type mismatch at position: 1
required type for a: SomeNumber
but expression 'y' is of type: MatchingType
texplain.nim(178, 2) Error: type mismatch: got <MatchingType>
but expected one of:
@ -97,10 +97,10 @@ expression: f(y)'''
errormsg: "type mismatch: got <MatchingType>"
line: 178
disabled: 32bit
"""
# disabled on 32 bit, because the order of suggested alternatives ``r`` differs
# proc r[T](a: SomeNumber; b: T; c: auto)
# proc r(i: string): int
# proc r(o: RegularConcept): int