Nim
Nim copied to clipboard
Generic inheritance matching gives `type mismatch` when object has members
Description
type
InternalFutureBase* = object of RootObj
FutureBase* = ref object of InternalFutureBase
Future[T] = ref object of FutureBase
internalValue*: T # Comment to make it work
B[T, E] = ref object of Future[T]
proc myproc[F: Future](futs: seq[F]) = discard
macro checkFutures*[F: Future](futs: seq[F]) =
discard
var v: seq[B[void, void]]
myproc(v)
checkFutures(v)
Nim Version
1.6.16, devel
Current Output
/testit.nim(18, 7) Error: type mismatch
Expression: myproc(v)
[1] v: seq[B[system.void, system.void]]
Expected one of (first mismatch at [position]):
[1] proc myproc[F: Future](futs: seq[F])
Expected Output
No response
Possible Solution
No response
Additional Information
No response
!nim c
type
InternalFutureBase* = object of RootObj
FutureBase* = ref object of InternalFutureBase
Future[T] = ref object of FutureBase
internalValue*: T # Comment to make it work
B[T, E] = ref object of Future[T]
proc myproc[F: Future](futs: seq[F]) = discard
macro checkFutures*[F: Future](futs: seq[F]) =
discard
var v: seq[B[void, void]]
myproc(v)
checkFutures(v)
:penguin: Linux bisect by @ringabout (member)
devel :-1: 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(11, 7) Error: type mismatch
Expression: myproc(v)
[1] v: seq[B[system.void, system.void]]
Expected one of (first mismatch at [position]):
[1] proc myproc[F: Future](futs: seq[F])
assertions.nim(34) raiseAssert
Error: unhandled exception: errGenerated [AssertionDefect]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2023-11-16T12:28:45 - Finished
2023-11-16T12:28:45 - Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("InternalFutureBase")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
newEmptyNode()
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FutureBase")
),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("InternalFutureBase")
),
newEmptyNode()
)
)
),
nnkTypeDef.newTree(
newIdentNode("Future"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("FutureBase")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("internalValue")
),
newIdentNode("T"),
newEmptyNode()
)
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("B"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newIdentNode("E"),
newEmptyNode(),
newEmptyNode()
)
),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
nnkBracketExpr.newTree(
newIdentNode("Future"),
newIdentNode("T")
)
),
newEmptyNode()
)
)
)
),
nnkProcDef.newTree(
newIdentNode("myproc"),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newIdentNode("Future"),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("futs"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("F")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkMacroDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("checkFutures")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newIdentNode("Future"),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("futs"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("F")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
nnkBracketExpr.newTree(
newIdentNode("B"),
newIdentNode("void"),
newIdentNode("void")
)
),
newEmptyNode()
)
),
nnkCall.newTree(
newIdentNode("myproc"),
newIdentNode("v")
),
nnkCall.newTree(
newIdentNode("checkFutures"),
newIdentNode("v")
)
)
stable :-1: 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(11, 7) Error: type mismatch
Expression: myproc(v)
[1] v: seq[B[system.void, system.void]]
Expected one of (first mismatch at [position]):
[1] proc myproc[F: Future](futs: seq[F])
assertions.nim(34) raiseAssert
Error: unhandled exception: options.nim(664, 5) `false` errGenerated [AssertionDefect]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2023-11-16T12:28:46 - Finished
2023-11-16T12:28:46 - Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("InternalFutureBase")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
newEmptyNode()
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FutureBase")
),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("InternalFutureBase")
),
newEmptyNode()
)
)
),
nnkTypeDef.newTree(
newIdentNode("Future"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("FutureBase")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("internalValue")
),
newIdentNode("T"),
newEmptyNode()
)
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("B"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newIdentNode("E"),
newEmptyNode(),
newEmptyNode()
)
),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
nnkBracketExpr.newTree(
newIdentNode("Future"),
newIdentNode("T")
)
),
newEmptyNode()
)
)
)
),
nnkProcDef.newTree(
newIdentNode("myproc"),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newIdentNode("Future"),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("futs"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("F")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkMacroDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("checkFutures")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newIdentNode("Future"),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("futs"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("F")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
nnkBracketExpr.newTree(
newIdentNode("B"),
newIdentNode("void"),
newIdentNode("void")
)
),
newEmptyNode()
)
),
nnkCall.newTree(
newIdentNode("myproc"),
newIdentNode("v")
),
nnkCall.newTree(
newIdentNode("checkFutures"),
newIdentNode("v")
)
)
2.0.0 :-1: 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(11, 7) Error: type mismatch
Expression: myproc(v)
[1] v: seq[B[system.void, system.void]]
Expected one of (first mismatch at [position]):
[1] proc myproc[F: Future](futs: seq[F])
assertions.nim(34) raiseAssert
Error: unhandled exception: options.nim(664, 5) `false` errGenerated [AssertionDefect]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2023-11-16T12:28:46 - Finished
2023-11-16T12:28:46 - Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("InternalFutureBase")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
newEmptyNode()
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FutureBase")
),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("InternalFutureBase")
),
newEmptyNode()
)
)
),
nnkTypeDef.newTree(
newIdentNode("Future"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("FutureBase")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("internalValue")
),
newIdentNode("T"),
newEmptyNode()
)
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("B"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newIdentNode("E"),
newEmptyNode(),
newEmptyNode()
)
),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
nnkBracketExpr.newTree(
newIdentNode("Future"),
newIdentNode("T")
)
),
newEmptyNode()
)
)
)
),
nnkProcDef.newTree(
newIdentNode("myproc"),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newIdentNode("Future"),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("futs"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("F")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkMacroDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("checkFutures")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newIdentNode("Future"),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("futs"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("F")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
nnkBracketExpr.newTree(
newIdentNode("B"),
newIdentNode("void"),
newIdentNode("void")
)
),
newEmptyNode()
)
),
nnkCall.newTree(
newIdentNode("myproc"),
newIdentNode("v")
),
nnkCall.newTree(
newIdentNode("checkFutures"),
newIdentNode("v")
)
)
1.6.14 :-1: 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(11, 7) Error: type mismatch: got <seq[B[system.void, system.void]]>
but expected one of:
proc myproc[F: Future](futs: seq[F])
first type mismatch at position: 1
required type for futs: seq[F: Future]
but expression 'v' is of type: seq[B[system.void, system.void]]
expression: myproc(v)
fatal.nim(54) sysFatal
Error: unhandled exception: options.nim(645, 14) `false` errGenerated [AssertionDefect]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2023-11-16T12:28:50 - Finished
2023-11-16T12:28:51 - Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("InternalFutureBase")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
newEmptyNode()
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FutureBase")
),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("InternalFutureBase")
),
newEmptyNode()
)
)
),
nnkTypeDef.newTree(
newIdentNode("Future"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("FutureBase")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("internalValue")
),
newIdentNode("T"),
newEmptyNode()
)
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("B"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newIdentNode("E"),
newEmptyNode(),
newEmptyNode()
)
),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
nnkBracketExpr.newTree(
newIdentNode("Future"),
newIdentNode("T")
)
),
newEmptyNode()
)
)
)
),
nnkProcDef.newTree(
newIdentNode("myproc"),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newIdentNode("Future"),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("futs"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("F")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkMacroDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("checkFutures")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newIdentNode("Future"),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("futs"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("F")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
nnkBracketExpr.newTree(
newIdentNode("B"),
newIdentNode("void"),
newIdentNode("void")
)
),
newEmptyNode()
)
),
nnkCall.newTree(
newIdentNode("myproc"),
newIdentNode("v")
),
nnkCall.newTree(
newIdentNode("checkFutures"),
newIdentNode("v")
)
)
1.4.8 :-1: 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(11, 7) Error: type mismatch: got <seq[B[system.void, system.void]]>
but expected one of:
proc myproc[F: Future](futs: seq[F])
first type mismatch at position: 1
required type for futs: seq[F: Future]
but expression 'v' is of type: seq[B[system.void, system.void]]
expression: myproc(v)
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2023-11-16T12:28:53 - Finished
2023-11-16T12:28:53 - Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("InternalFutureBase")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
newEmptyNode()
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FutureBase")
),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("InternalFutureBase")
),
newEmptyNode()
)
)
),
nnkTypeDef.newTree(
newIdentNode("Future"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("FutureBase")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("internalValue")
),
newIdentNode("T"),
newEmptyNode()
)
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("B"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newIdentNode("E"),
newEmptyNode(),
newEmptyNode()
)
),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
nnkBracketExpr.newTree(
newIdentNode("Future"),
newIdentNode("T")
)
),
newEmptyNode()
)
)
)
),
nnkProcDef.newTree(
newIdentNode("myproc"),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newIdentNode("Future"),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("futs"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("F")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkMacroDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("checkFutures")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newIdentNode("Future"),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("futs"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("F")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
nnkBracketExpr.newTree(
newIdentNode("B"),
newIdentNode("void"),
newIdentNode("void")
)
),
newEmptyNode()
)
),
nnkCall.newTree(
newIdentNode("myproc"),
newIdentNode("v")
),
nnkCall.newTree(
newIdentNode("checkFutures"),
newIdentNode("v")
)
)
1.2.18 :-1: 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(11, 7) Error: type mismatch: got <seq[B[system.void, system.void]]>
but expected one of:
proc myproc[F: Future](futs: seq[F])
first type mismatch at position: 1
required type for futs: seq[F: Future]
but expression 'v' is of type: seq[B[system.void, system.void]]
expression: myproc(v)
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2023-11-16T12:28:56 - Finished
2023-11-16T12:28:56 - Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("InternalFutureBase")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
newEmptyNode()
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FutureBase")
),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("InternalFutureBase")
),
newEmptyNode()
)
)
),
nnkTypeDef.newTree(
newIdentNode("Future"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("FutureBase")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("internalValue")
),
newIdentNode("T"),
newEmptyNode()
)
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("B"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newIdentNode("E"),
newEmptyNode(),
newEmptyNode()
)
),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
nnkBracketExpr.newTree(
newIdentNode("Future"),
newIdentNode("T")
)
),
newEmptyNode()
)
)
)
),
nnkProcDef.newTree(
newIdentNode("myproc"),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newIdentNode("Future"),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("futs"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("F")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkMacroDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("checkFutures")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newIdentNode("Future"),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("futs"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("F")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
nnkBracketExpr.newTree(
newIdentNode("B"),
newIdentNode("void"),
newIdentNode("void")
)
),
newEmptyNode()
)
),
nnkCall.newTree(
newIdentNode("myproc"),
newIdentNode("v")
),
nnkCall.newTree(
newIdentNode("checkFutures"),
newIdentNode("v")
)
)
1.0.10 :-1: 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(11, 7) Error: type mismatch: got <seq[B[system.void, system.void]]>
but expected one of:
proc myproc[F: Future](futs: seq[F])
first type mismatch at position: 1
required type for futs: seq[F: Future]
but expression 'v' is of type: seq[B[system.void, system.void]]
expression: myproc(v)
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2023-11-16T12:28:59 - Finished
2023-11-16T12:28:59 - Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("InternalFutureBase")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
newEmptyNode()
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FutureBase")
),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("InternalFutureBase")
),
newEmptyNode()
)
)
),
nnkTypeDef.newTree(
newIdentNode("Future"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("FutureBase")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("internalValue")
),
newIdentNode("T"),
newEmptyNode()
)
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("B"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newIdentNode("E"),
newEmptyNode(),
newEmptyNode()
)
),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
nnkBracketExpr.newTree(
newIdentNode("Future"),
newIdentNode("T")
)
),
newEmptyNode()
)
)
)
),
nnkProcDef.newTree(
newIdentNode("myproc"),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newIdentNode("Future"),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("futs"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("F")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkMacroDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("checkFutures")
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newIdentNode("Future"),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("futs"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("F")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
nnkBracketExpr.newTree(
newIdentNode("B"),
newIdentNode("void"),
newIdentNode("void")
)
),
newEmptyNode()
)
),
nnkCall.newTree(
newIdentNode("myproc"),
newIdentNode("v")
),
nnkCall.newTree(
newIdentNode("checkFutures"),
newIdentNode("v")
)
)
Stats
- GCC
11.4.0 - Clang
14.0.0 - NodeJS
18.2 - Created
2023-11-16T12:28:10Z - Comments
1 - 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
:robot: Bug found in 17 minutes bisecting 7 commits at 0 commits per second