mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-04 10:54:42 +00:00
make tests/concepts/t3330.nim disabled again: the order of candidates is machine dependent
This commit is contained in:
142
tests/errmsgs/tsigmatch.nim
Normal file
142
tests/errmsgs/tsigmatch.nim
Normal file
@@ -0,0 +1,142 @@
|
||||
discard """
|
||||
cmd: "nim check --showAllMismatches:on --hints:off $file"
|
||||
nimout: '''
|
||||
tsigmatch.nim(76, 7) Error: type mismatch: got <Mystring, string>
|
||||
but expected one of:
|
||||
proc fun1(a1: MyInt; a2: Mystring)
|
||||
first type mismatch at position: 1
|
||||
required type for a1: MyInt
|
||||
but expression 'default(Mystring)' is of type: Mystring
|
||||
proc fun1(a1: float; a2: Mystring)
|
||||
first type mismatch at position: 1
|
||||
required type for a1: float
|
||||
but expression 'default(Mystring)' is of type: Mystring
|
||||
|
||||
expression: fun1(default(Mystring), "asdf")
|
||||
tsigmatch.nim(82, 6) Error: type mismatch: got <tuple of (string, proc (){.gcsafe, locks: 0.})>
|
||||
but expected one of:
|
||||
proc foo(x: (string, proc ()))
|
||||
first type mismatch at position: 1
|
||||
required type for x: tuple of (string, proc (){.closure.})
|
||||
but expression '("foobar", proc () = echo(["Hello!"]))' is of type: tuple of (string, proc (){.gcsafe, locks: 0.})
|
||||
|
||||
expression: foo(("foobar", proc () = echo(["Hello!"])))
|
||||
tsigmatch.nim(95, 4) Error: type mismatch: got <A, string>
|
||||
but expected one of:
|
||||
proc f(b: B)
|
||||
first type mismatch at position: 1
|
||||
required type for b: B
|
||||
but expression 'A()' is of type: A
|
||||
proc f(a: A)
|
||||
first type mismatch at position: 2
|
||||
extra argument given
|
||||
|
||||
expression: f(A(), "extra")
|
||||
'''
|
||||
errormsg: "type mismatch"
|
||||
"""
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## line 70
|
||||
block:
|
||||
# bug #11061 Type mismatch error "first type mismatch at" points to wrong argument/position
|
||||
# Note: the error msg now gives correct position for mismatched argument
|
||||
type
|
||||
A = object of RootObj
|
||||
B = object of A
|
||||
|
||||
proc f(b: B) = discard
|
||||
proc f(a: A) = discard
|
||||
|
||||
f(A(), "extra")
|
||||
#[
|
||||
this one is similar but error msg was even more misleading, since the user
|
||||
would think float != float64 where in fact the issue is another param:
|
||||
first type mismatch at position: 1; required type: float; but expression 'x = 1.2' is of type: float64
|
||||
proc f(x: string, a0 = 0, a1 = 0, a2 = 0) = discard
|
||||
proc f(x: float, a0 = 0, a1 = 0, a2 = 0) = discard
|
||||
f(x = float(1.2), a0 = 0, a0 = 0)
|
||||
]#
|
||||
|
||||
block:
|
||||
# bug #7808 Passing tuple with proc leads to confusing errors
|
||||
# Note: the error message now shows `closure` which helps debugging the issue
|
||||
proc foo(x: (string, proc ())) = x[1]()
|
||||
foo(("foobar", proc () = echo("Hello!")))
|
||||
|
||||
block:
|
||||
# bug #8305 type mismatch error drops crucial pragma info when there's only 1 argument
|
||||
proc fun(s: string): string {. .} = discard
|
||||
proc foo[T, S](op: proc (x: T): S {. cdecl .}): auto = 1
|
||||
proc foo[T, S](op: proc (x: T): S {. safecall .}): auto = 1
|
||||
echo foo(fun)
|
||||
|
||||
block:
|
||||
# bug #10285 Function signature don't match when inside seq/array/openarray
|
||||
# Note: the error message now shows `closure` which helps debugging the issue
|
||||
# out why it doesn't match
|
||||
proc takesFunc(f: proc (x: int) {.gcsafe, locks: 0.}) =
|
||||
echo "takes single Func"
|
||||
proc takesFuncs(fs: openarray[proc (x: int) {.gcsafe, locks: 0.}]) =
|
||||
echo "takes multiple Func"
|
||||
takesFunc(proc (x: int) {.gcsafe, locks: 0.} = echo x) # works
|
||||
takesFuncs([proc (x: int) {.gcsafe, locks: 0.} = echo x]) # fails
|
||||
|
||||
block:
|
||||
# bug https://github.com/nim-lang/Nim/issues/11061#issuecomment-508970465
|
||||
# better fix for removal of `errCannotBindXTwice` due to #3836
|
||||
proc f(a0: uint8, b: string) = discard
|
||||
f(10, a0 = 5, "")
|
||||
|
||||
block:
|
||||
# bug: https://github.com/nim-lang/Nim/issues/11061#issuecomment-508969796
|
||||
# sigmatch gets confused with param/arg position after varargs
|
||||
proc f(a1: int) = discard
|
||||
proc f(a1: string, a2: varargs[string], a3: float, a4: var string) = discard
|
||||
f("asdf", "1", "2", "3", "4", 2.3, "bad")
|
||||
|
||||
block:
|
||||
# bug: https://github.com/nim-lang/Nim/issues/11061#issuecomment-508970046
|
||||
# err msg incorrectly said something is immutable
|
||||
proc f(x: string, a0: var int) = discard
|
||||
proc f(x: string, a0: string) = discard
|
||||
var foo = ""
|
||||
f(foo, a0 = 12)
|
||||
|
||||
block:
|
||||
type Mystring = string
|
||||
type MyInt = int
|
||||
proc fun1(a1: MyInt, a2: Mystring) = discard
|
||||
proc fun1(a1: float, a2: Mystring) = discard
|
||||
fun1(Mystring.default, "asdf")
|
||||
|
||||
Reference in New Issue
Block a user