Commit graph

7 commits

Author SHA1 Message Date
Timothee Cour
8ee0eda841
fix #12282 distinct now does not create erroneous copy in VM (#17594) 2021-03-31 10:15:08 +02:00
Ivan Bobev
3c85aa9e53
Make {.requiresInit.} to work for distinct types (#15869)
Make `requiresInit` pragma to work for distinct types in addition to
objects. Tagging of distinct types with `requiresInit` pragma was
already supported, but its impact wasn't applied. Now its behavior when
applied on distinct types is as follows.

Given the following distinct type definitions:

  ```nim
  type
    DistinctObject {.requiresInit, borrow: `.`.} = distinct MyObject
    DistinctString {.requiresInit.} = distinct string
  ```

The following code blocks will fail to compile:

  ```nim
  var foo: DistinctFoo
  foo.x = "test"
  doAssert foo.x == "test"
  ```

  ```nim
  var s: DistinctString
  s = "test"
  doAssert s == "test"
  ```

But these ones will compile successfully:

  ```nim
  let foo = DistinctFoo(Foo(x: "test"))
  doAssert foo.x == "test"
  ```

  ```nim
  let s = "test"
  doAssert s == "test"
  ```
2020-11-06 18:56:09 +00:00
Andreas Rumpf
de1ede77fe
fixes #11715 (#11721) 2019-07-13 07:55:56 +02:00
Andreas Rumpf
1e97b420bb
fixes #7167 (#11300)
* fixes #7167
* spec: distinct types can be ordinal types
* bootstrapping issue
2019-05-22 11:50:05 +02:00
Arne Döring
a5ecbf823f lots of small changes 2018-12-11 21:23:22 +01:00
Araq
f8e805a614 fixes #2760 2018-10-15 10:43:56 +02:00
Miran
3c9fcc4c30 Merge tests into a larger file (part 2 of ∞) (#9335)
* merge controlflow tests

* merge distinct tests

* merge enum tests

* merge fields tests

* merge implicit tests

* merge iter issues tests
2018-10-13 14:58:31 +02:00