mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 08:54:53 +00:00
fixes #10033 [backport]
This commit is contained in:
@@ -970,9 +970,9 @@ proc genTypeInfoAux(m: BModule, typ, origType: PType, name: Rope;
|
||||
|
||||
proc discriminatorTableName(m: BModule, objtype: PType, d: PSym): Rope =
|
||||
# bugfix: we need to search the type that contains the discriminator:
|
||||
var objtype = objtype
|
||||
var objtype = objtype.skipTypes(abstractPtrs)
|
||||
while lookupInRecord(objtype.n, d.name) == nil:
|
||||
objtype = objtype.sons[0]
|
||||
objtype = objtype.sons[0].skipTypes(abstractPtrs)
|
||||
if objtype.sym == nil:
|
||||
internalError(m.config, d.info, "anonymous obj with discriminator")
|
||||
result = "NimDT_$1_$2" % [rope($hashType(objtype)), rope(d.name.s.mangle)]
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
discard """
|
||||
output: '''some(str), some(5), none
|
||||
some(5!)
|
||||
some(10)'''
|
||||
some(10)
|
||||
34'''
|
||||
"""
|
||||
|
||||
import strutils
|
||||
@@ -45,3 +46,25 @@ let a3 = intOrString(some(5))
|
||||
#echo a1
|
||||
echo a2
|
||||
echo a3
|
||||
|
||||
|
||||
# bug #10033
|
||||
|
||||
type
|
||||
Token = enum
|
||||
Int,
|
||||
Float
|
||||
|
||||
Base = ref object of RootObj
|
||||
case token: Token
|
||||
of Int:
|
||||
bInt: int
|
||||
of Float:
|
||||
bFloat: float
|
||||
|
||||
Child = ref object of Base
|
||||
|
||||
let c = new Child
|
||||
c.token = Int
|
||||
c.bInt = 34
|
||||
echo c.bInt
|
||||
|
||||
Reference in New Issue
Block a user