pub struct CppRecoveredExportClassIndex { /* private fields */ }Expand description
One file’s embedded export-macro class recovery, resolved once and keyed by
the ERROR node that mints each set.
[recover_embedded_function_like_export_classes] collects and sorts an
ERROR node’s whole subtree, and the declaration-strength question asks it
once per class-like unit in the file. On a translation unit the parser could
not recover – Catch2’s 449 KB extras/catch_amalgamated.cpp, whose ERROR
node spans most of the file – that is one full subtree pass per class,
quadratic in the file’s size, and it was 78% of that file’s inverse scan
(#1496).
Keyed by byte span rather than node identity, so one analyzer generation’s
re-parses of the same content share the index. A nested ERROR that shares
its parent’s span recovers the same classes: the only node the parent adds
is the ERROR itself, and no part of a recovered class is an ERROR.
Implementations§
Trait Implementations§
Source§impl Default for CppRecoveredExportClassIndex
impl Default for CppRecoveredExportClassIndex
Source§fn default() -> CppRecoveredExportClassIndex
fn default() -> CppRecoveredExportClassIndex
Auto Trait Implementations§
impl Freeze for CppRecoveredExportClassIndex
impl RefUnwindSafe for CppRecoveredExportClassIndex
impl Send for CppRecoveredExportClassIndex
impl Sync for CppRecoveredExportClassIndex
impl Unpin for CppRecoveredExportClassIndex
impl UnsafeUnpin for CppRecoveredExportClassIndex
impl UnwindSafe for CppRecoveredExportClassIndex
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more