Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions rust-toolchain.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[toolchain]
channel = "1.95"
Comment thread
cubic-dev-ai[bot] marked this conversation as resolved.
Outdated
components = ["clippy", "rustfmt"]
98 changes: 43 additions & 55 deletions src/semantic/analyzer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -617,33 +617,33 @@ impl WorkspaceAnalyzer {

for node in file_data.semantic.nodes().iter() {
match node.kind() {
AstKind::StaticMemberExpression(member_expr) => {
if member_expr.property.name.as_str() == property_name {
if let Expression::Identifier(ident) = &member_expr.object {
if ident.name.as_str() == namespace_name {
let span = member_expr.span;
let (line, column) = self.span_to_line_col(&file_data.source, span);
references.push(Reference {
file_path: file_path.to_path_buf(),
line,
column,
});
}
AstKind::StaticMemberExpression(member_expr)
if member_expr.property.name.as_str() == property_name =>
{
if let Expression::Identifier(ident) = &member_expr.object {
if ident.name.as_str() == namespace_name {
let span = member_expr.span;
let (line, column) = self.span_to_line_col(&file_data.source, span);
references.push(Reference {
file_path: file_path.to_path_buf(),
line,
column,
});
}
}
}
AstKind::TSQualifiedName(qualified_name) => {
if qualified_name.right.name.as_str() == property_name {
if let oxc_ast::ast::TSTypeName::IdentifierReference(ident) = &qualified_name.left {
if ident.name.as_str() == namespace_name {
let span = qualified_name.span;
let (line, column) = self.span_to_line_col(&file_data.source, span);
references.push(Reference {
file_path: file_path.to_path_buf(),
line,
column,
});
}
AstKind::TSQualifiedName(qualified_name)
if qualified_name.right.name.as_str() == property_name =>
{
if let oxc_ast::ast::TSTypeName::IdentifierReference(ident) = &qualified_name.left {
if ident.name.as_str() == namespace_name {
let span = qualified_name.span;
let (line, column) = self.span_to_line_col(&file_data.source, span);
references.push(Reference {
file_path: file_path.to_path_buf(),
line,
column,
});
}
}
}
Expand Down Expand Up @@ -977,50 +977,38 @@ impl WorkspaceAnalyzer {
top_level_name = Some("default".to_string());
}
// Top-level declarations that can be exported
AstKind::Function(func) => {
if !found_export_wrapper {
if let Some(id) = &func.id {
top_level_name = Some(id.name.to_string());
}
AstKind::Function(func) if !found_export_wrapper => {
if let Some(id) = &func.id {
top_level_name = Some(id.name.to_string());
}
}
AstKind::Class(class) => {
if !found_export_wrapper {
if let Some(id) = &class.id {
top_level_name = Some(id.name.to_string());
}
AstKind::Class(class) if !found_export_wrapper => {
if let Some(id) = &class.id {
top_level_name = Some(id.name.to_string());
}
}
AstKind::TSInterfaceDeclaration(interface) => {
if !found_export_wrapper {
top_level_name = Some(interface.id.name.to_string());
}
AstKind::TSInterfaceDeclaration(interface) if !found_export_wrapper => {
top_level_name = Some(interface.id.name.to_string());
}
AstKind::TSTypeAliasDeclaration(type_alias) => {
if !found_export_wrapper {
top_level_name = Some(type_alias.id.name.to_string());
}
AstKind::TSTypeAliasDeclaration(type_alias) if !found_export_wrapper => {
top_level_name = Some(type_alias.id.name.to_string());
}
AstKind::TSEnumDeclaration(enum_decl) => {
if !found_export_wrapper {
top_level_name = Some(enum_decl.id.name.to_string());
}
AstKind::TSEnumDeclaration(enum_decl) if !found_export_wrapper => {
top_level_name = Some(enum_decl.id.name.to_string());
}
AstKind::VariableDeclarator(var_decl) => {
AstKind::VariableDeclarator(var_decl) if !found_export_wrapper => {
// For const/let declarations, get the binding name
if !found_export_wrapper {
if let oxc_ast::ast::BindingPatternKind::BindingIdentifier(ident) = &var_decl.id.kind {
top_level_name = Some(ident.name.to_string());
}
if let oxc_ast::ast::BindingPatternKind::BindingIdentifier(ident) = &var_decl.id.kind {
top_level_name = Some(ident.name.to_string());
}
}
AstKind::VariableDeclaration(var_decl) => {
AstKind::VariableDeclaration(var_decl)
if !found_export_wrapper && top_level_name.is_none() =>
{
// Same rationale as the initial-node check: when walking up from a position
// inside the `const`/`let`/`var` keyword we hit VariableDeclaration before
// VariableDeclarator (its child).
if !found_export_wrapper && top_level_name.is_none() {
top_level_name = Self::first_binding_name_from_var_decl(var_decl);
}
top_level_name = Self::first_binding_name_from_var_decl(var_decl);
}
_ => {}
}
Expand Down
Loading