feat: allow component names to be paths (#1725)

This commit is contained in:
Village 2023-09-15 18:18:29 -04:00 committed by GitHub
parent a821abfb11
commit 2c12256260
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 6 deletions

View File

@ -1,4 +1,4 @@
use rstml::node::NodeElement;
use rstml::node::{NodeElement, NodeName};
///
/// Converts `syn::Block` to simple expression
@ -42,10 +42,24 @@ pub fn value_to_string(value: &syn::Expr) -> Option<String> {
}
}
pub fn is_component_tag_name(name: &str) -> bool {
name.starts_with(|c: char| c.is_ascii_uppercase())
pub fn is_component_tag_name(name: &NodeName) -> bool {
match name {
NodeName::Path(path) => {
!path.path.segments.is_empty()
&& path
.path
.segments
.last()
.unwrap()
.ident
.to_string()
.starts_with(|c: char| c.is_ascii_uppercase())
}
NodeName::Block(_) => false,
NodeName::Punctuated(_) => false,
}
}
pub fn is_component_node(node: &NodeElement) -> bool {
is_component_tag_name(&node.name().to_string())
is_component_tag_name(node.name())
}

View File

@ -24,8 +24,7 @@ impl IdeTagHelper {
/// Save stmts for tag name.
/// Emit warning if tag is component.
pub fn save_tag_completion(&mut self, name: &NodeName) {
let tag_name = name.to_string();
if is_component_tag_name(&tag_name) {
if is_component_tag_name(name) {
proc_macro_error::emit_warning!(
name.span(),
"BUG: Component tag is used in regular tag completion."