Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Regression: Error: fatal error: invalid kind for lastOrd(tyGenericParam) #23823

Closed
narimiran opened this issue Jul 11, 2024 · 4 comments
Closed

Comments

@narimiran
Copy link
Member

Description

Git bisect shows this is a regression, caused by #23137.

One part of these errors was fixed in #23760, but not all cases are fixed. For example:

func `xor`[T: array](a, b: T): T =
  for i in 0..<result.len:
    result[i] = a[i] xor b[i]

template eachElement(x, y, res, op: untyped) =
  for i in 0..<res.len:
    res[i] = op(x[i], y[i])

func `xor`*[N: static int; T](x, y: array[N, T]): array[N, T] =
  eachElement(x, y, result, `xor`)

var a: array[5, int]
var b: array[5, int]

discard a xor b

Nim Version

$ nim -v
Nim Compiler Version 2.1.1 [Linux: amd64]
Compiled at 2024-07-11
Copyright (c) 2006-2024 by Andreas Rumpf

git hash: 5c5e7a9b6e9ed0c860030f798d4a7096b51b6bda
active boot switches: -d:release

Current Output

`Error: fatal error: invalid kind for lastOrd(tyGenericParam)`

Expected Output

No response

Possible Solution

No response

Additional Information

No response

@Graveflo
Copy link
Contributor

potentially reduced:

func p[N,T](a, b: array[N,T]) =
  discard

func p[N: static int; T](x, y: array[N, T]) =
  discard

var a: array[5, int]
p(a,a)

@juancarlospaco
Copy link
Collaborator

!nim c

func p[N,T](a, b: array[N,T]) =
  discard

func p[N: static int; T](x, y: array[N, T]) =
  discard

var a: array[5, int]
p(a,a)

Copy link
Contributor

🐧 Linux bisect by @juancarlospaco (collaborator)
devel 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
Error: fatal error: invalid kind for lastOrd(tyGenericParam)
assertions.nim(34)       raiseAssert
Error: unhandled exception: errFatal [AssertionDefect]

IR

Compiled filesize 0 (0 bytes)

Stats

  • Started 2024-07-11T15:56:47
  • Finished 2024-07-11T15:56:47
  • Duration

AST

nnkStmtList.newTree(
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("a"),
        newIdentNode("b"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        nnkCommand.newTree(
          newIdentNode("static"),
          newIdentNode("int")
        ),
        newEmptyNode()
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("x"),
        newIdentNode("y"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("a"),
      nnkBracketExpr.newTree(
        newIdentNode("array"),
        newLit(5),
        newIdentNode("int")
      ),
      newEmptyNode()
    )
  ),
  nnkCall.newTree(
    newIdentNode("p"),
    newIdentNode("a"),
    newIdentNode("a")
  )
)
stable 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
Error: fatal error: invalid kind for lastOrd(tyGenericParam)
assertions.nim(34)       raiseAssert
Error: unhandled exception: options.nim(682, 5) `false` errFatal [AssertionDefect]

IR

Compiled filesize 0 (0 bytes)

Stats

  • Started 2024-07-11T15:56:51
  • Finished 2024-07-11T15:56:51
  • Duration

AST

nnkStmtList.newTree(
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("a"),
        newIdentNode("b"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        nnkCommand.newTree(
          newIdentNode("static"),
          newIdentNode("int")
        ),
        newEmptyNode()
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("x"),
        newIdentNode("y"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("a"),
      nnkBracketExpr.newTree(
        newIdentNode("array"),
        newLit(5),
        newIdentNode("int")
      ),
      newEmptyNode()
    )
  ),
  nnkCall.newTree(
    newIdentNode("p"),
    newIdentNode("a"),
    newIdentNode("a")
  )
)
2.0.4 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(6, 2) Error: ambiguous call; both temp.p(a: array[N, T], b: array[N, T]) [func declared in /home/runner/work/Nim/Nim/temp.nim(1, 6)] and temp.p(x: array[0..static(pred(N)), T], y: array[0..static(pred(N)), T]) [func declared in /home/runner/work/Nim/Nim/temp.nim(3, 6)] match for: (array[0..4, int], array[0..4, int])
assertions.nim(34)       raiseAssert
Error: unhandled exception: options.nim(681, 5) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 0 (0 bytes)

