hyperledger-solang / solang

Solidity Compiler for Solana and Polkadot
https://solang.readthedocs.io/
Apache License 2.0
1.26k stars 210 forks source link

Incorrect location for doccoment without tag #1658

Open klkvr opened 2 months ago

klkvr commented 2 months ago

Doccoments without tags are not being parsed correctly via parse_doccomments.

Can be reproduced with the following example:

pub fn main() {
    let src = "// SPDX-License-Identifier: MIT

/// Some doc comment
contract Counter {}";
    let (_, comments) = solang_parser::parse(src, 0).unwrap();
    let parsed = solang_parser::doccomment::parse_doccomments(&comments, 0, src.len());
    match &parsed[0] {
        solang_parser::doccomment::DocComment::Line {comment} => {
            assert!(comment.value_offset > src.len());
        }
        _ => unreachable!(),
    }
}

For parsed comment, value_offset will be out of bounds of the file