diff options
author | Zahary Karadjov <zahary@gmail.com> | 2013-12-29 00:00:37 +0200 |
---|---|---|
committer | Zahary Karadjov <zahary@gmail.com> | 2013-12-29 00:00:37 +0200 |
commit | 66a255652572b48440b68878e99d7f5290e384b3 (patch) | |
tree | 3349b1791218a3416209569848244245e087009d /compiler/evals.nim | |
parent | eb1d23c0c745c64225e8db22f62d8ebf596f4448 (diff) | |
download | Nim-66a255652572b48440b68878e99d7f5290e384b3.tar.gz |
make more tests green
Diffstat (limited to 'compiler/evals.nim')
-rw-r--r-- | compiler/evals.nim | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/compiler/evals.nim b/compiler/evals.nim index f7d94e4c0..151adf690 100644 --- a/compiler/evals.nim +++ b/compiler/evals.nim @@ -906,17 +906,15 @@ proc evalParseStmt(c: PEvalContext, n: PNode): PNode = result = parseString(code.getStrValue, code.info.toFilename, code.info.line.int) #result.typ = newType(tyStmt, c.module) - -proc evalTypeTrait*(trait, operand: PNode, context: PSym): PNode = - InternalAssert operand.kind == nkSym - let typ = operand.sym.typ.skipTypes({tyTypeDesc}) +proc evalTypeTrait*(trait, operand: PNode, context: PSym): PNode = + let typ = operand.typ.skipTypes({tyTypeDesc}) case trait.sym.name.s.normalize of "name": result = newStrNode(nkStrLit, typ.typeToString(preferName)) result.typ = newType(tyString, context) result.info = trait.info - of "arity": + of "arity": result = newIntNode(nkIntLit, typ.n.len-1) result.typ = newType(tyInt, context) result.info = trait.info @@ -1330,7 +1328,7 @@ proc evalAux(c: PEvalContext, n: PNode, flags: TEvalFlags): PNode = if gNestedEvals <= 0: stackTrace(c, n.info, errTooManyIterations) case n.kind of nkSym: result = evalSym(c, n, flags) - of nkType..nkNilLit: + of nkType..nkNilLit, nkTypeOfExpr: # nkStrLit is VERY common in the traces, so we should avoid # the 'copyNode' here. result = n #.copyNode |