summary refs log tree commit diff stats
path: root/compiler/passaux.nim
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/passaux.nim')
-rw-r--r--compiler/passaux.nim33
1 files changed, 33 insertions, 0 deletions
diff --git a/compiler/passaux.nim b/compiler/passaux.nim
new file mode 100644
index 000000000..af507d210
--- /dev/null
+++ b/compiler/passaux.nim
@@ -0,0 +1,33 @@
+#
+#
+#           The Nim Compiler
+#        (c) Copyright 2012 Andreas Rumpf
+#
+#    See the file "copying.txt", included in this
+#    distribution, for details about the copyright.
+#
+
+## implements some little helper passes
+
+import
+  ast, passes, msgs, options, lineinfos
+
+from modulegraphs import ModuleGraph, PPassContext
+
+type
+  VerboseRef = ref object of PPassContext
+    config: ConfigRef
+
+proc verboseOpen(graph: ModuleGraph; s: PSym; idgen: IdGenerator): PPassContext =
+  # xxx consider either removing this or keeping for documentation for how to add a pass
+  result = VerboseRef(config: graph.config, idgen: idgen)
+
+import std/objectdollar
+
+proc verboseProcess(context: PPassContext, n: PNode): PNode =
+  # called from `process` in `processTopLevelStmt`.
+  result = n
+  let v = VerboseRef(context)
+  message(v.config, n.info, hintProcessingStmt, $v.idgen[])
+
+const verbosePass* = makePass(open = verboseOpen, process = verboseProcess)