From 6bdf7fdbce49a4e356e62ed4429cfa6189185f15 Mon Sep 17 00:00:00 2001 From: Neelesh Chandola Date: Thu, 13 Dec 2018 16:44:25 +0530 Subject: [PATCH] enum types can now be assigned values from enum with holes (#9958) * Fixes https://github.com/nim-lang/Nim/issues/9952 * Remove workaround from vccexe --- compiler/semtypes.nim | 4 ++-- tools/vccexe/vccexe.nim | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/compiler/semtypes.nim b/compiler/semtypes.nim index f4ff97ba4a..7159e17e71 100644 --- a/compiler/semtypes.nim +++ b/compiler/semtypes.nim @@ -90,7 +90,7 @@ proc semEnum(c: PContext, n: PNode, prev: PType): PType = if sonsLen(v) == 2: strVal = v.sons[1] # second tuple part is the string value if skipTypes(strVal.typ, abstractInst).kind in {tyString, tyCString}: - if not isOrdinalType(v.sons[0].typ): + if not isOrdinalType(v.sons[0].typ, allowEnumWithHoles=true): localError(c.config, v.sons[0].info, errOrdinalTypeExpected) x = getOrdValue(v.sons[0]) # first tuple part is the ordinal else: @@ -101,7 +101,7 @@ proc semEnum(c: PContext, n: PNode, prev: PType): PType = strVal = v x = counter else: - if not isOrdinalType(v.typ): + if not isOrdinalType(v.typ, allowEnumWithHoles=true): localError(c.config, v.info, errOrdinalTypeExpected) x = getOrdValue(v) if i != 1: diff --git a/tools/vccexe/vccexe.nim b/tools/vccexe/vccexe.nim index e7c3a4d752..f794885f24 100644 --- a/tools/vccexe/vccexe.nim +++ b/tools/vccexe/vccexe.nim @@ -3,11 +3,11 @@ import strutils, strtabs, os, osproc, vcvarsall, vccenv type VccVersion* = enum ## VCC compiler backend versions vccUndefined = 0, ## VCC version undefined, resolves to the latest recognizable VCC version - vcc90 = ord(vs90) ## Visual Studio 2008 (Version 9.0) - vcc100 = ord(vs100) ## Visual Studio 2010 (Version 10.0) - vcc110 = ord(vs110) ## Visual Studio 2012 (Version 11.0) - vcc120 = ord(vs120) ## Visual Studio 2013 (Version 12.0) - vcc140 = ord(vs140) ## Visual Studio 2015 (Version 14.0) + vcc90 = vs90 ## Visual Studio 2008 (Version 9.0) + vcc100 = vs100 ## Visual Studio 2010 (Version 10.0) + vcc110 = vs110 ## Visual Studio 2012 (Version 11.0) + vcc120 = vs120 ## Visual Studio 2013 (Version 12.0) + vcc140 = vs140 ## Visual Studio 2015 (Version 14.0) proc discoverVccVcVarsAllPath*(version: VccVersion = vccUndefined): string = ## Returns the path to the vcvarsall utility of the specified VCC compiler backend.