From 910720b0d44721b1c467b23227ec77467b80c633 Mon Sep 17 00:00:00 2001 From: Timothee Cour Date: Mon, 8 Feb 2021 04:45:06 -0800 Subject: document typeof (#16965) --- lib/system.nim | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/system.nim b/lib/system.nim index 888217493..508978521 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -251,8 +251,23 @@ when defined(nimHasTypeof): magic: "TypeOf", noSideEffect, compileTime.} = ## Builtin `typeof` operation for accessing the type of an expression. ## Since version 0.20.0. - discard - + runnableExamples: + proc myFoo(): float = 0.0 + iterator myFoo(): string = yield "abc" + iterator myFoo2(): string = yield "abc" + iterator myFoo3(): string {.closure.} = yield "abc" + doAssert type(myFoo()) is string + doAssert typeof(myFoo()) is string + doAssert typeof(myFoo(), typeOfIter) is string + doAssert typeof(myFoo3) is "iterator" + + doAssert typeof(myFoo(), typeOfProc) is float + doAssert typeof(0.0, typeOfProc) is float + doAssert typeof(myFoo3, typeOfProc) is "iterator" + doAssert not compiles(typeof(myFoo2(), typeOfProc)) + # this would give: Error: attempting to call routine: 'myFoo2' + # since `typeOfProc` expects a typed expression and `myFoo2()` can + # only be used in a `for` context. const ThisIsSystem = true -- cgit 1.4.1-2-gfad0