summary refs log tree commit diff stats
path: root/tests/generics/tgenericmatcher.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/generics/tgenericmatcher.nim')
-rw-r--r--tests/generics/tgenericmatcher.nim40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/generics/tgenericmatcher.nim b/tests/generics/tgenericmatcher.nim
new file mode 100644
index 000000000..ca4dc2a4d
--- /dev/null
+++ b/tests/generics/tgenericmatcher.nim
@@ -0,0 +1,40 @@
+discard """
+  output: '''
+'''
+"""
+
+
+block tmatcher1:
+  type
+    TMatcherKind = enum
+      mkTerminal, mkSequence, mkAlternation, mkRepeat
+    TMatcher[T] = object
+      case kind: TMatcherKind
+      of mkTerminal:
+        value: T
+      of mkSequence, mkAlternation:
+        matchers: seq[TMatcher[T]]
+      of mkRepeat:
+        matcher: PMatcher[T]
+        min, max: int
+    PMatcher[T] = ref TMatcher[T]
+
+  var m: PMatcher[int]
+
+
+block tmatcher2:
+  type
+    TMatcherKind = enum
+      mkTerminal, mkSequence, mkAlternation, mkRepeat
+    TMatcher[T] = object
+      case kind: TMatcherKind
+      of mkTerminal:
+        value: T
+      of mkSequence, mkAlternation:
+        matchers: seq[TMatcher[T]]
+      of mkRepeat:
+        matcher: ref TMatcher[T]
+        min, max: int
+  
+  var m: ref TMatcher[int]
+