Skip to content

Commit 132cde0

Browse files
author
Johannes Zeppenfeld
committed
Add retrieval of type, object, file, alias, component and entity declarations for testing
1 parent d0ef021 commit 132cde0

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

vhdl_lang/src/syntax/test.rs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,23 @@
44
//
55
// Copyright (c) 2018, Olof Kraigher olof.kraigher@gmail.com
66

7+
use super::alias_declaration::parse_alias_declaration;
78
use super::common::ParseResult;
9+
use super::component_declaration::parse_component_declaration;
810
use super::concurrent_statement::parse_labeled_concurrent_statement;
911
use super::context::{parse_library_clause, parse_use_clause};
1012
use super::declarative_part::parse_declarative_part_leave_end_token;
11-
use super::design_unit::parse_design_file;
13+
use super::design_unit::{parse_design_file, parse_entity_declaration};
1214
use super::expression::{parse_aggregate, parse_choices, parse_expression};
1315
use super::interface_declaration::{parse_generic, parse_parameter, parse_port};
1416
use super::names::{parse_association_list, parse_designator, parse_name, parse_selected_name};
17+
use super::object_declaration::{parse_file_declaration, parse_object_declaration};
1518
use super::range::{parse_discrete_range, parse_range};
1619
use super::sequential_statement::parse_sequential_statement;
1720
use super::subprogram::{parse_signature, parse_subprogram_declaration_no_semi};
1821
use super::subtype_indication::parse_subtype_indication;
1922
use super::tokens::{Comment, Symbols, Token, TokenStream, Tokenizer};
23+
use super::type_declaration::parse_type_declaration;
2024
use super::waveform::parse_waveform;
2125
use crate::ast;
2226
use crate::ast::*;
@@ -334,6 +338,30 @@ impl Code {
334338
self.symbols.symtab().insert_utf8(name)
335339
}
336340

341+
pub fn type_decl(&self) -> TypeDeclaration {
342+
self.with_stream_no_diagnostics(parse_type_declaration)
343+
}
344+
345+
pub fn object_decl(&self) -> ObjectDeclaration {
346+
self.parse_ok(parse_object_declaration).remove(0)
347+
}
348+
349+
pub fn file_decl(&self) -> FileDeclaration {
350+
self.parse_ok(parse_file_declaration).remove(0)
351+
}
352+
353+
pub fn alias_decl(&self) -> AliasDeclaration {
354+
self.parse_ok(parse_alias_declaration)
355+
}
356+
357+
pub fn component_decl(&self) -> ComponentDeclaration {
358+
self.with_stream_no_diagnostics(parse_component_declaration)
359+
}
360+
361+
pub fn entity_decl(&self) -> EntityDeclaration {
362+
self.with_stream_no_diagnostics(parse_entity_declaration)
363+
}
364+
337365
pub fn subtype_indication(&self) -> SubtypeIndication {
338366
self.parse_ok(parse_subtype_indication)
339367
}

0 commit comments

Comments
 (0)