diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/typerel/t4799.nim | 82 | ||||
-rw-r--r-- | tests/typerel/t4799_2.nim | 12 | ||||
-rw-r--r-- | tests/typerel/t4799_3.nim | 12 | ||||
-rw-r--r-- | tests/typerel/t4799_4.nim | 23 | ||||
-rw-r--r-- | tests/typerel/t4799_5.nim | 23 | ||||
-rw-r--r-- | tests/typerel/t4799_6.nim | 20 | ||||
-rw-r--r-- | tests/typerel/t4799_7.nim | 20 |
7 files changed, 87 insertions, 105 deletions
diff --git a/tests/typerel/t4799.nim b/tests/typerel/t4799.nim index f1c283165..89312950f 100644 --- a/tests/typerel/t4799.nim +++ b/tests/typerel/t4799.nim @@ -142,7 +142,7 @@ block test_t4799_6: #doAssert(testS([b, c, a]) == "rc2rd3base1") #doAssert(testS([c, b, a]) == "rd3rc2base1") -proc test_inproc() = +proc test_inproc() = block test_inproc_1: var rgv = GRBase[int](val: 3) var rgc = GRC[int](val: 4) @@ -153,7 +153,7 @@ proc test_inproc() = doAssert(testGR([rgb, rgc, rgv]) == "243") doAssert(testGR([rgc, rgv, rgb]) == "432") doAssert(testGR([rgv, rgb, rgc]) == "324") - + block test_inproc_2: var pgv = PRBase[int](val: 3) var pgc = PRC[int](val: 4) @@ -164,6 +164,82 @@ proc test_inproc() = doAssert(testPR([pgb.addr, pgc.addr, pgv.addr]) == "243") doAssert(testPR([pgc.addr, pgv.addr, pgb.addr]) == "432") doAssert(testPR([pgv.addr, pgb.addr, pgc.addr]) == "324") - + test_inproc() + +template reject(x) = + static: assert(not compiles(x)) + +block test_t4799_7: + type + Vehicle[T] = ref object of RootObj + tire: T + Car[T] = object of Vehicle[T] + Bike[T] = object of Vehicle[T] + + proc testVehicle[T](x: varargs[Vehicle[T]]): string {.used.} = + result = "" + for c in x: + result.add $c.tire + + var v = Vehicle[int](tire: 3) + var c = Car[int](tire: 4) + var b = Bike[int](tire: 2) + + reject: + echo testVehicle b, c, v + +block test_t4799_8: + type + Vehicle = ref object of RootObj + tire: int + Car = object of Vehicle + Bike = object of Vehicle + + proc testVehicle(x: varargs[Vehicle]): string {.used.} = + result = "" + for c in x: + result.add $c.tire + + var v = Vehicle(tire: 3) + var c = Car(tire: 4) + var b = Bike(tire: 2) + + reject: + echo testVehicle b, c, v + +type + PGVehicle[T] = ptr object of RootObj + tire: T + PGCar[T] = object of PGVehicle[T] + PGBike[T] = object of PGVehicle[T] + +proc testVehicle[T](x: varargs[PGVehicle[T]]): string {.used.} = + result = "" + for c in x: + result.add $c.tire + +var pgc = PGCar[int](tire: 4) +var pgb = PGBike[int](tire: 2) + +reject: + echo testVehicle pgb, pgc + +type + RVehicle = ptr object of RootObj + tire: int + RCar = object of RVehicle + RBike = object of RVehicle + +proc testVehicle(x: varargs[RVehicle]): string {.used.} = + result = "" + for c in x: + result.add $c.tire + +var rc = RCar(tire: 4) +var rb = RBike(tire: 2) + +reject: + echo testVehicle rb, rc + echo "OK" diff --git a/tests/typerel/t4799_2.nim b/tests/typerel/t4799_2.nim index 191a40469..cfd399a6e 100644 --- a/tests/typerel/t4799_2.nim +++ b/tests/typerel/t4799_2.nim @@ -1,14 +1,10 @@ discard """ -errormsg: "type mismatch: got <Bike[system.int]>" -nimout: '''t4799_2.nim(24, 18) Error: type mismatch: got <Bike[system.int]> -but expected one of: -proc testVehicle[T](x: varargs[Vehicle[T]]): string - -expression: testVehicle b''' + outputsub: '''ObjectAssignmentError''' + exitcode: "1" """ type - Vehicle[T] = ref object of RootObj + Vehicle[T] = object of RootObj tire: T Car[T] = object of Vehicle[T] Bike[T] = object of Vehicle[T] @@ -21,4 +17,4 @@ proc testVehicle[T](x: varargs[Vehicle[T]]): string = var v = Vehicle[int](tire: 3) var c = Car[int](tire: 4) var b = Bike[int](tire: 2) -echo testVehicle b, c, v +echo testVehicle([b, c, v]) \ No newline at end of file diff --git a/tests/typerel/t4799_3.nim b/tests/typerel/t4799_3.nim index aa2ddac56..784eee8fc 100644 --- a/tests/typerel/t4799_3.nim +++ b/tests/typerel/t4799_3.nim @@ -1,14 +1,10 @@ discard """ -errormsg: "type mismatch: got <Bike>" -nimout: '''t4799_3.nim(24, 18) Error: type mismatch: got <Bike> -but expected one of: -proc testVehicle(x: varargs[Vehicle]): string - -expression: testVehicle b''' + outputsub: '''ObjectAssignmentError''' + exitcode: "1" """ type - Vehicle = ref object of RootObj + Vehicle = object of RootObj tire: int Car = object of Vehicle Bike = object of Vehicle @@ -21,4 +17,4 @@ proc testVehicle(x: varargs[Vehicle]): string = var v = Vehicle(tire: 3) var c = Car(tire: 4) var b = Bike(tire: 2) -echo testVehicle b, c, v \ No newline at end of file +echo testVehicle([b, c, v]) \ No newline at end of file diff --git a/tests/typerel/t4799_4.nim b/tests/typerel/t4799_4.nim deleted file mode 100644 index 52c45793c..000000000 --- a/tests/typerel/t4799_4.nim +++ /dev/null @@ -1,23 +0,0 @@ -discard """ -errormsg: "type mismatch: got <Bike[system.int]>" -nimout: '''t4799_4.nim(23, 18) Error: type mismatch: got <Bike[system.int]> -but expected one of: -proc testVehicle[T](x: varargs[Vehicle[T]]): string - -expression: testVehicle b''' -""" - -type - Vehicle[T] = ptr object of RootObj - tire: T - Car[T] = object of Vehicle[T] - Bike[T] = object of Vehicle[T] - -proc testVehicle[T](x: varargs[Vehicle[T]]): string = - result = "" - for c in x: - result.add $c.tire - -var c = Car[int](tire: 4) -var b = Bike[int](tire: 2) -echo testVehicle b, c \ No newline at end of file diff --git a/tests/typerel/t4799_5.nim b/tests/typerel/t4799_5.nim deleted file mode 100644 index 8c7fdc313..000000000 --- a/tests/typerel/t4799_5.nim +++ /dev/null @@ -1,23 +0,0 @@ -discard """ -errormsg: "type mismatch: got <Bike>" -nimout: '''t4799_5.nim(23, 18) Error: type mismatch: got <Bike> -but expected one of: -proc testVehicle(x: varargs[Vehicle]): string - -expression: testVehicle b''' -""" - -type - Vehicle = ptr object of RootObj - tire: int - Car = object of Vehicle - Bike = object of Vehicle - -proc testVehicle(x: varargs[Vehicle]): string = - result = "" - for c in x: - result.add $c.tire - -var c = Car(tire: 4) -var b = Bike(tire: 2) -echo testVehicle b, c \ No newline at end of file diff --git a/tests/typerel/t4799_6.nim b/tests/typerel/t4799_6.nim deleted file mode 100644 index cfd399a6e..000000000 --- a/tests/typerel/t4799_6.nim +++ /dev/null @@ -1,20 +0,0 @@ -discard """ - outputsub: '''ObjectAssignmentError''' - exitcode: "1" -""" - -type - Vehicle[T] = object of RootObj - tire: T - Car[T] = object of Vehicle[T] - Bike[T] = object of Vehicle[T] - -proc testVehicle[T](x: varargs[Vehicle[T]]): string = - result = "" - for c in x: - result.add $c.tire - -var v = Vehicle[int](tire: 3) -var c = Car[int](tire: 4) -var b = Bike[int](tire: 2) -echo testVehicle([b, c, v]) \ No newline at end of file diff --git a/tests/typerel/t4799_7.nim b/tests/typerel/t4799_7.nim deleted file mode 100644 index 784eee8fc..000000000 --- a/tests/typerel/t4799_7.nim +++ /dev/null @@ -1,20 +0,0 @@ -discard """ - outputsub: '''ObjectAssignmentError''' - exitcode: "1" -""" - -type - Vehicle = object of RootObj - tire: int - Car = object of Vehicle - Bike = object of Vehicle - -proc testVehicle(x: varargs[Vehicle]): string = - result = "" - for c in x: - result.add $c.tire - -var v = Vehicle(tire: 3) -var c = Car(tire: 4) -var b = Bike(tire: 2) -echo testVehicle([b, c, v]) \ No newline at end of file |