Nim/tests/lent/t16898.nim
flywind e406e28738
fix #16898 #17621 (#17628)
* fix #16898
* fix #17621

* Update compiler/semtypes.nim
2021-04-06 18:01:54 +02:00

31 lines
729 B
Nim

discard """
errormsg: "invalid type: 'lent QuadraticExt' in this context: 'proc (r: var QuadraticExt, a: lent QuadraticExt, b: lent QuadraticExt){.noSideEffect, gcsafe, locks: 0.}' for proc"
"""
# bug #16898
type
Fp[N: static int, T] = object
big: array[N, T]
type
QuadraticExt* = concept x
## Quadratic Extension concept (like complex)
type BaseField = auto
x.c0 is BaseField
x.c1 is BaseField
{.experimental:"views".}
func prod(r: var QuadraticExt, a, b: lent QuadraticExt) =
discard
type
Fp2[N: static int, T] = object
c0, c1: Fp[N, T]
# This should be passed by reference,
# but concepts do not respect the 24 bytes rule
# or `byref` pragma.
var r, a, b: Fp2[6, uint64]
prod(r, a, b)