From a2e6a873af3ca5343b620e818666bd5078308fc4 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Sat, 3 Nov 2018 11:04:30 +0100 Subject: [PATCH] fixes #9610 --- compiler/semmagic.nim | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/compiler/semmagic.nim b/compiler/semmagic.nim index 09d9712361..7a6f6788da 100644 --- a/compiler/semmagic.nim +++ b/compiler/semmagic.nim @@ -329,23 +329,19 @@ proc magicsAfterOverloadResolution(c: PContext, n: PNode, of mTypeOf: result = semTypeOf(c, n) of mSizeOf: - # TODO there is no proper way to find out if a type cannot be queried for the size. - let size = getSize(c.config, n[1].typ) - # We just assume here that the type might come from the c backend - if size == szUnknownSize: - # Forward to the c code generation to emit a `sizeof` in the C code. - result = n - elif size >= 0: - result = newIntNode(nkIntLit, size) - result.info = n.info - result.typ = n.typ - else: - - localError(c.config, n.info, "cannot evaluate 'sizeof' because its type is not defined completely") - - result = nil - - + # TODO there is no proper way to find out if a type cannot be queried for the size. + let size = getSize(c.config, n[1].typ) + # We just assume here that the type might come from the c backend + if size == szUnknownSize: + # Forward to the c code generation to emit a `sizeof` in the C code. + result = n + elif size >= 0: + result = newIntNode(nkIntLit, size) + result.info = n.info + result.typ = n.typ + else: + localError(c.config, n.info, "cannot evaluate 'sizeof' because its type is not defined completely") + result = n of mAlignOf: result = newIntNode(nkIntLit, getAlign(c.config, n[1].typ)) result.info = n.info