Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 44e3b7d

Browse files
committed
Add Definition kind for asm register classes
1 parent 1328b52 commit 44e3b7d

File tree

16 files changed

+214
-28
lines changed

16 files changed

+214
-28
lines changed

src/tools/rust-analyzer/crates/hir-ty/src/tests/macros.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1413,7 +1413,7 @@ fn asm_unit() {
14131413
r#"
14141414
//- minicore: asm
14151415
fn unit() {
1416-
asm!("")
1416+
core::arch::asm!("")
14171417
}
14181418
"#,
14191419
);
@@ -1425,7 +1425,7 @@ fn asm_no_return() {
14251425
r#"
14261426
//- minicore: asm
14271427
fn unit() -> ! {
1428-
asm!("", options(noreturn))
1428+
core::arch::asm!("", options(noreturn))
14291429
}
14301430
"#,
14311431
);
@@ -1440,7 +1440,7 @@ fn main() {
14401440
unsafe {
14411441
let foo = 1;
14421442
let mut o = 0;
1443-
asm!(
1443+
core::arch::asm!(
14441444
"%input = OpLoad _ {0}",
14451445
concat!("%result = ", bar, " _ %input"),
14461446
"OpStore {1} %result",
@@ -1450,7 +1450,7 @@ fn main() {
14501450
o
14511451
14521452
let thread_id: usize;
1453-
asm!("
1453+
core::arch::asm!("
14541454
mov {0}, gs:[0x30]
14551455
mov {0}, [{0}+0x48]
14561456
", out(reg) thread_id, options(pure, readonly, nostack));
@@ -1460,7 +1460,7 @@ fn main() {
14601460
static VirtualFree: usize;
14611461
const OffPtr: usize;
14621462
const OffFn: usize;
1463-
asm!("
1463+
core::arch::asm!("
14641464
push {free_type}
14651465
push {free_size}
14661466
push {base}
@@ -1490,16 +1490,16 @@ fn main() {
14901490
"#,
14911491
expect![[r#"
14921492
!0..122 'builti...muto,)': ()
1493-
!0..190 'builti...tack))': ()
1493+
!0..136 'builti...tack))': ()
14941494
!0..449 'builti...urn),)': !
1495-
10..1254 '{ ... } }': ()
1496-
16..1252 'unsafe... }': ()
1495+
10..1236 '{ ... } }': ()
1496+
16..1234 'unsafe... }': ()
14971497
37..40 'foo': i32
14981498
43..44 '1': i32
14991499
58..63 'mut o': i32
15001500
66..67 '0': i32
1501-
281..282 'o': i32
1502-
296..305 'thread_id': usize
1501+
293..294 'o': i32
1502+
308..317 'thread_id': usize
15031503
"#]],
15041504
)
15051505
}

src/tools/rust-analyzer/crates/ide-completion/src/item.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,7 @@ impl CompletionItemKind {
360360
SymbolKind::Field => "fd",
361361
SymbolKind::Function => "fn",
362362
SymbolKind::Impl => "im",
363+
SymbolKind::InlineAsmRegOrRegClass => "ar",
363364
SymbolKind::Label => "lb",
364365
SymbolKind::LifetimeParam => "lt",
365366
SymbolKind::Local => "lc",

src/tools/rust-analyzer/crates/ide-db/src/defs.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ pub enum Definition {
5050
BuiltinAttr(BuiltinAttr),
5151
ToolModule(ToolModule),
5252
ExternCrateDecl(ExternCrateDecl),
53+
InlineAsmRegOrRegClass(()),
5354
}
5455

5556
impl Definition {
@@ -87,7 +88,8 @@ impl Definition {
8788
| Definition::BuiltinType(_)
8889
| Definition::BuiltinLifetime(_)
8990
| Definition::TupleField(_)
90-
| Definition::ToolModule(_) => return None,
91+
| Definition::ToolModule(_)
92+
| Definition::InlineAsmRegOrRegClass(_) => return None,
9193
};
9294
Some(module)
9395
}
@@ -121,7 +123,8 @@ impl Definition {
121123
| Definition::Local(_)
122124
| Definition::GenericParam(_)
123125
| Definition::Label(_)
124-
| Definition::DeriveHelper(_) => return None,
126+
| Definition::DeriveHelper(_)
127+
| Definition::InlineAsmRegOrRegClass(_) => return None,
125128
};
126129
Some(vis)
127130
}
@@ -150,6 +153,7 @@ impl Definition {
150153
Definition::ToolModule(_) => return None, // FIXME
151154
Definition::DeriveHelper(it) => it.name(db),
152155
Definition::ExternCrateDecl(it) => return it.alias_or_name(db),
156+
Definition::InlineAsmRegOrRegClass(_) => return None, // FIXME
153157
};
154158
Some(name)
155159
}
@@ -212,6 +216,7 @@ impl Definition {
212216
Definition::ToolModule(_) => None,
213217
Definition::DeriveHelper(_) => None,
214218
Definition::TupleField(_) => None,
219+
Definition::InlineAsmRegOrRegClass(_) => None,
215220
};
216221

217222
docs.or_else(|| {
@@ -268,6 +273,8 @@ impl Definition {
268273
Definition::DeriveHelper(it) => {
269274
format!("derive_helper {}", it.name(db).display(db, edition))
270275
}
276+
// FIXME
277+
Definition::InlineAsmRegOrRegClass(_) => "inline_asm_reg_or_reg_class".to_owned(),
271278
}
272279
}
273280
}

src/tools/rust-analyzer/crates/ide-db/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ pub enum SymbolKind {
224224
Function,
225225
Method,
226226
Impl,
227+
InlineAsmRegOrRegClass,
227228
Label,
228229
LifetimeParam,
229230
Local,

src/tools/rust-analyzer/crates/ide-db/src/rename.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,8 @@ impl Definition {
205205
| Definition::BuiltinAttr(_)
206206
| Definition::SelfType(_)
207207
| Definition::ToolModule(_)
208-
| Definition::TupleField(_) => return None,
208+
| Definition::TupleField(_)
209+
| Definition::InlineAsmRegOrRegClass(_) => return None,
209210
// FIXME: This should be doable in theory
210211
Definition::DeriveHelper(_) => return None,
211212
};

src/tools/rust-analyzer/crates/ide/src/doc_links.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,8 @@ pub(crate) fn resolve_doc_path_for_def(
219219
| Definition::Local(_)
220220
| Definition::GenericParam(_)
221221
| Definition::Label(_)
222-
| Definition::DeriveHelper(_) => None,
222+
| Definition::DeriveHelper(_)
223+
| Definition::InlineAsmRegOrRegClass(_) => None,
223224
}
224225
.map(Definition::from)
225226
}
@@ -672,7 +673,8 @@ fn filename_and_frag_for_def(
672673
| Definition::BuiltinAttr(_)
673674
| Definition::BuiltinLifetime(_)
674675
| Definition::ToolModule(_)
675-
| Definition::DeriveHelper(_) => return None,
676+
| Definition::DeriveHelper(_)
677+
| Definition::InlineAsmRegOrRegClass(_) => return None,
676678
};
677679

678680
Some((def, res, None))

src/tools/rust-analyzer/crates/ide/src/moniker.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ pub(crate) fn def_to_kind(db: &RootDatabase, def: Definition) -> SymbolInformati
228228
Definition::BuiltinAttr(..) => Attribute,
229229
Definition::ToolModule(..) => Module,
230230
Definition::ExternCrateDecl(..) => Module,
231+
Definition::InlineAsmRegOrRegClass(..) => Module,
231232
}
232233
}
233234

@@ -320,7 +321,8 @@ pub(crate) fn def_to_moniker(
320321
| Definition::DeriveHelper(_)
321322
| Definition::BuiltinLifetime(_)
322323
| Definition::BuiltinAttr(_)
323-
| Definition::ToolModule(_) => return None,
324+
| Definition::ToolModule(_)
325+
| Definition::InlineAsmRegOrRegClass(_) => return None,
324326

325327
Definition::Local(local) => {
326328
if !local.is_param(db) {

src/tools/rust-analyzer/crates/ide/src/navigation_target.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ impl TryToNav for Definition {
242242
| Definition::BuiltinType(_)
243243
| Definition::TupleField(_)
244244
| Definition::ToolModule(_)
245+
| Definition::InlineAsmRegOrRegClass(_)
245246
| Definition::BuiltinAttr(_) => None,
246247
// FIXME: The focus range should be set to the helper declaration
247248
Definition::DeriveHelper(it) => it.derive().try_to_nav(db),

src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/highlight.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,9 @@ pub(super) fn highlight_def(
534534
Definition::BuiltinAttr(_) => Highlight::new(HlTag::Symbol(SymbolKind::BuiltinAttr)),
535535
Definition::ToolModule(_) => Highlight::new(HlTag::Symbol(SymbolKind::ToolModule)),
536536
Definition::DeriveHelper(_) => Highlight::new(HlTag::Symbol(SymbolKind::DeriveHelper)),
537+
Definition::InlineAsmRegOrRegClass(_) => {
538+
Highlight::new(HlTag::Symbol(SymbolKind::InlineAsmRegOrRegClass))
539+
}
537540
};
538541

539542
let def_crate = def.krate(db);

src/tools/rust-analyzer/crates/ide/src/syntax_highlighting/inject.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,7 @@ fn module_def_to_hl_tag(def: Definition) -> HlTag {
315315
Definition::BuiltinAttr(_) => SymbolKind::BuiltinAttr,
316316
Definition::ToolModule(_) => SymbolKind::ToolModule,
317317
Definition::DeriveHelper(_) => SymbolKind::DeriveHelper,
318+
Definition::InlineAsmRegOrRegClass(_) => SymbolKind::InlineAsmRegOrRegClass,
318319
};
319320
HlTag::Symbol(symbol)
320321
}

0 commit comments

Comments
 (0)