summary refs log tree commit diff stats
path: root/tests/objvariant/tvariantstack.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/objvariant/tvariantstack.nim')
-rw-r--r--tests/objvariant/tvariantstack.nim41
1 files changed, 33 insertions, 8 deletions
diff --git a/tests/objvariant/tvariantstack.nim b/tests/objvariant/tvariantstack.nim
index d81f6e001..7fd41b476 100644
--- a/tests/objvariant/tvariantstack.nim
+++ b/tests/objvariant/tvariantstack.nim
@@ -1,6 +1,5 @@
 discard """
-  file: "tvariantstack.nim"
-  output: "came here"
+output: "came here"
 """
 #BUG
 type
@@ -33,15 +32,11 @@ proc pop(Stack: var TStack): TAny =
 
 var stack = newStack()
 
-var s: TAny
-s.kind = nkString
-s.strVal = "test"
+var s = TAny(kind: nkString, strVal: "test")
 
 stack.push(s)
 
-var nr: TAny
-nr.kind = nkint
-nr.intVal = 78
+var nr = TAny(kind: nkInt, intVal: 78)
 
 stack.push(nr)
 
@@ -49,4 +44,34 @@ var t = stack.pop()
 echo "came here"
 
 
+# another regression:
+type
+  LexerToken* = enum
+    ltYamlDirective, ltYamlVersion, ltTagDirective, ltTagShorthand,
+    ltTagUri, ltUnknownDirective, ltUnknownDirectiveParams, ltEmptyLine,
+    ltDirectivesEnd, ltDocumentEnd, ltStreamEnd, ltIndentation, ltQuotedScalar,
+    ltScalarPart, ltBlockScalarHeader, ltBlockScalar, ltSeqItemInd, ltMapKeyInd,
+    ltMapValInd, ltBraceOpen, ltBraceClose, ltBracketOpen, ltBracketClose,
+    ltComma, ltLiteralTag, ltTagHandle, ltAnchor, ltAlias
+
+const tokensWithValue =
+    {ltScalarPart, ltQuotedScalar, ltYamlVersion, ltTagShorthand, ltTagUri,
+     ltUnknownDirective, ltUnknownDirectiveParams, ltLiteralTag, ltAnchor,
+     ltAlias, ltBlockScalar}
+
+type
+  TokenWithValue = object
+    case kind: LexerToken
+    of tokensWithValue:
+      value: string
+    of ltIndentation:
+      indentation: int
+    of ltTagHandle:
+      handle, suffix: string
+    else: discard
+
+proc sp(v: string): TokenWithValue =
+  # test.nim(27, 17) Error: a case selecting discriminator 'kind' with value 'ltScalarPart' appears in the object construction, but the field(s) 'value' are in conflict with this value.
+  TokenWithValue(kind: ltScalarPart, value: v)
 
+let a = sp("test")