1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- discard """
- output: '''
- tdiscardable
- 1
- 1
- something defered
- something defered
- '''
- """
- echo "tdiscardable"
- # Test the discardable pragma
- proc p(x, y: int): int {.discardable.} =
- return x + y
- # test that it is inherited from generic procs too:
- proc q[T](x, y: T): T {.discardable.} =
- return x + y
- p(8, 2)
- q[float](0.8, 0.2)
- # bug #942
- template maybeMod(x: SomeInteger, module: Natural): untyped =
- if module > 0: x mod module
- else: x
- proc foo(b: int):int =
- var x = 1
- result = x.maybeMod(b) # Works fine
- proc bar(b: int):int =
- result = 1
- result = result.maybeMod(b) # Error: value returned by statement has to be discarded
- echo foo(0)
- echo bar(0)
- # bug #9726
- proc foo: (proc: int) =
- proc bar: int = 1
- return bar
- discard foo()
- # bug #10842
- proc myDiscardable(): int {.discardable.} =
- discard
- proc main1() =
- defer:
- echo "something defered"
- discard myDiscardable()
- proc main2() =
- defer:
- echo "something defered"
- myDiscardable()
- main1()
- main2()
|