3
3
use std:: { fmt, sync:: Arc , sync:: RwLock } ;
4
4
use swc_common:: {
5
5
errors:: { Diagnostic , DiagnosticBuilder , Emitter } ,
6
- FileName , Loc , Span ,
6
+ Loc , Span ,
7
7
} ;
8
8
9
+ /// A buffer for collecting errors from the AST parser.
10
+ #[ derive( Debug , Clone ) ]
11
+ pub struct ErrorBuffer ( Arc < RwLock < Vec < Diagnostic > > > ) ;
12
+
13
+ impl ErrorBuffer {
14
+ pub fn new ( ) -> Self {
15
+ Self ( Arc :: new ( RwLock :: new ( Vec :: new ( ) ) ) )
16
+ }
17
+ }
18
+
19
+ impl Emitter for ErrorBuffer {
20
+ fn emit ( & mut self , diagnostic_builder : & DiagnosticBuilder ) {
21
+ self . 0 . write ( ) . unwrap ( ) . push ( ( * * diagnostic_builder) . clone ( ) ) ;
22
+ }
23
+ }
24
+
9
25
/// A buffer for collecting diagnostic messages from the AST parser.
10
26
#[ derive( Debug ) ]
11
27
pub struct DiagnosticBuffer ( Vec < String > ) ;
@@ -26,39 +42,14 @@ impl DiagnosticBuffer {
26
42
. iter ( )
27
43
. map ( |d| {
28
44
let mut message = d. message ( ) ;
29
-
30
45
if let Some ( span) = d. span . primary_span ( ) {
31
46
let loc = get_loc ( span) ;
32
- let file_name = match & loc. file . name {
33
- FileName :: Real ( p) => p. display ( ) ,
34
- _ => unreachable ! ( ) ,
35
- } ;
36
- message = format ! (
37
- "{} at {}:{}:{}" ,
38
- message, file_name, loc. line, loc. col_display
39
- ) ;
47
+ message = format ! ( "{} at {}:{}" , message, loc. line, loc. col_display) ;
40
48
}
41
-
42
49
message
43
50
} )
44
51
. collect ( ) ;
45
52
46
53
Self ( diagnostics)
47
54
}
48
55
}
49
-
50
- /// A buffer for collecting errors from the AST parser.
51
- #[ derive( Debug , Clone ) ]
52
- pub struct ErrorBuffer ( Arc < RwLock < Vec < Diagnostic > > > ) ;
53
-
54
- impl ErrorBuffer {
55
- pub fn new ( ) -> Self {
56
- Self ( Arc :: new ( RwLock :: new ( Vec :: new ( ) ) ) )
57
- }
58
- }
59
-
60
- impl Emitter for ErrorBuffer {
61
- fn emit ( & mut self , diagnostic_builder : & DiagnosticBuilder ) {
62
- self . 0 . write ( ) . unwrap ( ) . push ( ( * * diagnostic_builder) . clone ( ) ) ;
63
- }
64
- }
0 commit comments