123456789101112131415161718192021222324252627282930313233 |
- discard """
- output: "####"
- """
- # unfortunately our tester doesn't support multiple lines of compiler
- # error messages yet...
- # bug #1562
- type Foo* {.pure, final.} = object
- elt: float
- template defineOpAssign(T, op: untyped) {.immediate.} =
- proc op*(v: var T, w: T) {.inline.} =
- for i in 0..1:
- op(v.elt, w.elt)
- const ATTEMPT = 0
- when ATTEMPT == 0:
- # FAILS: defining `/=` with template calling template
- # ERROR about sem.nim line 144
- template defineOpAssigns(T: untyped) =
- mixin `/=`
- defineOpAssign(T, `/=`)
- defineOpAssigns(Foo)
- # bug #1543
- import sequtils
- (var i = @[""];i).applyIt(it)
- # now works:
- echo "##", i[0], "##"
|