Stats

  • Started 2024-07-11T15:56:54
  • Finished 2024-07-11T15:56:54
  • Duration

AST

nnkStmtList.newTree(
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("a"),
        newIdentNode("b"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        nnkCommand.newTree(
          newIdentNode("static"),
          newIdentNode("int")
        ),
        newEmptyNode()
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("x"),
        newIdentNode("y"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("a"),
      nnkBracketExpr.newTree(
        newIdentNode("array"),
        newLit(5),
        newIdentNode("int")
      ),
      newEmptyNode()
    )
  ),
  nnkCall.newTree(
    newIdentNode("p"),
    newIdentNode("a"),
    newIdentNode("a")
  )
)
2.0.0 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(6, 2) Error: ambiguous call; both temp.p(a: array[N, T], b: array[N, T]) [func declared in /home/runner/work/Nim/Nim/temp.nim(1, 6)] and temp.p(x: array[0..static(pred(N)), T], y: array[0..static(pred(N)), T]) [func declared in /home/runner/work/Nim/Nim/temp.nim(3, 6)] match for: (array[0..4, int], array[0..4, int])
assertions.nim(34)       raiseAssert
Error: unhandled exception: options.nim(664, 5) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 0 (0 bytes)

Stats

  • Started 2024-07-11T15:56:57
  • Finished 2024-07-11T15:56:57
  • Duration

AST

nnkStmtList.newTree(
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("a"),
        newIdentNode("b"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        nnkCommand.newTree(
          newIdentNode("static"),
          newIdentNode("int")
        ),
        newEmptyNode()
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("x"),
        newIdentNode("y"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("a"),
      nnkBracketExpr.newTree(
        newIdentNode("array"),
        newLit(5),
        newIdentNode("int")
      ),
      newEmptyNode()
    )
  ),
  nnkCall.newTree(
    newIdentNode("p"),
    newIdentNode("a"),
    newIdentNode("a")
  )
)
1.6.20 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(6, 2) Error: ambiguous call; both temp.p(a: array[N, T], b: array[N, T]) [func declared in /home/runner/work/Nim/Nim/temp.nim(1, 6)] and temp.p(x: array[0..<invalid value>, T], y: array[0..<invalid value>, T]) [func declared in /home/runner/work/Nim/Nim/temp.nim(3, 6)] match for: (array[0..4, int], array[0..4, int])
fatal.nim(54)            sysFatal
Error: unhandled exception: options.nim(662, 14) `false` errGenerated [AssertionDefect]

IR

Compiled filesize 0 (0 bytes)

Stats

  • Started 2024-07-11T15:57:00
  • Finished 2024-07-11T15:57:00
  • Duration

AST

nnkStmtList.newTree(
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("a"),
        newIdentNode("b"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        nnkCommand.newTree(
          newIdentNode("static"),
          newIdentNode("int")
        ),
        newEmptyNode()
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("x"),
        newIdentNode("y"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("a"),
      nnkBracketExpr.newTree(
        newIdentNode("array"),
        newLit(5),
        newIdentNode("int")
      ),
      newEmptyNode()
    )
  ),
  nnkCall.newTree(
    newIdentNode("p"),
    newIdentNode("a"),
    newIdentNode("a")
  )
)
1.4.8 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(6, 2) Error: ambiguous call; both temp.p(a: array[N, T], b: array[N, T]) [declared in /home/runner/work/Nim/Nim/temp.nim(1, 6)] and temp.p(x: array[0..<invalid value>, T], y: array[0..<invalid value>, T]) [declared in /home/runner/work/Nim/Nim/temp.nim(3, 6)] match for: (array[0..4, int], array[0..4, int])

IR

Compiled filesize 0 (0 bytes)

Stats

  • Started 2024-07-11T15:57:03
  • Finished 2024-07-11T15:57:03
  • Duration

AST

