Files
Nim/compiler
ee7 e8657c7107 make implicit cstring conversions explicit (#19488)
The Nim manual says that an implicit conversion to cstring will
eventually not be allowed [1]:

    A Nim `string` is implicitly convertible to `cstring` for convenience.

    [...]

    Even though the conversion is implicit, it is not *safe*: The garbage collector
    does not consider a `cstring` to be a root and may collect the underlying
    memory. For this reason, the implicit conversion will be removed in future
    releases of the Nim compiler. Certain idioms like conversion of a `const` string
    to `cstring` are safe and will remain to be allowed.

And from Nim 1.6.0, such a conversion triggers a warning [2]:

    A dangerous implicit conversion to `cstring` now triggers a `[CStringConv]` warning.
    This warning will become an error in future versions! Use an explicit conversion
    like `cstring(x)` in order to silence the warning.

However, some files in this repo produced such a warning. For example,
before this commit, compiling `parsejson.nim` would produce:

    /foo/Nim/lib/pure/parsejson.nim(221, 37) Warning: implicit conversion to 'cstring' from a non-const location: my.buf; this will become a compile time error in the future [CStringConv]
    /foo/Nim/lib/pure/parsejson.nim(231, 39) Warning: implicit conversion to 'cstring' from a non-const location: my.buf; this will become a compile time error in the future [CStringConv]

This commit resolves the most visible `CStringConv` warnings, making the
cstring conversions explicit.

[1] https://github.com/nim-lang/Nim/blob/d2318d9ccfe6/doc/manual.md#cstring-type
[2] https://github.com/nim-lang/Nim/blob/d2318d9ccfe6/changelogs/changelog_1_6_0.md#type-system
2022-08-19 15:40:53 -04:00
..
2021-01-07 20:26:40 +01:00
2022-03-20 14:02:44 +01:00
2022-08-19 13:42:08 +02:00
2021-03-19 16:53:38 +01:00
2022-06-10 20:32:27 +02:00
2021-11-02 16:30:59 +01:00
2017-01-07 22:35:09 +01:00
2022-03-23 20:34:53 +01:00
2019-11-28 17:13:04 +01:00
2022-03-23 20:34:53 +01:00
2021-05-20 15:48:46 +02:00
2021-01-12 09:36:51 +01:00
2022-03-23 20:34:53 +01:00
2019-09-27 07:02:54 +02:00
2022-01-04 11:10:46 +01:00
2022-07-15 19:56:05 +02:00
2021-01-07 20:26:40 +01:00
2021-04-07 19:54:28 +02:00
2022-07-15 12:37:08 +02:00
2020-11-10 21:53:25 +01:00
2022-07-26 16:51:01 +02:00

Nim Compiler

  • This directory contains the Nim compiler written in Nim.
  • Note that this code has been translated from a bootstrapping version written in Pascal.
  • So the code is not a poster child of good Nim code.

See Internals of the Nim Compiler for more information.