From e6109eebdc1af9961c9e9ee8c5538c7107509c57 Mon Sep 17 00:00:00 2001 From: Andrej Mitrovic Date: Tue, 11 Feb 2014 11:53:28 +0100 Subject: [PATCH] TokenId should take tokens length + 1 when determining integral type to make room for tok!"" --- stdx/lexer.d | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stdx/lexer.d b/stdx/lexer.d index 628cabb..541f739 100644 --- a/stdx/lexer.d +++ b/stdx/lexer.d @@ -118,11 +118,11 @@ module stdx.lexer; template TokenIdType(alias staticTokens, alias dynamicTokens, alias possibleDefaultTokens) { - static if ((staticTokens.length + dynamicTokens.length + possibleDefaultTokens.length) <= ubyte.max) + static if ((staticTokens.length + dynamicTokens.length + possibleDefaultTokens.length + 1) <= ubyte.max) alias TokenIdType = ubyte; - else static if ((staticTokens.length + dynamicTokens.length + possibleDefaultTokens.length) <= ushort.max) + else static if ((staticTokens.length + dynamicTokens.length + possibleDefaultTokens.length + 1) <= ushort.max) alias TokenIdType = ushort; - else static if ((staticTokens.length + dynamicTokens.length + possibleDefaultTokens.length) <= uint.max) + else static if ((staticTokens.length + dynamicTokens.length + possibleDefaultTokens.length + 1) <= uint.max) alias TokenIdType = uint; else static assert (false);