fix illegal recursion checks
This commit is contained in:
parent
a59f13b00d
commit
f34ca1a7d7
3 changed files with 18 additions and 18 deletions
|
|
@ -1145,7 +1145,9 @@ proc computeSizeAux(typ: PType, a: var biggestInt): biggestInt =
|
||||||
result = ptrSize
|
result = ptrSize
|
||||||
a = result
|
a = result
|
||||||
of tyArray, tyArrayConstr:
|
of tyArray, tyArrayConstr:
|
||||||
result = lengthOrd(typ.sons[0]) * computeSizeAux(typ.sons[1], a)
|
let elemSize = computeSizeAux(typ.sons[1], a)
|
||||||
|
if elemSize < 0: return elemSize
|
||||||
|
result = lengthOrd(typ.sons[0]) * elemSize
|
||||||
of tyEnum:
|
of tyEnum:
|
||||||
if firstOrd(typ) < 0:
|
if firstOrd(typ) < 0:
|
||||||
result = 4 # use signed int32
|
result = 4 # use signed int32
|
||||||
|
|
@ -1196,8 +1198,9 @@ proc computeSizeAux(typ: PType, a: var biggestInt): biggestInt =
|
||||||
of tyGenericInst, tyDistinct, tyGenericBody, tyMutable, tyConst, tyIter:
|
of tyGenericInst, tyDistinct, tyGenericBody, tyMutable, tyConst, tyIter:
|
||||||
result = computeSizeAux(lastSon(typ), a)
|
result = computeSizeAux(lastSon(typ), a)
|
||||||
of tyTypeDesc:
|
of tyTypeDesc:
|
||||||
result = (if typ.len == 1: computeSizeAux(typ.sons[0], a) else: -1)
|
result = if typ.len == 1: computeSizeAux(typ.sons[0], a)
|
||||||
of tyProxy: result = 1
|
else: szUnknownSize
|
||||||
|
of tyForward: return szIllegalRecursion
|
||||||
else:
|
else:
|
||||||
#internalError("computeSizeAux()")
|
#internalError("computeSizeAux()")
|
||||||
result = szUnknownSize
|
result = szUnknownSize
|
||||||
|
|
|
||||||
|
|
@ -14,4 +14,3 @@ type
|
||||||
y: Int
|
y: Int
|
||||||
x: array[0..3, TIllegal]
|
x: array[0..3, TIllegal]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,5 +6,3 @@ discard """
|
||||||
type
|
type
|
||||||
Uint8 = Uint8 #ERROR_MSG illegal recursion in type 'Uint8'
|
Uint8 = Uint8 #ERROR_MSG illegal recursion in type 'Uint8'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue