From 13110f48e948d7554500aefc336e72f96041386b Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 28 Aug 2018 00:42:13 +0300 Subject: Log errors --- crates/libanalysis/src/lib.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'crates/libanalysis/src') diff --git a/crates/libanalysis/src/lib.rs b/crates/libanalysis/src/lib.rs index 7a34d354e..fe2c3c2e6 100644 --- a/crates/libanalysis/src/lib.rs +++ b/crates/libanalysis/src/lib.rs @@ -15,6 +15,7 @@ mod module_map; use std::{ fmt, path::{Path, PathBuf}, + panic, sync::{ Arc, atomic::{AtomicBool, Ordering::SeqCst}, @@ -307,8 +308,15 @@ impl FileData { } fn syntax(&self) -> &File { - self.syntax - .get_or_init(|| File::parse(&self.text)) + let text = &self.text; + let syntax = &self.syntax; + match panic::catch_unwind(panic::AssertUnwindSafe(|| syntax.get_or_init(|| File::parse(text)))) { + Ok(file) => file, + Err(err) => { + error!("Parser paniced on:\n------\n{}\n------\n", &self.text); + panic::resume_unwind(err) + } + } } fn syntax_transient(&self) -> File { -- cgit v1.2.3