File: tinheritpartialgeneric.nim

package info (click to toggle)
nim 2.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,911,644 kB
  • sloc: sh: 24,603; ansic: 1,761; python: 1,492; makefile: 1,013; sql: 298; asm: 141; xml: 13
file content (43 lines) | stat: -rw-r--r-- 597 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
discard """
  output: '''(c: "hello", a: 10, b: 12.0)
(a: 15.5, b: "hello")
(a: 11.75, b: 123)'''
"""

# bug #5231
# generic object inheriting from
# partial specialized generic object
type
  Curve1[T, X] = object of RootObj
    a: T
    b: X

  Curve2[T] = Curve1[T, float64]

  Curve3[T] = object of Curve2[T]
    c: string

  Curve4[T] = Curve1[float64, T]

  Curve5[T] = object of Curve4[T]

  Curve6[T] = object of T

var x: Curve3[int]
x.a = 10
x.b = 12.0
x.c = "hello"

echo x

var y: Curve5[string]
y.b = "hello"
y.a = 15.5

echo y

var z: Curve6[Curve4[int]]
z.a = 11.75
z.b = 123

echo z