diff options
author | Ryan Gonzalez <rymg19@gmail.com> | 2015-09-23 13:44:45 -0500 |
---|---|---|
committer | Ryan Gonzalez <rymg19@gmail.com> | 2015-09-23 13:44:45 -0500 |
commit | a8e547971fe4e638f8f8392005d9cc5f0a4a2f1d (patch) | |
tree | c36e26c57557616573a806244d2ad8616c586c55 /compiler | |
parent | 371470e73f2c79f4d9babc86f59b5d580defb050 (diff) | |
download | Nim-a8e547971fe4e638f8f8392005d9cc5f0a4a2f1d.tar.gz |
Fix #3367
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/types.nim | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/compiler/types.nim b/compiler/types.nim index 5f3a74aca..66fb657fc 100644 --- a/compiler/types.nim +++ b/compiler/types.nim @@ -1265,13 +1265,16 @@ proc computeSizeAux(typ: PType, a: var BiggestInt): BiggestInt = else: result = 8 a = result of tySet: - length = lengthOrd(typ.sons[0]) - if length <= 8: result = 1 - elif length <= 16: result = 2 - elif length <= 32: result = 4 - elif length <= 64: result = 8 - elif align(length, 8) mod 8 == 0: result = align(length, 8) div 8 - else: result = align(length, 8) div 8 + 1 + if typ.sons[0].kind == tyGenericParam: + result = szUnknownSize + else: + length = lengthOrd(typ.sons[0]) + if length <= 8: result = 1 + elif length <= 16: result = 2 + elif length <= 32: result = 4 + elif length <= 64: result = 8 + elif align(length, 8) mod 8 == 0: result = align(length, 8) div 8 + else: result = align(length, 8) div 8 + 1 a = result of tyRange: result = computeSizeAux(typ.sons[0], a) |