Skip to content

Commit 4a1b7a8

Browse files
committed
update @export: 对标记了@export的导出变量实施自动导入控制
1 parent 5f9234a commit 4a1b7a8

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

crates/emmylua_code_analysis/src/semantic/visibility/export.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,19 @@ pub fn check_export_visibility(
66
) -> Option<bool> {
77
// 检查模块是否有 export 标记
88
let property_owner_id = module_info.property_owner_id.clone()?;
9-
let property = semantic_model
9+
let common_property = semantic_model
1010
.get_db()
1111
.get_property_index()
12-
.get_property(&property_owner_id)?
13-
.export
14-
.as_ref()?;
12+
.get_property(&property_owner_id);
13+
let Some(common_property) = common_property else {
14+
return Some(true);
15+
};
16+
17+
let Some(property) = common_property.export.as_ref() else {
18+
// 没有 export 标记, 视为可见
19+
return Some(true);
20+
};
21+
1522
match property.scope {
1623
LuaExportScope::Namespace => {
1724
let type_index = semantic_model.get_db().get_type_index();

crates/emmylua_ls/src/handlers/completion/providers/auto_require_provider.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ fn add_module_completion_item(
7070
position: Position,
7171
completions: &mut Vec<CompletionItem>,
7272
) -> Option<()> {
73+
if !check_export_visibility(&builder.semantic_model, &module_info).unwrap_or(false) {
74+
return None;
75+
}
76+
7377
let completion_name = module_name_convert(module_info, file_conversion);
7478
if !completion_name.to_lowercase().starts_with(prefix) {
7579
try_add_member_completion_items(
@@ -123,10 +127,6 @@ fn try_add_member_completion_items(
123127
position: Position,
124128
completions: &mut Vec<CompletionItem>,
125129
) -> Option<()> {
126-
if !check_export_visibility(&builder.semantic_model, &module_info).unwrap_or(false) {
127-
return None;
128-
}
129-
130130
if let Some(export_type) = &module_info.export_type {
131131
match export_type {
132132
LuaType::TableConst(_) | LuaType::Def(_) => {

0 commit comments

Comments
 (0)