diff options
Diffstat (limited to 'crates/ra_ide_api')
| -rw-r--r-- | crates/ra_ide_api/src/completion/presentation.rs | 9 | ||||
| -rw-r--r-- | crates/ra_ide_api/src/typing.rs | 34 |
2 files changed, 34 insertions, 9 deletions
diff --git a/crates/ra_ide_api/src/completion/presentation.rs b/crates/ra_ide_api/src/completion/presentation.rs index b20329459..bd464d193 100644 --- a/crates/ra_ide_api/src/completion/presentation.rs +++ b/crates/ra_ide_api/src/completion/presentation.rs | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | //! This modules takes care of rendering various definitions as completion items. | 1 | //! This modules takes care of rendering various definitions as completion items. |
| 2 | 2 | ||
| 3 | use hir::{db::HirDatabase, Attrs, Docs, HasSource, HirDisplay, ScopeDef, Ty, TypeWalk}; | 3 | use hir::{db::HirDatabase, Docs, HasAttrs, HasSource, HirDisplay, ScopeDef, Ty, TypeWalk}; |
| 4 | use join_to_string::join; | 4 | use join_to_string::join; |
| 5 | use ra_syntax::ast::NameOwner; | 5 | use ra_syntax::ast::NameOwner; |
| 6 | use test_utils::tested_by; | 6 | use test_utils::tested_by; |
| @@ -285,11 +285,8 @@ impl Completions { | |||
| 285 | } | 285 | } |
| 286 | } | 286 | } |
| 287 | 287 | ||
| 288 | fn is_deprecated(node: impl Attrs, db: &impl HirDatabase) -> bool { | 288 | fn is_deprecated(node: impl HasAttrs, db: &impl HirDatabase) -> bool { |
| 289 | match node.attrs(db) { | 289 | node.attrs(db).has_atom("deprecated") |
| 290 | None => false, | ||
| 291 | Some(attrs) => attrs.iter().any(|x| x.is_simple_atom("deprecated")), | ||
| 292 | } | ||
| 293 | } | 290 | } |
| 294 | 291 | ||
| 295 | fn has_non_default_type_params(def: hir::GenericDef, db: &db::RootDatabase) -> bool { | 292 | fn has_non_default_type_params(def: hir::GenericDef, db: &db::RootDatabase) -> bool { |
diff --git a/crates/ra_ide_api/src/typing.rs b/crates/ra_ide_api/src/typing.rs index d51132f73..21e5be9b3 100644 --- a/crates/ra_ide_api/src/typing.rs +++ b/crates/ra_ide_api/src/typing.rs | |||
| @@ -40,9 +40,13 @@ pub(crate) fn on_enter(db: &RootDatabase, position: FilePosition) -> Option<Sour | |||
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | let prefix = comment.prefix(); | 42 | let prefix = comment.prefix(); |
| 43 | if position.offset | 43 | let comment_range = comment.syntax().text_range(); |
| 44 | < comment.syntax().text_range().start() + TextUnit::of_str(prefix) + TextUnit::from(1) | 44 | if position.offset < comment_range.start() + TextUnit::of_str(prefix) + TextUnit::from(1) { |
| 45 | { | 45 | return None; |
| 46 | } | ||
| 47 | |||
| 48 | // Continuing non-doc line comments (like this one :) ) is annoying | ||
| 49 | if prefix == "//" && comment_range.end() == position.offset { | ||
| 46 | return None; | 50 | return None; |
| 47 | } | 51 | } |
| 48 | 52 | ||
| @@ -247,6 +251,30 @@ impl S { | |||
| 247 | } | 251 | } |
| 248 | ", | 252 | ", |
| 249 | ); | 253 | ); |
| 254 | do_check( | ||
| 255 | r" | ||
| 256 | fn main() { | ||
| 257 | // Fix<|> me | ||
| 258 | let x = 1 + 1; | ||
| 259 | } | ||
| 260 | ", | ||
| 261 | r" | ||
| 262 | fn main() { | ||
| 263 | // Fix | ||
| 264 | // <|> me | ||
| 265 | let x = 1 + 1; | ||
| 266 | } | ||
| 267 | ", | ||
| 268 | ); | ||
| 269 | do_check_noop( | ||
| 270 | r" | ||
| 271 | fn main() { | ||
| 272 | // Fix me<|> | ||
| 273 | let x = 1 + 1; | ||
| 274 | } | ||
| 275 | ", | ||
| 276 | ); | ||
| 277 | |||
| 250 | do_check_noop(r"<|>//! docz"); | 278 | do_check_noop(r"<|>//! docz"); |
| 251 | } | 279 | } |
| 252 | 280 | ||
