diff options
author | Lefteris Karapetsas <lefteris@refu.co> | 2014-12-18 23:27:17 +0800 |
---|---|---|
committer | Lefteris Karapetsas <lefteris@refu.co> | 2014-12-18 23:27:17 +0800 |
commit | d97bdba471cf3da5bc292c0252a062bc7e273b72 (patch) | |
tree | aa79dd9069b99f60f50860bfa7310f01d388f5d7 | |
parent | a6b0fba22748ffa8a73d505f31bec8630f434f39 (diff) | |
download | dexon-solidity-d97bdba471cf3da5bc292c0252a062bc7e273b72.tar dexon-solidity-d97bdba471cf3da5bc292c0252a062bc7e273b72.tar.gz dexon-solidity-d97bdba471cf3da5bc292c0252a062bc7e273b72.tar.bz2 dexon-solidity-d97bdba471cf3da5bc292c0252a062bc7e273b72.tar.lz dexon-solidity-d97bdba471cf3da5bc292c0252a062bc7e273b72.tar.xz dexon-solidity-d97bdba471cf3da5bc292c0252a062bc7e273b72.tar.zst dexon-solidity-d97bdba471cf3da5bc292c0252a062bc7e273b72.zip |
Adressing some natspec issues
-rw-r--r-- | InterfaceHandler.cpp | 4 | ||||
-rw-r--r-- | Scanner.cpp | 7 |
2 files changed, 7 insertions, 4 deletions
diff --git a/InterfaceHandler.cpp b/InterfaceHandler.cpp index 9ae284b4..5b5682ff 100644 --- a/InterfaceHandler.cpp +++ b/InterfaceHandler.cpp @@ -170,7 +170,7 @@ std::string::const_iterator InterfaceHandler::parseDocTagLine(std::string::const bool _appending) { auto nlPos = std::find(_pos, _end, '\n'); - if (_appending && *_pos != ' ') + if (_appending && _pos < _end && *_pos != ' ') _tagString += " "; std::copy(_pos, nlPos, back_inserter(_tagString)); m_lastTag = _tagType; @@ -204,7 +204,7 @@ std::string::const_iterator InterfaceHandler::appendDocTagParam(std::string::con solAssert(!m_params.empty(), "Internal: Tried to append to empty parameter"); auto pair = m_params.back(); - if (*_pos != ' ') + if (_pos < _end && *_pos != ' ') pair.second += " "; auto nlPos = std::find(_pos, _end, '\n'); std::copy(_pos, nlPos, back_inserter(pair.second)); diff --git a/Scanner.cpp b/Scanner.cpp index 69b61ce4..90a3b454 100644 --- a/Scanner.cpp +++ b/Scanner.cpp @@ -328,6 +328,7 @@ Token::Value Scanner::scanMultiLineDocComment() void Scanner::scanToken() { + int savedPosition; m_nextToken.literal.clear(); m_nextSkippedComment.literal.clear(); Token::Value token; @@ -428,6 +429,7 @@ void Scanner::scanToken() break; case '/': // / // /* /= + savedPosition = getSourcePos(); advance(); if (m_char == '/') { @@ -436,7 +438,7 @@ void Scanner::scanToken() else if (m_char == '/') { Token::Value comment; - m_nextSkippedComment.location.start = getSourcePos(); + m_nextSkippedComment.location.start = savedPosition; comment = scanSingleLineDocComment(); m_nextSkippedComment.location.end = getSourcePos(); m_nextSkippedComment.token = comment; @@ -447,12 +449,13 @@ void Scanner::scanToken() } else if (m_char == '*') { + // /** doxygent style natspec comment if (!advance()) /* slash star comment before EOS */ token = Token::WHITESPACE; else if (m_char == '*') { Token::Value comment; - m_nextSkippedComment.location.start = getSourcePos(); + m_nextSkippedComment.location.start = savedPosition; comment = scanMultiLineDocComment(); m_nextSkippedComment.location.end = getSourcePos(); m_nextSkippedComment.token = comment; |