nnkStmtList.newTree(
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("a"),
        newIdentNode("b"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        nnkCommand.newTree(
          newIdentNode("static"),
          newIdentNode("int")
        ),
        newEmptyNode()
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("x"),
        newIdentNode("y"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("a"),
      nnkBracketExpr.newTree(
        newIdentNode("array"),
        newLit(5),
        newIdentNode("int")
      ),
      newEmptyNode()
    )
  ),
  nnkCall.newTree(
    newIdentNode("p"),
    newIdentNode("a"),
    newIdentNode("a")
  )
)
1.2.18 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(6, 2) Error: ambiguous call; both temp.p(a: array[N, T], b: array[N, T]) [declared in /home/runner/work/Nim/Nim/temp.nim(1, 6)] and temp.p(x: array[0..<invalid value>, T], y: array[0..<invalid value>, T]) [declared in /home/runner/work/Nim/Nim/temp.nim(3, 6)] match for: (array[0..4, int], array[0..4, int])

IR

Compiled filesize 0 (0 bytes)

Stats

  • Started 2024-07-11T15:57:05
  • Finished 2024-07-11T15:57:05
  • Duration

AST

nnkStmtList.newTree(
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("a"),
        newIdentNode("b"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        nnkCommand.newTree(
          newIdentNode("static"),
          newIdentNode("int")
        ),
        newEmptyNode()
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("x"),
        newIdentNode("y"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("a"),
      nnkBracketExpr.newTree(
        newIdentNode("array"),
        newLit(5),
        newIdentNode("int")
      ),
      newEmptyNode()
    )
  ),
  nnkCall.newTree(
    newIdentNode("p"),
    newIdentNode("a"),
    newIdentNode("a")
  )
)
1.0.10 👎 FAIL

Output

Error: Command failed: nim c --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(6, 2) Error: ambiguous call; both temp.p(a: array[N, T], b: array[N, T]) [declared in /home/runner/work/Nim/Nim/temp.nim(1, 6)] and temp.p(x: array[0..<invalid value>, T], y: array[0..<invalid value>, T]) [declared in /home/runner/work/Nim/Nim/temp.nim(3, 6)] match for: (array[0..4, int], array[0..4, int])

IR

Compiled filesize 0 (0 bytes)

Stats

  • Started 2024-07-11T15:57:08
  • Finished 2024-07-11T15:57:08
  • Duration

AST

nnkStmtList.newTree(
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("a"),
        newIdentNode("b"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkFuncDef.newTree(
    newIdentNode("p"),
    newEmptyNode(),
    nnkGenericParams.newTree(
      nnkIdentDefs.newTree(
        newIdentNode("N"),
        nnkCommand.newTree(
          newIdentNode("static"),
          newIdentNode("int")
        ),
        newEmptyNode()
      ),
      nnkIdentDefs.newTree(
        newIdentNode("T"),
        newEmptyNode(),
        newEmptyNode()
      )
    ),
    nnkFormalParams.newTree(
      newEmptyNode(),
      nnkIdentDefs.newTree(
        newIdentNode("x"),
        newIdentNode("y"),
        nnkBracketExpr.newTree(
          newIdentNode("array"),
          newIdentNode("N"),
          newIdentNode("T")
        ),
        newEmptyNode()
      )
    ),
    newEmptyNode(),
    newEmptyNode(),
    nnkStmtList.newTree(
      nnkDiscardStmt.newTree(
        newEmptyNode()
      )
    )
  ),
  nnkVarSection.newTree(
    nnkIdentDefs.newTree(
      newIdentNode("a"),
      nnkBracketExpr.newTree(
        newIdentNode("array"),
        newLit(5),
        newIdentNode("int")
      ),
      newEmptyNode()
    )
  ),
  nnkCall.newTree(
    newIdentNode("p"),
    newIdentNode("a"),
    newIdentNode("a")
  )
)
Stats
  • GCC 11.4.0
  • Clang 14.0.0
  • NodeJS 20.3
  • Created 2024-07-11T15:56:19Z
  • Comments 2
  • Commands nim c --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim

🤖 Bug found in 23 minutes bisecting 8 commits at 0 commits per second

@narimiran
Copy link
Member Author

Fixed in #23824

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants