Merge branch 'master' of github.com:Araq/Nimrod

This commit is contained in:
Araq
2011-01-05 23:47:12 +01:00
2 changed files with 29 additions and 8 deletions

View File

@@ -430,8 +430,12 @@ proc TypeToString(typ: PType, prefer: TPreferedDesc = preferName): string =
if (prefer == preferName) and (t.sym != nil):
return t.sym.Name.s
case t.Kind
of tyGenericInst:
result = typeToString(lastSon(t), prefer)
of tyGenericBody, tyGenericInst, tyGenericInvokation:
result = typeToString(t.sons[0]) & '['
for i in countup(1, sonsLen(t) -1 -ord(t.kind != tyGenericInvokation)):
if i > 1: add(result, ", ")
add(result, typeToString(t.sons[i]))
add(result, ']')
of tyArray:
if t.sons[0].kind == tyRange:
result = "array[" & rangeToStr(t.sons[0].n) & ", " &
@@ -439,12 +443,6 @@ proc TypeToString(typ: PType, prefer: TPreferedDesc = preferName): string =
else:
result = "array[" & typeToString(t.sons[0]) & ", " &
typeToString(t.sons[1]) & ']'
of tyGenericInvokation, tyGenericBody:
result = typeToString(t.sons[0]) & '['
for i in countup(1, sonsLen(t) - 1):
if i > 1: add(result, ", ")
add(result, typeToString(t.sons[i]))
add(result, ']')
of tyArrayConstr:
result = "Array constructor[" & rangeToStr(t.sons[0].n) & ", " &
typeToString(t.sons[1]) & ']'

View File

@@ -0,0 +1,23 @@
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 = stdin.readLine()
if r == "": return Nothing[string]()
else: return Just(r)
when isMainModule:
var Test = Just("Test")
echo(Test.value)
var mSomething = safeReadLine()
echo(mSomething.value)