(&self)
| 143 | } |
| 144 | |
| 145 | fn get_source_range(&self) -> eyre::Result<(usize, usize)> { |
| 146 | match &self.kind { |
| 147 | Clang::ImplicitCastExpr(ce) => get_source_code_range(&ce.range), |
| 148 | Clang::CStyleCastExpr(ce) => get_source_code_range(&ce.range), |
| 149 | Clang::StringLiteral(sl) => get_source_code_range(&sl.range), |
| 150 | Clang::IntegerLiteral(il) => get_source_code_range(&il.range), |
| 151 | Clang::CharacterLiteral(cl) => get_source_code_range(&cl.range), |
| 152 | Clang::FloatingLiteral(fl) => get_source_code_range(&fl.range), |
| 153 | Clang::IfStmt(is) => get_source_code_range(&is.range), |
| 154 | Clang::DeclStmt(ds) => get_source_code_range(&ds.range), |
| 155 | Clang::BinaryOperator(bo) => get_source_code_range(&bo.range), |
| 156 | Clang::UnaryOperator(uo) => get_source_code_range(&uo.range), |
| 157 | Clang::ReturnStmt(rs) => get_source_code_range(&rs.range), |
| 158 | Clang::CallExpr(ce) => get_source_code_range(&ce.range), |
| 159 | Clang::UnaryExprOrTypeTraitExpr(ue) => get_source_code_range(&ue.range), |
| 160 | Clang::CXXStaticCastExpr(cce) => get_source_code_range(&cce.range), |
| 161 | Clang::ParenExpr(pe) => get_source_code_range(&pe.range), |
| 162 | Clang::Other => { |
| 163 | if let Some(first) = self.inner.first() { |
| 164 | let start = first.get_source_range()?.0; |
| 165 | let end = self.inner.last().unwrap().get_source_range()?.1; |
| 166 | Ok((start, end)) |
| 167 | } else { |
| 168 | eyre::bail!("Other node has no children: {self:#?}") |
| 169 | } |
| 170 | }, |
| 171 | _ => { |
| 172 | if let Some(first) = self.inner.first() { |
| 173 | let start = first.get_source_range()?.0; |
| 174 | let end = self.inner.last().unwrap().get_source_range()?.1; |
| 175 | Ok((start, end)) |
| 176 | } else { |
| 177 | eyre::bail!("Other node has no children: {self:#?}") |
| 178 | } |
| 179 | } |
| 180 | } |
| 181 | } |
| 182 | |
| 183 | fn dump(&self) -> String { |
| 184 | let dump_str = match &self.kind { |
no test coverage detected