mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
* ttables: smaller table, 5x speedup * thavlak: less iterations, less loops; 30% speedup * tasyncclosestall: shorter timeout; 35% speedup * gcleak4: less iterations, 2x speedup * ttimes: remove deprecated stuff * tdangerisrelease: remove cpp backend, 3x speedup * tfrexp1: smaller range, 2x speedup * trtree: fix warnings, less iterations, 6x speedup * tasyncawait_cyclebreaker: smaller swarm size; 2x speedup * trealloc: smaller number of iterations; 10x speedup * towned_binary_tree: less iterations, 4x speedup * tclosure: remove unused code, less iterations; 2x speedup * twaitany: less durations; 1.4x speedup * tasync_misc: less iterations, 2x speedup * t8535: smaller sleep, 1.5x speedup * tmanyjoin: smaller sleep, 2x speedup * t12221: shorter sleeps, removed two slower tests; 1.6x speedup * tfuturestream: smaller sleep; 1.5x speedup * growobjcrash: less iterations; 2x speedup * ttryrecv: smaller sleep; 1.5x speedup * treusetvar: less threads; 2x speedup * delete tthreadanalysis2, basically a duplicate of tthreadanalysis * t7758: less iterations, 1.5x speedup * tasyncawait: smaller swarm, less messages; 1.5x speedup * tjsandnativeasync: smaller sleep, 1.5x speedup * tpendingcheck: smaller sleep, 1.5x speedup * remove rodfiles test category * move tseq from its own category to 'collections' category * remove unneeded tests and helpers from 'assert' category * stdlib: merge tbitops2 into tbitops * remove 'trepr2' from 'stdlib' cat * merge 'tstreams' into one file * remove 'tinefficient_const_table' from 'ccbugs' cat * merge 'tcollections_to_string' into 'tcollections' * tblocking_channel: smaller sleep, small speedup * tconvexhull: less iterartions; 1.2x speedup * merge 'tdeepcopy2' into 'tdeepcopy' * merge 'tdisjoint_slice2' into 'tdisjoint_slice1' * tmissing_deepcopy: smaller sequence * tsendtwice: smaller arrays; 5x speedup * remove 'tindexerrorformatbounds' * disable multimethod tests * remove 'gc:none' and 'refc' without 'd:useRealtimeGC' from gc tests * koch.nim: bootstrap just with '-d:release', no need for 'csource' * add github workflow for documentation * testament: no need for 8 sub-second decimals
97 lines
1.8 KiB
Nim
97 lines
1.8 KiB
Nim
discard """
|
|
output: '''
|
|
collide: unit, thing
|
|
collide: unit, thing
|
|
collide: thing, unit
|
|
collide: thing, thing
|
|
collide: unit, thing |
|
|
collide: unit, thing |
|
|
collide: thing, unit |
|
|
do nothing
|
|
'''
|
|
joinable: false
|
|
disabled: true
|
|
"""
|
|
|
|
|
|
# tmultim2
|
|
type
|
|
TThing = object {.inheritable.}
|
|
TUnit = object of TThing
|
|
x: int
|
|
TParticle = object of TThing
|
|
a, b: int
|
|
|
|
method collide(a, b: TThing) {.base, inline.} =
|
|
echo "collide: thing, thing"
|
|
|
|
method collide(a: TThing, b: TUnit) {.inline.} =
|
|
echo "collide: thing, unit"
|
|
|
|
method collide(a: TUnit, b: TThing) {.inline.} =
|
|
echo "collide: unit, thing"
|
|
|
|
proc test(a, b: TThing) {.inline.} =
|
|
collide(a, b)
|
|
|
|
proc staticCollide(a, b: TThing) {.inline.} =
|
|
procCall collide(a, b)
|
|
|
|
var
|
|
a: TThing
|
|
b, c: TUnit
|
|
collide(b, c) # ambiguous (unit, thing) or (thing, unit)? -> prefer unit, thing!
|
|
test(b, c)
|
|
collide(a, b)
|
|
staticCollide(a, b)
|
|
|
|
|
|
|
|
# tmultim6
|
|
type
|
|
Thing = object {.inheritable.}
|
|
Unit[T] = object of Thing
|
|
x: T
|
|
Particle = object of Thing
|
|
a, b: int
|
|
|
|
method collide(a, b: Thing) {.base, inline.} =
|
|
quit "to override!"
|
|
|
|
method collide[T](a: Thing, b: Unit[T]) {.inline.} =
|
|
echo "collide: thing, unit |"
|
|
|
|
method collide[T](a: Unit[T], b: Thing) {.inline.} =
|
|
echo "collide: unit, thing |"
|
|
|
|
proc test(a, b: Thing) {.inline.} =
|
|
collide(a, b)
|
|
|
|
var
|
|
aaa: Thing
|
|
bbb, ccc: Unit[string]
|
|
collide(bbb, Thing(ccc))
|
|
test(bbb, ccc)
|
|
collide(aaa, bbb)
|
|
|
|
|
|
|
|
# tmethods1
|
|
method somethin(obj: RootObj) {.base.} =
|
|
echo "do nothing"
|
|
|
|
type
|
|
TNode* = object {.inheritable.}
|
|
PNode* = ref TNode
|
|
|
|
PNodeFoo* = ref object of TNode
|
|
|
|
TSomethingElse = object
|
|
PSomethingElse = ref TSomethingElse
|
|
|
|
method foo(a: PNode, b: PSomethingElse) {.base.} = discard
|
|
method foo(a: PNodeFoo, b: PSomethingElse) = discard
|
|
|
|
var o: RootObj
|
|
o.somethin()
|