implement RFCs/294 ; disallow enum <=> enum conversion (#16351)
* fix https://github.com/nim-lang/RFCs/issues/294 ; disallow enum <=> enum conversion * fix the runnableExamples that was the instigator of this RFC * legacy -d:nimLegacyConvEnumEnum * use -d:nimLegacyConvEnumEnum in important_package nimgame2 * add test for enum cast * improve changelog * add changelog: Changes affecting backward compatibility * cleanup changelog * fix changelog
This commit is contained in:
parent
a807233aeb
commit
270964c487
9 changed files with 115 additions and 38 deletions
|
|
@ -1,5 +1,13 @@
|
|||
discard """
|
||||
nimout:'''
|
||||
tconv.nim(81, 15) Warning: enum to enum conversion is now deprecated [User]
|
||||
'''
|
||||
"""
|
||||
|
||||
template reject(x) =
|
||||
static: assert(not compiles(x))
|
||||
static: doAssert(not compiles(x))
|
||||
template accept(x) =
|
||||
static: doAssert(compiles(x))
|
||||
|
||||
reject:
|
||||
const x = int8(300)
|
||||
|
|
@ -55,3 +63,26 @@ block: # issue 3766
|
|||
proc r(x: static[R]) =
|
||||
echo x
|
||||
r 3.R
|
||||
|
||||
|
||||
block: # https://github.com/nim-lang/RFCs/issues/294
|
||||
type Koo = enum k1, k2
|
||||
type Goo = enum g1, g2
|
||||
|
||||
accept: Koo(k2)
|
||||
accept: k2.Koo
|
||||
accept: k2.int.Goo
|
||||
|
||||
reject: Goo(k2)
|
||||
reject: k2.Goo
|
||||
reject: k2.string
|
||||
|
||||
{.define(nimLegacyConvEnumEnum).}
|
||||
discard Goo(k2)
|
||||
accept: Goo(k2)
|
||||
accept: k2.Goo
|
||||
reject: k2.string
|
||||
{.undef(nimLegacyConvEnumEnum).}
|
||||
|
||||
reject: Goo(k2)
|
||||
reject: k2.Goo
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue