@@ -5,6 +5,7 @@ use std::{
55 sync:: { Arc , Mutex } ,
66} ;
77
8+ use expect_test:: expect_file;
89use lsp_types:: {
910 CompletionItemKind , GotoDefinitionResponse , HoverContents , InlayHintLabel , MarkedString ,
1011} ;
@@ -17,7 +18,6 @@ use crate::{
1718 PLSignatureHelp ,
1819 } ,
1920 compiler:: { compile_dry, ActionType } ,
20- diag:: DiagCode ,
2121 range:: Pos ,
2222 } ,
2323 db:: Database ,
@@ -66,7 +66,14 @@ fn test_diag() {
6666 assert ! ( !comps. is_empty( ) ) ;
6767 let ( file, diag) = & comps[ 0 ] ;
6868 assert ! ( file. contains( "test_diag.pi" ) ) ;
69- let mut diag = diag. clone ( ) ;
69+ let mut diag = diag
70+ . iter ( )
71+ . map ( |d| {
72+ let mut d = d. clone ( ) ;
73+ d. rm_file ( ) ;
74+ d
75+ } )
76+ . collect :: < Vec < _ > > ( ) ;
7077 diag. sort_by ( |a, b| {
7178 if a. raw . range . start . line < b. raw . range . start . line
7279 || ( a. raw . range . start . line == b. raw . range . start . line
@@ -81,95 +88,8 @@ fn test_diag() {
8188 std:: cmp:: Ordering :: Greater
8289 }
8390 } ) ;
84- assert_eq ! ( diag. len( ) , 11 ) ;
85- assert_eq ! (
86- new_diag_range( 10 , 14 , 10 , 15 ) ,
87- diag[ 0 ] . get_range( ) . to_diag_range( )
88- ) ;
89- assert_eq ! (
90- diag[ 0 ] . get_diag_code( ) ,
91- DiagCode :: Err ( crate :: ast:: diag:: ErrorCode :: TYPE_MISMATCH )
92- ) ;
93- assert_eq ! (
94- new_diag_range( 19 , 16 , 19 , 19 ) ,
95- diag[ 1 ] . get_range( ) . to_diag_range( )
96- ) ;
97- assert_eq ! (
98- diag[ 1 ] . get_diag_code( ) ,
99- DiagCode :: Err ( crate :: ast:: diag:: ErrorCode :: TYPE_MISMATCH )
100- ) ;
101- assert_eq ! (
102- new_diag_range( 21 , 12 , 21 , 21 ) ,
103- diag[ 2 ] . get_range( ) . to_diag_range( )
104- ) ;
105- assert_eq ! (
106- diag[ 2 ] . get_diag_code( ) ,
107- DiagCode :: Err ( crate :: ast:: diag:: ErrorCode :: INVALID_DIRECT_UNION_CAST )
108- ) ;
109- assert_eq ! (
110- new_diag_range( 22 , 13 , 22 , 22 ) ,
111- diag[ 3 ] . get_range( ) . to_diag_range( )
112- ) ;
113- assert_eq ! (
114- diag[ 3 ] . get_diag_code( ) ,
115- DiagCode :: Err ( crate :: ast:: diag:: ErrorCode :: INVALID_UNION_CAST )
116- ) ;
117- assert_eq ! (
118- new_diag_range( 23 , 18 , 23 , 21 ) ,
119- diag[ 4 ] . get_range( ) . to_diag_range( )
120- ) ;
121- assert_eq ! (
122- diag[ 4 ] . get_diag_code( ) ,
123- DiagCode :: Err ( crate :: ast:: diag:: ErrorCode :: UNION_DOES_NOT_CONTAIN_TYPE )
124- ) ;
125- assert_eq ! (
126- new_diag_range( 24 , 13 , 24 , 21 ) ,
127- diag[ 5 ] . get_range( ) . to_diag_range( )
128- ) ;
129- assert_eq ! (
130- diag[ 5 ] . get_diag_code( ) ,
131- DiagCode :: Err ( crate :: ast:: diag:: ErrorCode :: INVALID_IS_EXPR )
132- ) ;
133- assert_eq ! (
134- new_diag_range( 28 , 11 , 28 , 11 ) ,
135- diag[ 6 ] . get_range( ) . to_diag_range( )
136- ) ;
137- assert_eq ! (
138- diag[ 6 ] . get_diag_code( ) ,
139- DiagCode :: Err ( crate :: ast:: diag:: ErrorCode :: MISSING_SEMI )
140- ) ;
141- assert_eq ! (
142- new_diag_range( 30 , 8 , 30 , 9 ) ,
143- diag[ 7 ] . get_range( ) . to_diag_range( )
144- ) ;
145- assert_eq ! (
146- diag[ 7 ] . get_diag_code( ) ,
147- DiagCode :: Warn ( crate :: ast:: diag:: WarnCode :: UNUSED_VARIABLE )
148- ) ;
149- assert_eq ! (
150- new_diag_range( 30 , 13 , 30 , 13 ) ,
151- diag[ 8 ] . get_range( ) . to_diag_range( )
152- ) ;
153- assert_eq ! (
154- diag[ 8 ] . get_diag_code( ) ,
155- DiagCode :: Err ( crate :: ast:: diag:: ErrorCode :: MISSING_SEMI )
156- ) ;
157- assert_eq ! (
158- new_diag_range( 31 , 15 , 31 , 15 ) ,
159- diag[ 9 ] . get_range( ) . to_diag_range( )
160- ) ;
161- assert_eq ! (
162- diag[ 9 ] . get_diag_code( ) ,
163- DiagCode :: Err ( crate :: ast:: diag:: ErrorCode :: MISSING_SEMI )
164- ) ;
165- assert_eq ! (
166- new_diag_range( 41 , 5 , 41 , 7 ) ,
167- diag[ 10 ] . get_range( ) . to_diag_range( )
168- ) ;
169- assert_eq ! (
170- diag[ 10 ] . get_diag_code( ) ,
171- DiagCode :: Err ( crate :: ast:: diag:: ErrorCode :: DERIVE_TRAIT_NOT_IMPL )
172- ) ;
91+ let expected = expect_file ! [ "test_diag.expect" ] ;
92+ expected. assert_eq ( & format ! ( "{:#?}" , diag) ) ;
17393}
17494#[ test]
17595fn test_memory_leak ( ) {
0 commit comments