Warn about object case transitions at compile time (#11378)
This commit is contained in:
parent
4a35d2b571
commit
1255b3c864
2 changed files with 4 additions and 2 deletions
|
|
@ -1274,6 +1274,7 @@ proc genAsgn(p: BProc, e: PNode, fastAsgn: bool) =
|
||||||
else:
|
else:
|
||||||
genLineDir(p, e)
|
genLineDir(p, e)
|
||||||
asgnFieldDiscriminant(p, e)
|
asgnFieldDiscriminant(p, e)
|
||||||
|
message(p.config, e.info, warnCaseTransition)
|
||||||
|
|
||||||
proc genStmts(p: BProc, t: PNode) =
|
proc genStmts(p: BProc, t: PNode) =
|
||||||
var a: TLoc
|
var a: TLoc
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ type
|
||||||
warnEachIdentIsTuple,
|
warnEachIdentIsTuple,
|
||||||
warnProveInit, warnProveField, warnProveIndex, warnGcUnsafe, warnGcUnsafe2,
|
warnProveInit, warnProveField, warnProveIndex, warnGcUnsafe, warnGcUnsafe2,
|
||||||
warnUninit, warnGcMem, warnDestructor, warnLockLevel, warnResultShadowed,
|
warnUninit, warnGcMem, warnDestructor, warnLockLevel, warnResultShadowed,
|
||||||
warnInconsistentSpacing, warnUser,
|
warnInconsistentSpacing, warnCaseTransition, warnUser,
|
||||||
hintSuccess, hintSuccessX, hintCC,
|
hintSuccess, hintSuccessX, hintCC,
|
||||||
hintLineTooLong, hintXDeclaredButNotUsed, hintConvToBaseNotNeeded,
|
hintLineTooLong, hintXDeclaredButNotUsed, hintConvToBaseNotNeeded,
|
||||||
hintConvFromXtoItselfNotNeeded, hintExprAlwaysX, hintQuitCalled,
|
hintConvFromXtoItselfNotNeeded, hintExprAlwaysX, hintQuitCalled,
|
||||||
|
|
@ -90,6 +90,7 @@ const
|
||||||
warnLockLevel: "$1",
|
warnLockLevel: "$1",
|
||||||
warnResultShadowed: "Special variable 'result' is shadowed.",
|
warnResultShadowed: "Special variable 'result' is shadowed.",
|
||||||
warnInconsistentSpacing: "Number of spaces around '$#' is not consistent",
|
warnInconsistentSpacing: "Number of spaces around '$#' is not consistent",
|
||||||
|
warnCaseTransition: "Potential object case transition, instantiate new object instead",
|
||||||
warnUser: "$1",
|
warnUser: "$1",
|
||||||
hintSuccess: "operation successful: $#",
|
hintSuccess: "operation successful: $#",
|
||||||
hintSuccessX: "operation successful ($# lines compiled; $# sec total; $#; $#)",
|
hintSuccessX: "operation successful ($# lines compiled; $# sec total; $#; $#)",
|
||||||
|
|
@ -135,7 +136,7 @@ const
|
||||||
"UnsafeCode", "EachIdentIsTuple",
|
"UnsafeCode", "EachIdentIsTuple",
|
||||||
"ProveInit", "ProveField", "ProveIndex", "GcUnsafe", "GcUnsafe2", "Uninit",
|
"ProveInit", "ProveField", "ProveIndex", "GcUnsafe", "GcUnsafe2", "Uninit",
|
||||||
"GcMem", "Destructor", "LockLevel", "ResultShadowed",
|
"GcMem", "Destructor", "LockLevel", "ResultShadowed",
|
||||||
"Spacing", "User"]
|
"Spacing", "CaseTransition", "User"]
|
||||||
|
|
||||||
HintsToStr* = [
|
HintsToStr* = [
|
||||||
"Success", "SuccessX", "CC", "LineTooLong",
|
"Success", "SuccessX", "CC", "LineTooLong",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue