diff options
author | Yuriy Glukhov <yuriy.glukhov@gmail.com> | 2015-09-04 19:23:58 +0300 |
---|---|---|
committer | Yuriy Glukhov <yuriy.glukhov@gmail.com> | 2015-09-04 20:50:29 +0300 |
commit | 790ef23c48329f0d0a5841aed3913b5a87119ca9 (patch) | |
tree | 700ba794b00b87fdc4738aeebd9d8f525c14b90b | |
parent | 49869a2b10d73dac719690f3796a0584be38c0bb (diff) | |
download | Nim-790ef23c48329f0d0a5841aed3913b5a87119ca9.tar.gz |
nimvm is magic
-rw-r--r-- | compiler/ast.nim | 3 | ||||
-rw-r--r-- | compiler/semfold.nim | 2 | ||||
-rw-r--r-- | lib/system.nim | 4 |
3 files changed, 8 insertions, 1 deletions
diff --git a/compiler/ast.nim b/compiler/ast.nim index 0ad0a0718..aafe503dc 100644 --- a/compiler/ast.nim +++ b/compiler/ast.nim @@ -605,7 +605,8 @@ type mNBindSym, mLocals, mNCallSite, mEqIdent, mEqNimrodNode, mSameNodeType, mGetImpl, mNHint, mNWarning, mNError, - mInstantiationInfo, mGetTypeInfo, mNGenSym + mInstantiationInfo, mGetTypeInfo, mNGenSym, + mNimvm # things that we can evaluate safely at compile time, even if not asked for it: const diff --git a/compiler/semfold.nim b/compiler/semfold.nim index 2ab43a9c9..22cf05aa8 100644 --- a/compiler/semfold.nim +++ b/compiler/semfold.nim @@ -640,6 +640,8 @@ proc getConstExpr(m: PSym, n: PNode): PNode = of mNaN: result = newFloatNodeT(NaN, n) of mInf: result = newFloatNodeT(Inf, n) of mNegInf: result = newFloatNodeT(NegInf, n) + of mNimvm: + localError(n.info, "illegal context for 'nimvm' magic") else: if sfFakeConst notin s.flags: result = copyTree(s.ast) of {skProc, skMethod}: diff --git a/lib/system.nim b/lib/system.nim index 042813ae1..5bd8c56c7 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -1173,6 +1173,10 @@ const ## "i386", "alpha", "powerpc", "powerpc64", "powerpc64el", "sparc", ## "amd64", "mips", "mipsel", "arm", "arm64". + nimvm* {.magic: "Nimvm".}: bool = false + ## may be used only in "when" expression. + ## It is true in Nim VM context and false otherwise + seqShallowFlag = low(int) proc compileOption*(option: string): bool {. |