issue a warning for ptr to cstring conversion[backport] (#20814)
* issue a warning for ptr to cstring conversion[backport] * add a changelog
This commit is contained in:
parent
6007a40eac
commit
8e1181bde5
3 changed files with 11 additions and 0 deletions
|
|
@ -96,6 +96,10 @@
|
||||||
- The `gorge`/`staticExec` calls will now return a descriptive message in the output
|
- The `gorge`/`staticExec` calls will now return a descriptive message in the output
|
||||||
if the execution fails for whatever reason. To get back legacy behaviour use `-d:nimLegacyGorgeErrors`.
|
if the execution fails for whatever reason. To get back legacy behaviour use `-d:nimLegacyGorgeErrors`.
|
||||||
|
|
||||||
|
- Pointer to `cstring` conversion now triggers a `[PtrToCstringConv]` warning.
|
||||||
|
This warning will become an error in future versions! Use a `cast` operation
|
||||||
|
like `cast[cstring](x)` instead.
|
||||||
|
|
||||||
## Standard library additions and changes
|
## Standard library additions and changes
|
||||||
|
|
||||||
[//]: # "Changes:"
|
[//]: # "Changes:"
|
||||||
|
|
|
||||||
|
|
@ -80,6 +80,7 @@ type
|
||||||
warnAnyEnumConv = "AnyEnumConv",
|
warnAnyEnumConv = "AnyEnumConv",
|
||||||
warnHoleEnumConv = "HoleEnumConv",
|
warnHoleEnumConv = "HoleEnumConv",
|
||||||
warnCstringConv = "CStringConv",
|
warnCstringConv = "CStringConv",
|
||||||
|
warnPtrToCstringConv = "PtrToCstringConv",
|
||||||
warnEffect = "Effect",
|
warnEffect = "Effect",
|
||||||
warnCastSizes = "CastSizes"
|
warnCastSizes = "CastSizes"
|
||||||
warnTemplateRedefinition = "TemplateRedefinition",
|
warnTemplateRedefinition = "TemplateRedefinition",
|
||||||
|
|
@ -176,6 +177,7 @@ const
|
||||||
warnAnyEnumConv: "$1",
|
warnAnyEnumConv: "$1",
|
||||||
warnHoleEnumConv: "$1",
|
warnHoleEnumConv: "$1",
|
||||||
warnCstringConv: "$1",
|
warnCstringConv: "$1",
|
||||||
|
warnPtrToCstringConv: "unsafe conversion to 'cstring' from '$1'; this will become a compile time error in the future",
|
||||||
warnEffect: "$1",
|
warnEffect: "$1",
|
||||||
warnCastSizes: "$1",
|
warnCastSizes: "$1",
|
||||||
warnTemplateRedefinition: "template '$1' is implicitly redefined, consider adding an explicit .redefine pragma",
|
warnTemplateRedefinition: "template '$1' is implicitly redefined, consider adding an explicit .redefine pragma",
|
||||||
|
|
|
||||||
|
|
@ -1238,6 +1238,11 @@ proc track(tracked: PEffects, n: PNode) =
|
||||||
message(tracked.config, n.info, warnCstringConv,
|
message(tracked.config, n.info, warnCstringConv,
|
||||||
"implicit conversion to 'cstring' from a non-const location: $1; this will become a compile time error in the future" %
|
"implicit conversion to 'cstring' from a non-const location: $1; this will become a compile time error in the future" %
|
||||||
$n[1])
|
$n[1])
|
||||||
|
if n.typ.skipTypes(abstractInst).kind == tyCstring and
|
||||||
|
isCharArrayPtr(n[1].typ, true):
|
||||||
|
message(tracked.config, n.info, warnPtrToCstringConv,
|
||||||
|
$n[1].typ)
|
||||||
|
|
||||||
|
|
||||||
let t = n.typ.skipTypes(abstractInst)
|
let t = n.typ.skipTypes(abstractInst)
|
||||||
if t.kind == tyEnum:
|
if t.kind == tyEnum:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue