| 281 | } |
| 282 | |
| 283 | bool ParseFile::parseOneFile_(PathId fileId, uint32_t lineOffset) { |
| 284 | FileSystem* const fileSystem = FileSystem::getInstance(); |
| 285 | CommandLineParser* clp = getCompileSourceFile()->getCommandLineParser(); |
| 286 | PreprocessFile* pp = getCompileSourceFile()->getPreprocessor(); |
| 287 | Timer tmr; |
| 288 | m_antlrParserHandler = new AntlrParserHandler(); |
| 289 | m_antlrParserHandler->m_clearAntlrCache = clp->lowMem(); |
| 290 | if (m_sourceText.empty()) { |
| 291 | std::istream& stream = fileSystem->openForRead(fileId); |
| 292 | if (!stream.good()) { |
| 293 | Location ppfile(fileId); |
| 294 | Error err(ErrorDefinition::PA_CANNOT_OPEN_FILE, ppfile); |
| 295 | addError(err); |
| 296 | return false; |
| 297 | } |
| 298 | m_antlrParserHandler->m_inputStream = new antlr4::ANTLRInputStream(stream); |
| 299 | fileSystem->close(stream); |
| 300 | } else { |
| 301 | m_antlrParserHandler->m_inputStream = |
| 302 | new antlr4::ANTLRInputStream(m_sourceText); |
| 303 | } |
| 304 | |
| 305 | m_antlrParserHandler->m_errorListener = new AntlrParserErrorListener( |
| 306 | this, false, lineOffset, fileId, clp->printExtraPpLineInfo()); |
| 307 | m_antlrParserHandler->m_lexer = |
| 308 | new SV3_1aLexer(m_antlrParserHandler->m_inputStream); |
| 309 | VerilogVersion version = VerilogVersion::SystemVerilog; |
| 310 | if (pp) version = pp->getVerilogVersion(); |
| 311 | if (version != VerilogVersion::NoVersion) { |
| 312 | switch (version) { |
| 313 | case VerilogVersion::NoVersion: |
| 314 | break; |
| 315 | case VerilogVersion::Verilog1995: |
| 316 | m_antlrParserHandler->m_lexer->sverilog = false; |
| 317 | break; |
| 318 | case VerilogVersion::Verilog2001: |
| 319 | m_antlrParserHandler->m_lexer->sverilog = false; |
| 320 | break; |
| 321 | case VerilogVersion::Verilog2005: |
| 322 | m_antlrParserHandler->m_lexer->sverilog = false; |
| 323 | break; |
| 324 | case VerilogVersion::SVerilog2005: |
| 325 | m_antlrParserHandler->m_lexer->sverilog = true; |
| 326 | break; |
| 327 | case VerilogVersion::Verilog2009: |
| 328 | m_antlrParserHandler->m_lexer->sverilog = true; |
| 329 | break; |
| 330 | case VerilogVersion::SystemVerilog: |
| 331 | m_antlrParserHandler->m_lexer->sverilog = true; |
| 332 | break; |
| 333 | } |
| 334 | } else { |
| 335 | std::string_view type = std::get<1>( |
| 336 | fileSystem->getType(fileId, getCompileSourceFile()->getSymbolTable())); |
| 337 | m_antlrParserHandler->m_lexer->sverilog = |
| 338 | (type == ".sv") || clp->fullSVMode() || clp->isSVFile(fileId); |
| 339 | } |
| 340 |
nothing calls this directly
no test coverage detected