From d98a2b75c9b4a31de0ebfb1084a68b5be5ede17d Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Fri, 24 Jan 2020 17:14:04 -0500 Subject: Fix for infinite recursion with macro invocation (#1177) * First pass fix of macro expansion logic to stop recursive application (causting a recursive loop), whilst also allowing application on parameters to a macro. * Added recursive-macro test. Fixed macro application example. --- source/slang/slang-lexer.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'source/slang/slang-lexer.cpp') diff --git a/source/slang/slang-lexer.cpp b/source/slang/slang-lexer.cpp index d7c086fba..67ad53764 100644 --- a/source/slang/slang-lexer.cpp +++ b/source/slang/slang-lexer.cpp @@ -19,15 +19,15 @@ namespace Slang Token* TokenList::begin() const { - SLANG_ASSERT(mTokens.getCount()); - return &mTokens[0]; + SLANG_ASSERT(m_tokens.getCount()); + return &m_tokens[0]; } Token* TokenList::end() const { - SLANG_ASSERT(mTokens.getCount()); - SLANG_ASSERT(mTokens[mTokens.getCount()-1].type == TokenType::EndOfFile); - return &mTokens[mTokens.getCount() - 1]; + SLANG_ASSERT(m_tokens.getCount()); + SLANG_ASSERT(m_tokens[m_tokens.getCount() - 1].type == TokenType::EndOfFile); + return &m_tokens[m_tokens.getCount() - 1]; } TokenSpan::TokenSpan() @@ -1325,7 +1325,7 @@ namespace Slang for(;;) { Token token = lexToken(); - tokenList.mTokens.add(token); + tokenList.add(token); if(token.type == TokenType::EndOfFile) return tokenList; -- cgit v1.2.3