mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-10 23:15:02 +00:00
@@ -1059,6 +1059,13 @@ proc liftParamType(c: PContext, procKind: TSymKind, genericParams: PNode,
|
||||
# disable the bindOnce behavior for the type class
|
||||
result = recurse(paramType.base, true)
|
||||
|
||||
of tyTuple:
|
||||
for i in 0..<paramType.len:
|
||||
let t = recurse(paramType[i])
|
||||
if t != nil:
|
||||
paramType[i] = t
|
||||
result = paramType
|
||||
|
||||
of tyAlias, tyOwned, tySink:
|
||||
result = recurse(paramType.base)
|
||||
|
||||
|
||||
@@ -28,3 +28,27 @@ aa.x = 666
|
||||
|
||||
p aa
|
||||
q aa
|
||||
|
||||
|
||||
#-------------------------------------------------------------
|
||||
# issue #16651
|
||||
type
|
||||
PointTup = tuple
|
||||
x: float32
|
||||
y: float32
|
||||
|
||||
converter tupleToPoint[T1, T2: SomeFloat](self: tuple[x: T1, y: T2]): PointTup =
|
||||
result = (self.x.float32, self.y.float32)
|
||||
|
||||
proc tupleToPointX(self: tuple[x: SomeFloat, y: SomeFloat]): PointTup =
|
||||
result = (self.x.float32, self.y.float32)
|
||||
|
||||
proc tupleToPointX2(self: tuple[x: SomeFloat, y: distinct SomeFloat]): PointTup =
|
||||
result = (self.x.float32, self.y.float32)
|
||||
|
||||
var t1: PointTup = tupleToPointX((1.0, 0.0))
|
||||
var t2: PointTup = tupleToPointX2((1.0, 0.0))
|
||||
var t3: PointTup = tupleToPointX2((1.0'f32, 0.0))
|
||||
var t4: PointTup = tupleToPointX2((1.0, 0.0'f32))
|
||||
|
||||
var x2: PointTup = (1.0, 0.0)
|
||||
Reference in New Issue
Block a user