123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- discard """
- output: '''(repo: "", package: "meo", ext: "")
- doing shady stuff...
- 3
- 6
- (@[1], @[2])'''
- cmd: '''nim c --gc:arc --expandArc:newTarget --expandArc:delete --expandArc:p1 --expandArc:tt --hint:Performance:off $file'''
- nimout: '''--expandArc: newTarget
- var
- splat
- :tmp
- :tmp_1
- :tmp_2
- splat = splitFile(path)
- :tmp = splat.dir
- wasMoved(splat.dir)
- :tmp_1 = splat.name
- wasMoved(splat.name)
- :tmp_2 = splat.ext
- wasMoved(splat.ext)
- result = (
- let blitTmp = :tmp
- blitTmp,
- let blitTmp_1 = :tmp_1
- blitTmp_1,
- let blitTmp_2 = :tmp_2
- blitTmp_2)
- `=destroy`(splat)
- -- end of expandArc ------------------------
- --expandArc: delete
- var
- sibling
- saved
- `=copy`(sibling, target.parent.left)
- `=copy`(saved, sibling.right)
- `=copy`(sibling.right, saved.left)
- `=sink`(sibling.parent, saved)
- `=destroy`(sibling)
- -- end of expandArc ------------------------
- --expandArc: p1
- var
- lresult
- lvalue
- lnext
- _
- `=copy`(lresult, [123])
- _ = (
- let blitTmp = lresult
- blitTmp, ";")
- lvalue = _[0]
- lnext = _[1]
- `=sink`(result.value, move lvalue)
- `=destroy`(lnext)
- `=destroy_1`(lvalue)
- -- end of expandArc ------------------------
- --expandArc: tt
- var
- a
- :tmpD
- :tmpD_1
- :tmpD_2
- try:
- var it_cursor = x
- a = (
- wasMoved(:tmpD)
- `=copy`(:tmpD, it_cursor.key)
- :tmpD,
- wasMoved(:tmpD_1)
- `=copy`(:tmpD_1, it_cursor.val)
- :tmpD_1)
- echo [
- :tmpD_2 = `$`(a)
- :tmpD_2]
- finally:
- `=destroy`(:tmpD_2)
- `=destroy_1`(a)
- -- end of expandArc ------------------------'''
- """
- import os
- type Target = tuple[repo, package, ext: string]
- proc newTarget*(path: string): Target =
- let splat = path.splitFile
- result = (repo: splat.dir, package: splat.name, ext: splat.ext)
- echo newTarget("meo")
- type
- Node = ref object
- left, right, parent: Node
- value: int
- proc delete(target: var Node) =
- var sibling = target.parent.left # b3
- var saved = sibling.right # b3.right -> r4
- sibling.right = saved.left # b3.right -> r4.left = nil
- sibling.parent = saved # b3.parent -> r5 = r4
- #[after this proc:
- b 5
- / \
- b 3 b 6
- ]#
- #[before:
- r 5
- / \
- b 3 b 6 - to delete
- / \
- empty r 4
- ]#
- proc main =
- var five = Node(value: 5)
- var six = Node(value: 6)
- six.parent = five
- five.right = six
- var three = Node(value: 3)
- three.parent = five
- five.left = three
- var four = Node(value: 4)
- four.parent = three
- three.right = four
- echo "doing shady stuff..."
- delete(six)
- # need both of these echos
- echo five.left.value
- echo five.right.value
- main()
- type
- Maybe = object
- value: seq[int]
- proc p1(): Maybe =
- let lresult = @[123]
- var lvalue: seq[int]
- var lnext: string
- (lvalue, lnext) = (lresult, ";")
- result.value = move lvalue
- proc tissue15130 =
- doAssert p1().value == @[123]
- tissue15130()
- type
- KeyValue = tuple[key, val: seq[int]]
- proc tt(x: KeyValue) =
- var it = x
- let a = (it.key, it.val)
- echo a
- proc encodedQuery =
- var query: seq[KeyValue]
- query.add (key: @[1], val: @[2])
- for elem in query:
- elem.tt()
- encodedQuery()
- # bug #15147
- proc s(input: string): (string, string) =
- result = (";", "")
- proc charmatch(input: string): (string, string) =
- result = ("123", input[0 .. input.high])
- proc plus(input: string) =
- var
- lvalue, rvalue: string # cursors
- lnext: string # must be cursor!!!
- rnext: string # cursor
- let lresult = charmatch(input)
- (lvalue, lnext) = lresult
- let rresult = s(lnext)
- (rvalue, rnext) = rresult
- plus("123;")
|