Fixing multiline comment parsing in solidity

This commit is contained in:
Lefteris Karapetsas 2014-11-28 00:06:38 +01:00
parent e11e651929
commit 034870b4c0
2 changed files with 5 additions and 3 deletions

View File

@ -193,8 +193,8 @@ Token::Value Scanner::scanDocumentationComment()
m_source.get(2) == '/' && m_source.get(2) == '/' &&
!m_source.isPastEndOfInput(3)) !m_source.isPastEndOfInput(3))
{ {
m_source.advanceBy(3);
addCommentLiteralChar('\n'); addCommentLiteralChar('\n');
m_char = m_source.advanceBy(3);
} }
else else
break; // next line is not a documentation comment, we are done break; // next line is not a documentation comment, we are done
@ -793,12 +793,14 @@ char CharStream::advanceAndGet()
return get(); return get();
} }
void CharStream::advanceBy(size_t _chars) char CharStream::advanceBy(size_t _chars)
{ {
if (asserts(!isPastEndOfInput(_chars))) if (asserts(!isPastEndOfInput(_chars)))
BOOST_THROW_EXCEPTION(InternalCompilerError()); BOOST_THROW_EXCEPTION(InternalCompilerError());
m_pos += _chars; m_pos += _chars;
return m_source[m_pos];
} }
char CharStream::rollback(size_t _amount) char CharStream::rollback(size_t _amount)

View File

@ -77,7 +77,7 @@ public:
bool isPastEndOfInput(size_t _charsForward = 0) const { return (m_pos + _charsForward) >= m_source.size(); } bool isPastEndOfInput(size_t _charsForward = 0) const { return (m_pos + _charsForward) >= m_source.size(); }
char get(size_t _charsForward = 0) const { return m_source[m_pos + _charsForward]; } char get(size_t _charsForward = 0) const { return m_source[m_pos + _charsForward]; }
char advanceAndGet(); char advanceAndGet();
void advanceBy(size_t _chars); char advanceBy(size_t _chars);
char rollback(size_t _amount); char rollback(size_t _amount);
///@{ ///@{