Skip to content

Commit cfdbfe1

Browse files
committed
fix(ide): handle construct member scopes
1 parent 158cd5f commit cfdbfe1

2 files changed

Lines changed: 42 additions & 0 deletions

File tree

crates/ide/src/completion/engine/expr.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,24 @@ fn collect_container_names(
113113
match container_id {
114114
ScopeId::File(file_id) => collect_file_names(db, file_id, names),
115115
ScopeId::Module(module_id) => collect_module_names(db, module_id, names),
116+
ScopeId::ClockingBlock(clocking_block_id) => {
117+
let scope = db.clocking_block_scope(clocking_block_id);
118+
for (ident, defs) in scope.iter_listing() {
119+
collect_def_names(db, ident, defs, names);
120+
}
121+
}
122+
ScopeId::Checker(checker_id) => {
123+
let scope = db.checker_scope(checker_id.as_in_container());
124+
for (ident, defs) in scope.iter_listing() {
125+
collect_def_names(db, ident, defs, names);
126+
}
127+
}
128+
ScopeId::Covergroup(covergroup_id) => {
129+
let scope = db.covergroup_scope(covergroup_id.as_in_container());
130+
for (ident, defs) in scope.iter_listing() {
131+
collect_def_names(db, ident, defs, names);
132+
}
133+
}
116134
ScopeId::GenerateBlock(generate_block_id) => {
117135
let scope = db.generate_block_scope(generate_block_id);
118136
for (ident, defs) in scope.iter_listing() {

crates/ide/src/references/search.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,30 @@ impl SearchScope {
100100
Self::all(db)
101101
}
102102
}
103+
ScopeId::ClockingBlock(clocking_block_id) => {
104+
let def_id = DefId::new(db, clocking_block_id);
105+
if let Some(InFile { file_id, value: range }) = def_id.range(db) {
106+
Self::single_range(file_id.file_id(), range)
107+
} else {
108+
Self::all(db)
109+
}
110+
}
111+
ScopeId::Checker(checker_id) => {
112+
let def_id = DefId::new(db, checker_id.as_in_container());
113+
if let Some(InFile { file_id, value: range }) = def_id.range(db) {
114+
Self::single_range(file_id.file_id(), range)
115+
} else {
116+
Self::all(db)
117+
}
118+
}
119+
ScopeId::Covergroup(covergroup_id) => {
120+
let def_id = DefId::new(db, covergroup_id.as_in_container());
121+
if let Some(InFile { file_id, value: range }) = def_id.range(db) {
122+
Self::single_range(file_id.file_id(), range)
123+
} else {
124+
Self::all(db)
125+
}
126+
}
103127
}
104128
}
105129

0 commit comments

Comments
 (0)