Skip to content

Commit 042dfbe

Browse files
committed
Add package body and declaration remaining functionality
1 parent d260d93 commit 042dfbe

File tree

4 files changed

+26
-17
lines changed

4 files changed

+26
-17
lines changed

vhdl_lang/src/analysis/declarative.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -614,11 +614,11 @@ impl<'a, 't> AnalyzeContext<'a, 't> {
614614
scope.add(ent, diagnostics);
615615
}
616616
}
617-
Declaration::PackageDeclaration(..) => {
618-
// TODO
617+
Declaration::PackageDeclaration(ref mut unit) => {
618+
self.analyze_package(unit, diagnostics)?;
619619
}
620-
Declaration::PackageBody(..) => {
621-
// TODO
620+
Declaration::PackageBody(ref mut unit) => {
621+
self.analyze_package_body(unit, diagnostics)?;
622622
}
623623
Declaration::Configuration(..) => {}
624624
Declaration::View(view) => {

vhdl_lang/src/analysis/design_unit.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ impl<'a, 't> AnalyzeContext<'a, 't> {
132132
Ok(())
133133
}
134134

135-
fn analyze_package(
135+
pub fn analyze_package(
136136
&self,
137137
unit: &mut PackageDeclaration,
138138
diagnostics: &mut dyn DiagnosticHandler,
@@ -297,7 +297,7 @@ impl<'a, 't> AnalyzeContext<'a, 't> {
297297
Ok(())
298298
}
299299

300-
fn analyze_package_body(
300+
pub fn analyze_package_body(
301301
&self,
302302
unit: &mut PackageBody,
303303
diagnostics: &mut dyn DiagnosticHandler,

vhdl_lang/src/ast/search.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1075,19 +1075,15 @@ impl Search for Declaration {
10751075
return_if_found!(open_info.search(ctx, searcher));
10761076
return_if_found!(file_name.search(ctx, searcher));
10771077
}
1078-
10791078
Declaration::Package(ref package_instance) => {
10801079
return_if_found!(package_instance.search(ctx, searcher));
10811080
}
1082-
1083-
Declaration::PackageDeclaration(ref package_instance) => {
1084-
return_if_found!(package_instance.search(ctx, searcher)); // @TODO
1081+
Declaration::PackageDeclaration(ref decl) => {
1082+
return_if_found!(decl.search(ctx, searcher));
10851083
}
1086-
1087-
Declaration::PackageBody(ref package_instance) => {
1088-
return_if_found!(package_instance.search(ctx, searcher)); // @TODO
1084+
Declaration::PackageBody(ref body) => {
1085+
return_if_found!(body.search(ctx, searcher));
10891086
}
1090-
10911087
Declaration::Configuration(_) => {
10921088
// @TODO
10931089
}

vhdl_lang/src/named_entity.rs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ use crate::ast::{
99
AttributeDeclaration, AttributeSpecification, ComponentDeclaration, Declaration, Designator,
1010
FileDeclaration, HasIdent, Ident, InterfaceFileDeclaration, InterfacePackageDeclaration,
1111
ModeViewDeclaration, ObjectClass, ObjectDeclaration, PackageInstantiation, SubprogramBody,
12-
SubprogramInstantiation, SubprogramSpecification, TypeDeclaration, WithDecl,
12+
SubprogramInstantiation, SubprogramSpecification, TypeDeclaration, WithDecl, PackageDeclaration,
13+
PackageBody
1314
};
1415
use crate::ast::{ExternalObjectClass, InterfaceDeclaration, InterfaceObjectDeclaration};
1516
use crate::data::*;
@@ -631,8 +632,8 @@ impl HasEntityId for Declaration {
631632
Declaration::SubprogramBody(body) => body.ent_id(),
632633
Declaration::SubprogramInstantiation(decl) => decl.ent_id(),
633634
Declaration::Package(pkg) => pkg.ent_id(),
634-
Declaration::PackageDeclaration(_) => None, // @TODO
635-
Declaration::PackageBody(_) => None, // @TODO
635+
Declaration::PackageDeclaration(pkg) => pkg.ent_id(),
636+
Declaration::PackageBody(pkg) => pkg.ent_id(),
636637
Declaration::Use(_) => None,
637638
Declaration::Configuration(_) => None,
638639
Declaration::View(decl) => decl.ent_id(),
@@ -652,6 +653,18 @@ impl HasEntityId for PackageInstantiation {
652653
}
653654
}
654655

656+
impl HasEntityId for PackageDeclaration {
657+
fn ent_id(&self) -> Option<EntityId> {
658+
self.ident.decl.get()
659+
}
660+
}
661+
662+
impl HasEntityId for PackageBody {
663+
fn ent_id(&self) -> Option<EntityId> {
664+
self.ident.decl.get()
665+
}
666+
}
667+
655668
impl HasEntityId for SubprogramBody {
656669
fn ent_id(&self) -> Option<EntityId> {
657670
self.specification.ent_id()

0 commit comments

Comments
 (0)