| 219 | } |
| 220 | |
| 221 | PathId ParseFile::getFileId(uint32_t line) { |
| 222 | if (!getCompileSourceFile()) { |
| 223 | return m_fileId; |
| 224 | } |
| 225 | PreprocessFile* pp = getCompileSourceFile()->getPreprocessor(); |
| 226 | if (!pp) return BadPathId; |
| 227 | auto& infos = pp->getIncludeFileInfo(); |
| 228 | if (!infos.empty()) { |
| 229 | if (!fileInfoCache.empty()) { |
| 230 | if (line > fileInfoCache.size()) { |
| 231 | SymbolId fileId = registerSymbol("CACHE OUT OF BOUND"); |
| 232 | Location ppfile(fileId); |
| 233 | Error err(ErrorDefinition::PA_INTERNAL_WARNING, ppfile); |
| 234 | addError(err); |
| 235 | return m_fileId; |
| 236 | } |
| 237 | return fileInfoCache[line]; |
| 238 | } |
| 239 | buildLineInfoCache_(); |
| 240 | if (line > fileInfoCache.size()) { |
| 241 | SymbolId fileId = registerSymbol("CACHE OUT OF BOUND"); |
| 242 | Location ppfile(fileId); |
| 243 | Error err(ErrorDefinition::PA_INTERNAL_WARNING, ppfile); |
| 244 | addError(err); |
| 245 | return m_fileId; |
| 246 | } |
| 247 | return fileInfoCache[line]; |
| 248 | } else { |
| 249 | return m_fileId; |
| 250 | } |
| 251 | } |
| 252 | |
| 253 | uint32_t ParseFile::getLineNb(uint32_t line) { |
| 254 | if (!getCompileSourceFile()) return line; |
no test coverage detected