summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rwxr-xr-xdoc/c2nim.txt4
-rwxr-xr-xlib/impure/graphics.nim2
-rwxr-xr-xlib/pure/xmldom.nim13
-rwxr-xr-xlib/windows/windows.nim86
-rwxr-xr-xlib/wrappers/cairo/cairo.nim9
-rwxr-xr-xlib/wrappers/gtk/atk.nim3
-rwxr-xr-xlib/wrappers/gtk/gdk2.nim4
-rwxr-xr-xlib/wrappers/gtk/gdk2pixbuf.nim4
-rwxr-xr-xlib/wrappers/gtk/gdkglext.nim3
-rwxr-xr-xlib/wrappers/gtk/glib2.nim5
-rwxr-xr-xlib/wrappers/gtk/gtk2.nim4
-rwxr-xr-xlib/wrappers/gtk/gtkglext.nim11
-rwxr-xr-xlib/wrappers/gtk/gtkhtml.nim4
-rwxr-xr-xlib/wrappers/gtk/libglade2.nim3
-rwxr-xr-xlib/wrappers/gtk/pango.nim3
-rwxr-xr-xrod/ast.nim37
-rwxr-xr-xrod/evals.nim46
17 files changed, 140 insertions, 101 deletions
diff --git a/doc/c2nim.txt b/doc/c2nim.txt
index c485a57f1..4890f38bf 100755
--- a/doc/c2nim.txt
+++ b/doc/c2nim.txt
@@ -119,7 +119,7 @@ from a C function prototype with the ``dynlib`` pragma:
   #  if defined(windows)
   #    define iupdll "iup.dll"
   #  elif defined(macosx)
-  #    define iupdll "libiup.dynlib"
+  #    define iupdll "libiup.dylib"
   #  else
   #    define iupdll "libiup.so"
   #  endif
@@ -133,7 +133,7 @@ Is translated to:
   when defined(windows):
     const iupdll* = "iup.dll"
   elif defined(macosx):
-    const iupdll* = "libiup.dynlib"
+    const iupdll* = "libiup.dylib"
   else:
     const iupdll* = "libiup.so"
   
diff --git a/lib/impure/graphics.nim b/lib/impure/graphics.nim
index e8b10d56b..d0b59c2be 100755
--- a/lib/impure/graphics.nim
+++ b/lib/impure/graphics.nim
@@ -412,7 +412,7 @@ proc ipart(x: float): float = return x.trunc()
 proc fpart(x: float): float = return x - ipart(x)
 proc rfpart(x: float): float = return 1.0 - fpart(x)
 
