summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/semstmts.nim3
-rw-r--r--compiler/types.nim7
2 files changed, 7 insertions, 3 deletions
diff --git a/compiler/semstmts.nim b/compiler/semstmts.nim
index d17351988..11399b38b 100644
--- a/compiler/semstmts.nim
+++ b/compiler/semstmts.nim
@@ -828,6 +828,9 @@ proc typeSectionFinalPass(c: PContext, n: PNode) =
                               getCurrOwner(), s.info)
 
 proc semTypeSection(c: PContext, n: PNode): PNode =
+  ## Processes a type section. This must be done in separate passes, in order
+  ## to allow the type definitions in the section to reference each other
+  ## without regard for the order of their definitions.
   typeSectionLeftSidePass(c, n)
   typeSectionRightSidePass(c, n)
   typeSectionFinalPass(c, n)
diff --git a/compiler/types.nim b/compiler/types.nim
index 1f266d64f..b2e131f60 100644
--- a/compiler/types.nim
+++ b/compiler/types.nim
@@ -1152,11 +1152,12 @@ proc computeRecSizeAux(n: PNode, a, currOffset: var BiggestInt): BiggestInt =
     result = computeSizeAux(n.sym.typ, a)
     n.sym.offset = int(currOffset)
   else: 
-    internalError("computeRecSizeAux()")
+    # internalError("computeRecSizeAux()")
+    n.debug
     a = 1
-    result = - 1
+    result = - 2
 
-const 
+const
   szIllegalRecursion* = -2
   szUnknownSize* = -1