@@ -8,7 +8,7 @@ use codespan_reporting::term::termcolor::{BufferedStandardStream, ColorChoice, W
88
99use crate :: core:: binary:: { self , BufferError , ReadError } ;
1010use crate :: files:: { FileId , Files } ;
11- use crate :: source:: { FileRange , Span , StringInterner } ;
11+ use crate :: source:: { ByteRange , Span , StringInterner } ;
1212use crate :: surface:: { self , elaboration} ;
1313use crate :: { core, BUG_REPORT_URL } ;
1414
@@ -192,7 +192,7 @@ impl<'surface, 'core> Driver<'surface, 'core> {
192192 }
193193
194194 pub fn elaborate_and_emit_module ( & mut self , file_id : FileId , pretty_core : bool ) -> Status {
195- let mut context = elaboration:: Context :: new ( & self . interner , & self . core_scope ) ;
195+ let mut context = elaboration:: Context :: new ( file_id , & self . interner , & self . core_scope ) ;
196196
197197 let surface_module = self . parse_module ( file_id) ;
198198 let module = context. elab_module ( & self . core_scope , & surface_module, & mut |m| {
@@ -217,7 +217,7 @@ impl<'surface, 'core> Driver<'surface, 'core> {
217217 }
218218
219219 pub fn elaborate_and_emit_term ( & mut self , file_id : FileId ) -> Status {
220- let mut context = elaboration:: Context :: new ( & self . interner , & self . core_scope ) ;
220+ let mut context = elaboration:: Context :: new ( file_id , & self . interner , & self . core_scope ) ;
221221
222222 // Parse and elaborate the term
223223 let surface_term = self . parse_term ( file_id) ;
@@ -241,7 +241,7 @@ impl<'surface, 'core> Driver<'surface, 'core> {
241241 }
242242
243243 pub fn normalise_and_emit_term ( & mut self , file_id : FileId ) -> Status {
244- let mut context = elaboration:: Context :: new ( & self . interner , & self . core_scope ) ;
244+ let mut context = elaboration:: Context :: new ( file_id , & self . interner , & self . core_scope ) ;
245245
246246 // Parse and elaborate the term
247247 let surface_term = self . parse_term ( file_id) ;
@@ -277,7 +277,8 @@ impl<'surface, 'core> Driver<'surface, 'core> {
277277
278278 let initial_buffer = binary:: Buffer :: from ( buffer_data) ;
279279 let mut binary_context = binary:: Context :: new ( initial_buffer) ;
280- let mut elab_context = elaboration:: Context :: new ( & self . interner , & self . core_scope ) ;
280+ let mut elab_context =
281+ elaboration:: Context :: new ( format_file_id, & self . interner , & self . core_scope ) ;
281282
282283 // Parse and elaborate a module if one was provided
283284 if let Some ( file_id) = module_file_id {
@@ -294,9 +295,14 @@ impl<'surface, 'core> Driver<'surface, 'core> {
294295 // will need to be revisited if we need to support multiple modules, but
295296 // it works for now!
296297 let surface_format = self . parse_term ( format_file_id) ;
297- let format = elab_context. elab_format ( & self . core_scope , & surface_format, & mut |m| {
298- self . emit_diagnostic ( m. to_diagnostic ( & self . interner ) ) ;
299- } ) ;
298+ let format = elab_context. elab_format (
299+ & self . core_scope ,
300+ format_file_id,
301+ & surface_format,
302+ & mut |m| {
303+ self . emit_diagnostic ( m. to_diagnostic ( & self . interner ) ) ;
304+ } ,
305+ ) ;
300306
301307 // Return early if we’ve seen any errors, unless `allow_errors` is enabled
302308 if * self . seen_errors . borrow ( ) && !self . allow_errors {
@@ -330,20 +336,20 @@ impl<'surface, 'core> Driver<'surface, 'core> {
330336 Status :: Ok
331337 }
332338
333- fn parse_module ( & ' surface self , file_id : FileId ) -> surface:: Module < ' surface , FileRange > {
339+ fn parse_module ( & ' surface self , file_id : FileId ) -> surface:: Module < ' surface , ByteRange > {
334340 let source = self . files . get ( file_id) . unwrap ( ) . source ( ) ;
335341 let ( module, messages) =
336342 surface:: Module :: parse ( & self . interner , & self . surface_scope , file_id, source) ;
337- self . emit_diagnostics ( messages. into_iter ( ) . map ( |m| m. to_diagnostic ( ) ) ) ;
343+ self . emit_diagnostics ( messages. into_iter ( ) . map ( |m| m. to_diagnostic ( file_id ) ) ) ;
338344
339345 module
340346 }
341347
342- fn parse_term ( & ' surface self , file_id : FileId ) -> surface:: Term < ' surface , FileRange > {
348+ fn parse_term ( & ' surface self , file_id : FileId ) -> surface:: Term < ' surface , ByteRange > {
343349 let source = self . files . get ( file_id) . unwrap ( ) . source ( ) ;
344350 let ( term, messages) =
345351 surface:: Term :: parse ( & self . interner , & self . surface_scope , file_id, source) ;
346- self . emit_diagnostics ( messages. into_iter ( ) . map ( move |m| m. to_diagnostic ( ) ) ) ;
352+ self . emit_diagnostics ( messages. into_iter ( ) . map ( move |m| m. to_diagnostic ( file_id ) ) ) ;
347353
348354 term
349355 }
0 commit comments