12345678910111213141516171819202122232425262728293031323334 |
- discard """
- disabled: true
- 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) =
- 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], "##"
|