@@ -16,7 +16,6 @@ use crate::ast::*;
16
16
use crate :: ast:: { AbstractLiteral , Range } ;
17
17
use crate :: named_entity:: Reference ;
18
18
use crate :: syntax:: names:: parse_type_mark;
19
- use crate :: HasTokenSpan ;
20
19
use vhdl_lang:: syntax:: parser:: ParsingContext ;
21
20
22
21
/// LRM 5.2.2 Enumeration types
@@ -81,18 +80,19 @@ fn parse_record_type_definition(
81
80
return Ok ( ( TypeDefinition :: Record ( elem_decls) , end_ident) ) ;
82
81
} ;
83
82
83
+ let start_token = ctx. stream . get_current_token_id ( ) ;
84
+
84
85
let idents = parse_identifier_list ( ctx) ?;
85
86
ctx. stream . expect_kind ( Colon ) ?;
86
87
let subtype = parse_subtype_indication ( ctx) ?;
88
+ let end_token = ctx. stream . expect_kind ( SemiColon ) ?;
87
89
for ident in idents {
88
- let ident_span = ident. token . span ( ) ;
89
90
elem_decls. push ( ElementDeclaration {
90
91
ident : ident. into ( ) ,
91
92
subtype : subtype. clone ( ) ,
92
- span : ident_span ,
93
+ span : TokenSpan :: new ( start_token , end_token ) ,
93
94
} ) ;
94
95
}
95
- ctx. stream . expect_kind ( SemiColon ) ?;
96
96
}
97
97
}
98
98
@@ -531,7 +531,7 @@ end record;",
531
531
let elem_decl = ElementDeclaration {
532
532
ident : code. s1 ( "element" ) . decl_ident ( ) ,
533
533
subtype : code. s1 ( "boolean" ) . subtype_indication ( ) ,
534
- span : code. s1 ( "element" ) . token_span ( ) ,
534
+ span : code. s1 ( "element : boolean; " ) . token_span ( ) ,
535
535
} ;
536
536
537
537
let type_decl = TypeDeclaration {
@@ -560,19 +560,21 @@ end foo;",
560
560
let elem_decl0a = ElementDeclaration {
561
561
ident : code. s1 ( "element" ) . decl_ident ( ) ,
562
562
subtype : code. s1 ( "boolean" ) . subtype_indication ( ) ,
563
- span : code. s1 ( "element" ) . token_span ( ) ,
563
+ span : code. s1 ( "element, field : boolean; " ) . token_span ( ) ,
564
564
} ;
565
565
566
566
let elem_decl0b = ElementDeclaration {
567
567
ident : code. s1 ( "field" ) . decl_ident ( ) ,
568
568
subtype : code. s1 ( "boolean" ) . subtype_indication ( ) ,
569
- span : code. s1 ( "field" ) . token_span ( ) ,
569
+ span : code. s1 ( "element, field : boolean; " ) . token_span ( ) ,
570
570
} ;
571
571
572
572
let elem_decl1 = ElementDeclaration {
573
573
ident : code. s1 ( "other_element" ) . decl_ident ( ) ,
574
574
subtype : code. s1 ( "std_logic_vector(0 to 1)" ) . subtype_indication ( ) ,
575
- span : code. s1 ( "other_element" ) . token_span ( ) ,
575
+ span : code
576
+ . s1 ( "other_element : std_logic_vector(0 to 1);" )
577
+ . token_span ( ) ,
576
578
} ;
577
579
578
580
let type_decl = TypeDeclaration {
0 commit comments