correct hover for items with doc attribute with raw strings
This commit is contained in:
parent
8b3c851dd3
commit
4e76e884bd
@ -637,6 +637,33 @@ fn main() { }
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn hover_shows_fn_doc_attr_raw_string() {
|
||||
check(
|
||||
r##"
|
||||
#[doc = r#"Raw string doc attr"#]
|
||||
pub fn foo<|>(_: &Path) {}
|
||||
|
||||
fn main() { }
|
||||
"##,
|
||||
expect![[r##"
|
||||
*foo*
|
||||
|
||||
```rust
|
||||
test
|
||||
```
|
||||
|
||||
```rust
|
||||
pub fn foo(_: &Path)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Raw string doc attr
|
||||
"##]],
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn hover_shows_struct_field_info() {
|
||||
// Hovering over the field when instantiating
|
||||
|
@ -7,7 +7,7 @@ use itertools::Itertools;
|
||||
use parser::SyntaxKind;
|
||||
|
||||
use crate::{
|
||||
ast::{self, support, AstNode, NameOwner, SyntaxNode},
|
||||
ast::{self, support, token_ext::HasStringValue, AstNode, AstToken, NameOwner, SyntaxNode},
|
||||
SmolStr, SyntaxElement, SyntaxToken, T,
|
||||
};
|
||||
|
||||
@ -53,8 +53,16 @@ impl ast::Attr {
|
||||
pub fn as_simple_key_value(&self) -> Option<(SmolStr, SmolStr)> {
|
||||
let lit = self.literal()?;
|
||||
let key = self.simple_name()?;
|
||||
// FIXME: escape? raw string?
|
||||
let value = lit.syntax().first_token()?.text().trim_matches('"').into();
|
||||
let value_token = lit.syntax().first_token()?;
|
||||
|
||||
let value: SmolStr = if let Some(s) = ast::String::cast(value_token.clone()) {
|
||||
s.value()?.into()
|
||||
} else if let Some(s) = ast::RawString::cast(value_token) {
|
||||
s.value()?.into()
|
||||
} else {
|
||||
return None;
|
||||
};
|
||||
|
||||
Some((key, value))
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user