-proc drawLineAA(sur: PSurface, p1, p2: TPoint, color: TColor) =
+proc drawLineAA*(sur: PSurface, p1, p2: TPoint, color: TColor) =
   ## Draws a anti-aliased line from ``p1`` to ``p2``, using Xiaolin Wu's 
   ## line algorithm
   var (x1, x2, y1, y2) = (p1.x.toFloat(), p2.x.toFloat(), 
diff --git a/lib/pure/xmldom.nim b/lib/pure/xmldom.nim
index 552bd54cf..bf031fb88 100755
--- a/lib/pure/xmldom.nim
+++ b/lib/pure/xmldom.nim
@@ -45,7 +45,8 @@ const
   DocumentFragmentNode* = 11
 
   # Nodes which are childless - Not sure about AttributeNode
-  childlessObjects = {DocumentNode, AttributeNode, TextNode, CDataSectionNode, ProcessingInstructionNode, CommentNode}
+  childlessObjects = {DocumentNode, AttributeNode, TextNode, 
+    CDataSectionNode, ProcessingInstructionNode, CommentNode}
   # Illegal characters
   illegalChars = {'>', '<', '&', '"'}
 
@@ -73,7 +74,7 @@ type
   Element = object of Node
     FTagName: string # Read-only
   
-  PCharacterData = ref CharacterData
+  PCharacterData* = ref CharacterData
   CharacterData = object of Node
     data*: string
     
@@ -109,10 +110,10 @@ type
 # DOMImplementation
 proc getDOM*(): PDOMImplementation =
   ## Returns a DOMImplementation
-  var DOMImpl: PDOMImplementation
-  new(DOMImpl)
-  DOMImpl.Features = @[(name: "core", version: "2.0"), (name: "core", version: "1.0"), (name: "XML", version: "2.0")]
-  return DOMImpl
+  new(result)
+  result.Features = @[(name: "core", version: "2.0"), 
+                      (name: "core", version: "1.0"), 
+                      (name: "XML", version: "2.0")]
 
 proc createDocument*(dom: PDOMImplementation, namespaceURI: string, qualifiedName: string): PDocument =
   ## Creates an XML Document object of the specified type with its document element.
diff --git a/lib/windows/windows.nim b/lib/windows/windows.nim
index 99339fe8a..579775c2d 100755
--- a/lib/windows/windows.nim
+++ b/lib/windows/windows.nim
@@ -22741,144 +22741,144 @@ proc AnsiLowerBuff*(lpsz: LPSTR, cchLength: DWORD): DWORD{.stdcall,
 

 # WinBase.h

 

-proc FreeModule(h: HINST): WINBOOL =

+proc FreeModule*(h: HINST): WINBOOL =

   result = FreeLibrary(h)

 

-proc MakeProcInstance(p, i: pointer): pointer =

+proc MakeProcInstance*(p, i: pointer): pointer =

   result = p

 

-proc FreeProcInstance(p: pointer): pointer =

+proc FreeProcInstance*(p: pointer): pointer =

   result = p

 

-proc GlobalDiscard(hglbMem: HGLOBAL): HGLOBAL =

+proc GlobalDiscard*(hglbMem: HGLOBAL): HGLOBAL =

   result = GlobalReAlloc(hglbMem, 0, GMEM_MOVEABLE)

 

-proc LocalDiscard(hlocMem: HLOCAL): HLOCAL =

+proc LocalDiscard*(hlocMem: HLOCAL): HLOCAL =

   result = LocalReAlloc(hlocMem, 0, LMEM_MOVEABLE)

 

 # WinGDI.h

 

-proc GetGValue(rgb: int32): int8 =

+proc GetGValue*(rgb: int32): int8 =

   result = toU8(rgb shr 8'i32)

-proc RGB(r, g, b: int): COLORREF =

+proc RGB*(r, g, b: int): COLORREF =

   result = toU32(r) or (toU32(g) shl 8) or (toU32(b) shl 16)

-proc RGB(r, g, b: range[0 .. 255]): COLORREF =

+proc RGB*(r, g, b: range[0 .. 255]): COLORREF =

   result = r or g shl 8 or b shl 16

 

-proc PALETTERGB(r, g, b: range[0..255]): COLORREF =

+proc PALETTERGB*(r, g, b: range[0..255]): COLORREF =

   result = 0x02000000 or RGB(r, g, b)

 

-proc PALETTEINDEX(i: DWORD): COLORREF =

+proc PALETTEINDEX*(i: DWORD): COLORREF =

   result = COLORREF(0x01000000'i32 or i and 0xffff'i32)

 

 

-proc GetRValue(rgb: COLORREF): int8 =

+proc GetRValue*(rgb: COLORREF): int8 =

   result = toU8(rgb)

 

-proc GetGValue(rgb: COLORREF): int8 =

+proc GetGValue*(rgb: COLORREF): int8 =

   result = toU8(rgb shr 8)

 

-proc GetBValue(rgb: COLORREF): int8 =

+proc GetBValue*(rgb: COLORREF): int8 =

   result = toU8(rgb shr 16)

 

 #

 

-proc HIBYTE(w: int32): int8 =

+proc HIBYTE*(w: int32): int8 =

   result = toU8(w shr 8'i32 and 0x000000FF'i32)

 

-proc HIWORD(L: int32): int16 =

+proc HIWORD*(L: int32): int16 =

   result = toU16(L shr 16'i32 and 0x0000FFFF'i32)

 

-proc LOBYTE(w: int32): int8 =

+proc LOBYTE*(w: int32): int8 =

   result = toU8(w)

 

-proc LOWORD(L: int32): int16 =

+proc LOWORD*(L: int32): int16 =

   result = toU16(L)

 

-proc MAKELONG(a, b: int32): LONG =

+proc MAKELONG*(a, b: int32): LONG =

   result = a and 0x0000ffff'i32 or b shl 16'i32

 

-proc MAKEWORD(a, b: int32): int16 =

+proc MAKEWORD*(a, b: int32): int16 =

   result = toU16(a and 0xff'i32) or toU16(b shl 8'i32)

 

-proc SEXT_HIWORD(L: int32): int32 =

+proc SEXT_HIWORD*(L: int32): int32 =

   # return type might be wrong

   result = HIWORD(L)

 

-proc ZEXT_HIWORD(L: int32): int32 =

+proc ZEXT_HIWORD*(L: int32): int32 =

   # return type might be wrong

   result = ze(HIWORD(L))

 

-proc SEXT_LOWORD(L: int32): int32 =

+proc SEXT_LOWORD*(L: int32): int32 =

   result = LOWORD(L)

 

-proc INDEXTOOVERLAYMASK(i: int32): int32 =

+proc INDEXTOOVERLAYMASK*(i: int32): int32 =

   # return type might be wrong

   result = i shl 8'i32

 

-proc INDEXTOSTATEIMAGEMASK(i: int32): int32 =

+proc INDEXTOSTATEIMAGEMASK*(i: int32): int32 =

   # return type might be wrong

   result = i shl 12'i32

 

-proc MAKEINTATOM(i: int32): LPTSTR =

+proc MAKEINTATOM*(i: int32): LPTSTR =

   result = cast[LPTSTR](cast[ULONG_PTR](ToU16(i)))

 

-proc MAKELANGID(p, s: int32): int32 =

+proc MAKELANGID*(p, s: int32): int32 =

   # return type might be wrong

   result = toU16(s) shl 10'i16 or toU16(p)

 

-proc PRIMARYLANGID(lgid: int32): int16 =

+proc PRIMARYLANGID*(lgid: int32): int16 =

   result = toU16(lgid) and 0x000003FF'i16

 

-proc SUBLANGID(lgid: int32): int32 =

+proc SUBLANGID*(lgid: int32): int32 =

   # return type might be wrong

   result = toU16(lgid) shr 10'i16

 

-proc LANGIDFROMLCID(lcid: int32): int16 =

+proc LANGIDFROMLCID*(lcid: int32): int16 =

   result = toU16(lcid)

 

-proc SORTIDFROMLCID(lcid: int32): int16 =

+proc SORTIDFROMLCID*(lcid: int32): int16 =

   result = toU16((lcid and 0x000FFFFF'i32) shr 16'i32)

 

-proc MAKELCID(lgid, srtid: int32): DWORD =

+proc MAKELCID*(lgid, srtid: int32): DWORD =

   result = toU32(srtid shl 16'i32 or lgid and 0xffff'i32)

 

-proc MAKELPARAM(L, h: int32): LPARAM =

+proc MAKELPARAM*(L, h: int32): LPARAM =

   result = LPARAM(MAKELONG(L, h))

 

-proc MAKELRESULT(L, h: int32): LRESULT =

+proc MAKELRESULT*(L, h: int32): LRESULT =

   result = LRESULT(MAKELONG(L, h))

 

-proc MAKEROP4(fore, back: int32): DWORD =

+proc MAKEROP4*(fore, back: int32): DWORD =

   result = back shl 8'i32 and 0xFF000000'i32 or fore

 

-proc MAKEWPARAM(L, h: int32): WPARAM =

+proc MAKEWPARAM*(L, h: int32): WPARAM =

   result = WPARAM(MAKELONG(L, h))

 

-proc GET_X_LPARAM(lp: Windows.LParam): int32 =

+proc GET_X_LPARAM*(lp: Windows.LParam): int32 =

   result = int16(LOWORD(lp))

 

-proc GET_Y_LPARAM(lp: Windows.LParam): int32 =

+proc GET_Y_LPARAM*(lp: Windows.LParam): int32 =

   result = int16(HIWORD(lp))

 

-proc UNICODE_NULL(): WCHAR =

+proc UNICODE_NULL*(): WCHAR =

   result = 0'i16

 

 

 

-proc GetFirstChild(h: HWND): HWND =

+proc GetFirstChild*(h: HWND): HWND =

   result = GetTopWindow(h)

 

-proc GetNextSibling(h: HWND): HWND =

+proc GetNextSibling*(h: HWND): HWND =

   result = GetWindow(h, GW_HWNDNEXT)

 

-proc GetWindowID(h: HWND): int32 =

+proc GetWindowID*(h: HWND): int32 =

   result = GetDlgCtrlID(h)

 

-proc SubclassWindow(h: HWND, p: LONG): LONG =

+proc SubclassWindow*(h: HWND, p: LONG): LONG =

   result = SetWindowLong(h, GWL_WNDPROC, p)

 

-proc GET_WM_COMMAND_CMD(w, L: int32): int32 =

+proc GET_WM_COMMAND_CMD*(w, L: int32): int32 =

   # return type might be wrong

   result = HIWORD(w)

 

diff --git a/lib/wrappers/cairo/cairo.nim b/lib/wrappers/cairo/cairo.nim
index 2c9d76bf7..d669660d3 100755
--- a/lib/wrappers/cairo/cairo.nim
+++ b/lib/wrappers/cairo/cairo.nim
@@ -49,11 +49,12 @@
 #
 
 when defined(windows): 
-  const 
-    LIB_CAIRO* = "libcairo-2.dll"
+  const LIB_CAIRO* = "libcairo-2.dll"
+elif defined(macosx):
+  const LIB_CAIRO* = "libcairo.dylib"
 else: 
-  const 
-    LIB_CAIRO* = "libcairo.so"
+  const LIB_CAIRO* = "libcairo.so"
+
 type 
   PByte = cstring
   TStatus* = enum 
diff --git a/lib/wrappers/gtk/atk.nim b/lib/wrappers/gtk/atk.nim
index 14847fdb6..3ae687aed 100755
--- a/lib/wrappers/gtk/atk.nim
+++ b/lib/wrappers/gtk/atk.nim
@@ -5,6 +5,9 @@ import
 when defined(windows): 
   const 
     lib = "libatk-1.0-0.dll"
+elif defined(macosx):
+  const 
+    lib = "libatk-1.0.dylib"
 else: 
   const 
     lib = "libatk-1.0.so"
diff --git a/lib/wrappers/gtk/gdk2.nim b/lib/wrappers/gtk/gdk2.nim
index 5841aeee3..d6e1952bc 100755
--- a/lib/wrappers/gtk/gdk2.nim
+++ b/lib/wrappers/gtk/gdk2.nim
@@ -5,7 +5,7 @@ import
 when defined(win32): 
   const 
     lib = "libgdk-win32-2.0-0.dll"
-elif defined(darwin): 
+elif defined(macosx): 
   #    linklib gtk-x11-2.0
   #    linklib gdk-x11-2.0
   #    linklib pango-1.0.0
@@ -14,7 +14,7 @@ elif defined(darwin):
   #    linklib gdk_pixbuf-2.0.0
   #    linklib atk-1.0.0
   const 
-    lib = "gdk-x11-2.0"
+    lib = "libgdk-x11-2.0.dylib"
 else: 
   const 
     lib = "libgdk-x11-2.0.so(|.0)"
diff --git a/lib/wrappers/gtk/gdk2pixbuf.nim b/lib/wrappers/gtk/gdk2pixbuf.nim
index e866e51ff..ee50317f8 100755
--- a/lib/wrappers/gtk/gdk2pixbuf.nim
+++ b/lib/wrappers/gtk/gdk2pixbuf.nim
@@ -5,9 +5,9 @@ import
 when defined(win32): 
   const 
     pixbuflib = "libgdk_pixbuf-2.0-0.dll"
-elif defined(darwin): 
+elif defined(macosx): 
   const 
-    pixbuflib = "gdk_pixbuf-2.0.0"
+    pixbuflib = "libgdk_pixbuf-2.0.0.dylib"
   # linklib gtk-x11-2.0
   # linklib gdk-x11-2.0
   # linklib pango-1.0.0
diff --git a/lib/wrappers/gtk/gdkglext.nim b/lib/wrappers/gtk/gdkglext.nim
index b5844395b..0d550c6e2 100755
--- a/lib/wrappers/gtk/gdkglext.nim
+++ b/lib/wrappers/gtk/gdkglext.nim
@@ -5,6 +5,9 @@ import
 when defined(WIN32): 
   const 
     GLExtLib = "libgdkglext-win32-1.0-0.dll"
+elif defined(macosx): 
+  const 
+    GLExtLib = "libgdkglext-x11-1.0.dylib"
 else: 
   const 
     GLExtLib = "libgdkglext-x11-1.0.so"
diff --git a/lib/wrappers/gtk/glib2.nim b/lib/wrappers/gtk/glib2.nim
index d7414cbcb..a8fa6412d 100755
--- a/lib/wrappers/gtk/glib2.nim
+++ b/lib/wrappers/gtk/glib2.nim
@@ -4,6 +4,11 @@ when defined(windows):
     gliblib = "libglib-2.0-0.dll"
     gmodulelib = "libgmodule-2.0-0.dll"
     gobjectlib = "libgobject-2.0-0.dll"
+elif defined(macosx): 
+  const 
+    gliblib = "libglib-2.0.dylib"
+    gmodulelib = "libgmodule-2.0.dylib"
+    gobjectlib = "libgobject-2.0.dylib"
 else: 
   const 
     gliblib = "libglib-2.0.so(|.0)"
diff --git a/lib/wrappers/gtk/gtk2.nim b/lib/wrappers/gtk/gtk2.nim
index d835f7b2f..7bfed2d64 100755
--- a/lib/wrappers/gtk/gtk2.nim
+++ b/lib/wrappers/gtk/gtk2.nim
@@ -5,9 +5,9 @@ import
 when defined(win32): 
   const 
     lib = "libgtk-win32-2.0-0.dll"
-elif defined(darwin): 
+elif defined(macosx): 
   const 
-    lib = "gtk-x11-2.0"
+    lib = "libgtk-x11-2.0.dylib"
   # linklib gtk-x11-2.0
   # linklib gdk-x11-2.0
   # linklib pango-1.0.0
diff --git a/lib/wrappers/gtk/gtkglext.nim b/lib/wrappers/gtk/gtkglext.nim
index b6c832a65..b3f5647bd 100755
--- a/lib/wrappers/gtk/gtkglext.nim
+++ b/lib/wrappers/gtk/gtkglext.nim
@@ -2,8 +2,15 @@
 import 
   Glib2, Gdk2, gtk2, GdkGLExt
 
-const 
-  GLExtLib* = if defined(WIN32): "libgtkglext-win32-1.0-0.dll" else: "libgtkglext-x11-1.0.so"
+when defined(windows):
+  const 
+    GLExtLib* = "libgtkglext-win32-1.0-0.dll" 
+elif defined(macosx):
+  const
+    GLExtLib* = "libgtkglext-x11-1.0.dylib"
+else:
+  const
+    GLExtLib* = "libgtkglext-x11-1.0.so"
 
 const 
   HEADER_GTKGLEXT_MAJOR_VERSION* = 1
diff --git a/lib/wrappers/gtk/gtkhtml.nim b/lib/wrappers/gtk/gtkhtml.nim
index 291913b8e..92496c03b 100755
--- a/lib/wrappers/gtk/gtkhtml.nim
+++ b/lib/wrappers/gtk/gtkhtml.nim
@@ -3,9 +3,11 @@ import
   gtk2, glib2, atk, pango, gdk2pixbuf, gdk2
 
 when defined(windows): 
-  {.define: WINDOWING_WIN32.}
   const 
     htmllib = "libgtkhtml-win32-2.0-0.dll"
+elif defined(macosx): 
+  const 
+    htmllib = "libgtkhtml-2.dylib"
 else: 
   const 
     htmllib = "libgtkhtml-2.so"
diff --git a/lib/wrappers/gtk/libglade2.nim b/lib/wrappers/gtk/libglade2.nim
index 844f055a0..6dda3364e 100755
--- a/lib/wrappers/gtk/libglade2.nim
+++ b/lib/wrappers/gtk/libglade2.nim
@@ -5,6 +5,9 @@ import
 when defined(win32): 
   const 
     LibGladeLib = "libglade-2.0-0.dll"
+elif defined(macosx): 
+  const 
+    LibGladeLib = "libglade-2.0.dylib"
 else: 
   const 
     LibGladeLib = "libglade-2.0.so"
diff --git a/lib/wrappers/gtk/pango.nim b/lib/wrappers/gtk/pango.nim
index facdffb38..cc6acb005 100755
--- a/lib/wrappers/gtk/pango.nim
+++ b/lib/wrappers/gtk/pango.nim
@@ -5,6 +5,9 @@ import
 when defined(win32): 
   const 
     lib* = "libpango-1.0-0.dll"
+elif defined(macosx): 
+  const 
+    lib* = "libpango-1.0.dylib"
 else: 
   const 
     lib* = "libpango-1.0.so.0"
diff --git a/rod/ast.nim b/rod/ast.nim
index ba0de6319..2b0fc6d38 100755
--- a/rod/ast.nim
+++ b/rod/ast.nim
@@ -61,7 +61,8 @@ type
                           # (used for macros)
     nkNilLit,             # the nil literal
                           # end of atoms
-    nkDotCall,            # used to temporarily flag a nkCall node; this is used
+    nkDotCall,            # used to temporarily flag a nkCall node; 
+                          # this is used
                           # for transforming ``s.len`` to ``len(s)``
     nkCommand,            # a call like ``p 2, 4`` without parenthesis
     nkCall,               # a call like p(x, y) or an operation like +(a, b)
@@ -115,7 +116,8 @@ type
                           # end of expressions
 
     nkAsgn,               # a = b
-    nkFastAsgn,           # internal node for a fast ``a = b`` (no string copy) 
+    nkFastAsgn,           # internal node for a fast ``a = b``
+                          # (no string copy) 
     nkGenericParams,      # generic parameters
     nkFormalParams,       # formal parameters
     nkOfInherit,          # inherited from symbol
@@ -128,7 +130,8 @@ type
     nkTemplateDef,        # a template
     nkIteratorDef,        # an iterator
 
-    nkOfBranch,           # used inside case statements for (cond, action)-pairs
+    nkOfBranch,           # used inside case statements
+                          # for (cond, action)-pairs
     nkElifBranch,         # used in if statements
     nkExceptBranch,       # an except section
     nkElse,               # an else part
@@ -296,7 +299,8 @@ type
     skForVar,             # a for loop variable
     skLabel,              # a label (for block statement)
     skStub                # symbol is a stub and not yet loaded from the ROD
-                          # file (it is loaded on demand, which may mean: never)
+                          # file (it is loaded on demand, which may
+                          # mean: never)
   TSymKinds* = set[TSymKind]
 
   TMagic* = enum # symbols that require compiler magic:
@@ -312,10 +316,12 @@ type
     mMinF64, mMaxF64, mAddU, mSubU, mMulU, 
     mDivU, mModU, mAddU64, mSubU64, mMulU64, mDivU64, mModU64, mEqI, mLeI,
     mLtI, 
-    mEqI64, mLeI64, mLtI64, mEqF64, mLeF64, mLtF64, mLeU, mLtU, mLeU64, mLtU64, 
+    mEqI64, mLeI64, mLtI64, mEqF64, mLeF64, mLtF64, 
+    mLeU, mLtU, mLeU64, mLtU64, 
     mEqEnum, mLeEnum, mLtEnum, mEqCh, mLeCh, mLtCh, mEqB, mLeB, mLtB, mEqRef, 
     mEqProc, mEqUntracedRef, mLePtr, mLtPtr, mEqCString, mXor, mUnaryMinusI, 
-    mUnaryMinusI64, mAbsI, mAbsI64, mNot, mUnaryPlusI, mBitnotI, mUnaryPlusI64, 
+    mUnaryMinusI64, mAbsI, mAbsI64, mNot, 
+    mUnaryPlusI, mBitnotI, mUnaryPlusI64, 
     mBitnotI64, mUnaryPlusF64, mUnaryMinusF64, mAbsF64, mZe8ToI, mZe8ToI64, 
     mZe16ToI, mZe16ToI64, mZe32ToI64, mZeIToI64, mToU8, mToU16, mToU32, 
     mToFloat, mToBiggestFloat, mToInt, mToBiggestInt, mCharToStr, mBoolToStr, 
@@ -521,7 +527,8 @@ const
   ConcreteTypes*: TTypeKinds = { # types of the expr that may occur in::
                                  # var x = expr
     tyBool, tyChar, tyEnum, tyArray, tyObject, 
-    tySet, tyTuple, tyRange, tyPtr, tyRef, tyVar, tySequence, tyProc, tyPointer, 
+    tySet, tyTuple, tyRange, tyPtr, tyRef, tyVar, tySequence, tyProc,
+    tyPointer, 
     tyOpenArray, tyString, tyCString, tyInt..tyInt64, tyFloat..tyFloat128} 
   
   ConstantDataTypes*: TTypeKinds = {tyArray, tySet, tyTuple}
@@ -609,7 +616,8 @@ type
 const 
   InitIntSetSize* = 8         # must be a power of two!
   TrunkShift* = 9
-  BitsPerTrunk* = 1 shl TrunkShift # needs to be a power of 2 and divisible by 64
+  BitsPerTrunk* = 1 shl TrunkShift # needs to be a power of 2 and
+                                   # divisible by 64
   TrunkMask* = BitsPerTrunk - 1
   IntsPerTrunk* = BitsPerTrunk div (sizeof(TBitScalar) * 8)
   IntShift* = 5 + ord(sizeof(TBitScalar) == 8) # 5 or 6, depending on int width
@@ -718,7 +726,8 @@ proc discardSons(father: PNode) =
 
 proc newNode(kind: TNodeKind): PNode = 
   new(result)
-  result.kind = kind          #result.info := UnknownLineInfo(); inlined:
+  result.kind = kind
+  #result.info = UnknownLineInfo() inlined:
   result.info.fileIndex = int32(- 1)
   result.info.col = int16(- 1)
   result.info.line = int16(- 1)
@@ -773,8 +782,9 @@ proc NewType(kind: TTypeKind, owner: PSym): PType =
   result.align = 2            # default alignment
   result.id = getID()
   if debugIds: 
-    RegisterId(result)        #if result.id < 2000 then
-                              #  MessageOut(typeKindToStr[kind] +{&} ' has id: ' +{&} toString(result.id));
+    RegisterId(result)        
+  #if result.id < 2000 then
+  #  MessageOut(typeKindToStr[kind] & ' has id: ' & toString(result.id))
   
 proc assignType(dest, src: PType) = 
   dest.kind = src.kind
@@ -827,8 +837,9 @@ proc NewSym(symKind: TSymKind, Name: PIdent, owner: PSym): PSym =
   result.offset = - 1
   result.id = getID()
   if debugIds: 
-    RegisterId(result)        #if result.id < 2000 then
-                              #  MessageOut(name.s +{&} ' has id: ' +{&} toString(result.id));
+    RegisterId(result)
+  #if result.id < 2000:
+  #  MessageOut(name.s & " has id: " & toString(result.id))
   
 proc initStrTable(x: var TStrTable) = 
   x.counter = 0
diff --git a/rod/evals.nim b/rod/evals.nim
index 2dca9896f..d5e8cf3d0 100755
--- a/rod/evals.nim
+++ b/rod/evals.nim
@@ -38,42 +38,34 @@ type
     efNone, efLValue
   TEvalFlags = set[TEvalFlag]
 
-
-proc newStackFrame*(): PStackFrame
-proc pushStackFrame*(c: PEvalContext, t: PStackFrame)
-proc popStackFrame*(c: PEvalContext)
-proc newEvalContext*(module: PSym, filename: string, 
-                     optEval: bool): PEvalContext
 proc eval*(c: PEvalContext, n: PNode): PNode
   # eval never returns nil! This simplifies the code a lot and
   # makes it faster too.
 proc evalConstExpr*(module: PSym, e: PNode): PNode
-proc evalPass*(): TPass
-# implementation
 
 const
   evalMaxIterations = 500_000 # max iterations of all loops
-  evalMaxRecDepth = 10_000      # max recursion depth for evaluation
+  evalMaxRecDepth = 10_000    # max recursion depth for evaluation
 
 # Much better: use a timeout! -> Wether code compiles depends on the machine
 # the compiler runs on then! Bad idea!
 
-proc newStackFrame(): PStackFrame = 
+proc newStackFrame*(): PStackFrame = 
   new(result)
   initIdNodeTable(result.mapping)
   result.params = @[]
 
-proc newEvalContext(module: PSym, filename: string, 
-                    optEval: bool): PEvalContext = 
+proc newEvalContext*(module: PSym, filename: string, 
+                     optEval: bool): PEvalContext = 
   new(result)
   result.module = module
   result.optEval = optEval
 
-proc pushStackFrame(c: PEvalContext, t: PStackFrame) = 
+proc pushStackFrame*(c: PEvalContext, t: PStackFrame) {.inline.} = 
   t.next = c.tos
   c.tos = t
 
-proc popStackFrame(c: PEvalContext) = 
+proc popStackFrame*(c: PEvalContext) {.inline.} = 
   if (c.tos == nil): InternalError("popStackFrame")
   c.tos = c.tos.next
 
@@ -83,10 +75,19 @@ proc stackTraceAux(x: PStackFrame) =
   if x != nil:
     stackTraceAux(x.next)
     var info = if x.call != nil: x.call.info else: UnknownLineInfo()
-    MsgWriteln(`%`("file: $1, line: $2", 
-                   [toFilename(info), $(toLineNumber(info))]))
+    # we now use the same format as in system/except.nim
+    var s = toFilename(info)
+    var line = toLineNumber(info)
+    if line > 0:
+      add(s, '(')
+      add(s, $line)
+      add(s, ')')
+    if x.prc != nil:
+      for k in 1..max(1, 25-s.len): add(s, ' ')
+      add(s, x.prc.name.s)
+    MsgWriteln(s)
 
-proc stackTrace(c: PEvalContext, n: PNode, msg: TMsgKind, arg: string = "") = 
+proc stackTrace(c: PEvalContext, n: PNode, msg: TMsgKind, arg = "") = 
   MsgWriteln("stack trace: (most recent call last)")
   stackTraceAux(c.tos)
   Fatal(n.info, msg, arg)
@@ -253,7 +254,6 @@ proc evalVar(c: PEvalContext, n: PNode): PNode =
     assert(a.sons[0].kind == nkSym)
     var v = a.sons[0].sym
     if a.sons[2].kind != nkEmpty: 
-      #if a.sons[2].kind == nkNone: echo "Yep"
       result = evalAux(c, a.sons[2], {})
       if isSpecial(result): return 
     else: 
@@ -373,6 +373,7 @@ proc evalAsgn(c: PEvalContext, n: PNode): PNode =
       discardSons(x)
       for i in countup(0, sonsLen(result) - 1): addSon(x, result.sons[i])
   result = emptyNode
+  assert result.kind == nkEmpty
 
 proc evalSwap(c: PEvalContext, n: PNode): PNode = 
   result = evalAux(c, n.sons[0], {efLValue})
@@ -918,7 +919,7 @@ proc evalMagicOrCall(c: PEvalContext, n: PNode): PNode =
     result = evalAux(c, n.sons[2], {efLValue})
     if result.kind == nkExceptBranch: return 
     var a = result
-    if (k < 0) or (k > ord(high(TNodeKind))): 
+    if k < 0 or k > ord(high(TNodeKind)): 
       internalError(n.info, "request to create a NimNode with invalid kind")
     result = newNodeI(TNodeKind(int(k)), 
       if a.kind == nkNilLit: n.info else: a.info)
@@ -1015,8 +1016,7 @@ proc evalAux(c: PEvalContext, n: PNode, flags: TEvalFlags): PNode =
   case n.kind                 # atoms:
   of nkEmpty: result = n
   of nkSym: result = evalSym(c, n, flags)
-  of nkType..pred(nkNilLit): result = copyNode(n)
-  of nkNilLit: result = n                # end of atoms
+  of nkType..nkNilLit: result = copyNode(n) # end of atoms
   of nkCall, nkHiddenCallConv, nkMacroStmt, nkCommand, nkCallStrLit: 
     result = evalMagicOrCall(c, n)
   of nkCurly, nkBracket, nkRange: 
@@ -1089,7 +1089,7 @@ proc evalConstExpr(module: PSym, e: PNode): PNode =
   s.call = e
   pushStackFrame(p, s)
   result = eval(p, e)
-  if (result != nil) and (result.kind == nkExceptBranch): result = nil
+  if result != nil and result.kind == nkExceptBranch: result = nil
   popStackFrame(p)
 
 proc myOpen(module: PSym, filename: string): PPassContext = 
@@ -1100,7 +1100,7 @@ proc myOpen(module: PSym, filename: string): PPassContext =
 proc myProcess(c: PPassContext, n: PNode): PNode = 
   result = eval(PEvalContext(c), n)
 
-proc evalPass(): TPass = 
+proc evalPass*(): TPass = 
   initPass(result)
   result.open = myOpen
   result.close = myProcess