diff options
Diffstat (limited to 'tests/generics/tgenericvariant.nim')
-rw-r--r-- | tests/generics/tgenericvariant.nim | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/generics/tgenericvariant.nim b/tests/generics/tgenericvariant.nim new file mode 100644 index 000000000..5ba3a2e7c --- /dev/null +++ b/tests/generics/tgenericvariant.nim @@ -0,0 +1,36 @@ +discard """ +output: ''' +Test +abcxyz123 +''' +""" + +proc fakeReadLine(): string = + "abcxyz123" + +type + TMaybe[T] = object + case empty: bool + of false: value: T + else: nil + +proc Just*[T](val: T): TMaybe[T] = + result.empty = false + result.value = val + +proc Nothing[T](): TMaybe[T] = + result.empty = true + +proc safeReadLine(): TMaybe[string] = + var r = fakeReadLine() + if r == "": return Nothing[string]() + else: return Just(r) + +proc main() = + var Test = Just("Test") + echo(Test.value) + var mSomething = safeReadLine() + echo(mSomething.value) + mSomething = safeReadLine() + +main() |