Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/item_tree/lower.rs')
-rw-r--r--crates/hir-def/src/item_tree/lower.rs28
1 files changed, 12 insertions, 16 deletions
diff --git a/crates/hir-def/src/item_tree/lower.rs b/crates/hir-def/src/item_tree/lower.rs
index 6343b43a01..b500f56b6c 100644
--- a/crates/hir-def/src/item_tree/lower.rs
+++ b/crates/hir-def/src/item_tree/lower.rs
@@ -3,7 +3,7 @@
use std::collections::hash_map::Entry;
use hir_expand::{ast_id_map::AstIdMap, span_map::SpanMapRef, HirFileId};
-use syntax::ast::{self, HasModuleItem, HasTypeBounds};
+use syntax::ast::{self, HasModuleItem, HasTypeBounds, IsString};
use crate::{
generics::{GenericParams, GenericParamsCollector, TypeParamData, TypeParamProvenance},
@@ -13,7 +13,7 @@ use crate::{
use super::*;
-fn id<N: ItemTreeNode>(index: Idx<N>) -> FileItemTreeId<N> {
+fn id<N: ItemTreeModItemNode>(index: Idx<N>) -> FileItemTreeId<N> {
FileItemTreeId(index)
}
@@ -253,25 +253,27 @@ impl<'a> Ctx<'a> {
let generic_params = self.lower_generic_params(HasImplicitSelf::No, enum_);
let variants = match &enum_.variant_list() {
Some(variant_list) => self.lower_variants(variant_list),
- None => IdxRange::new(self.next_variant_idx()..self.next_variant_idx()),
+ None => {
+ FileItemTreeId(self.next_variant_idx())..FileItemTreeId(self.next_variant_idx())
+ }
};
let res = Enum { name, visibility, generic_params, variants, ast_id };
Some(id(self.data().enums.alloc(res)))
}
- fn lower_variants(&mut self, variants: &ast::VariantList) -> IdxRange<Variant> {
+ fn lower_variants(&mut self, variants: &ast::VariantList) -> Range<FileItemTreeId<Variant>> {
let start = self.next_variant_idx();
for variant in variants.variants() {
if let Some(data) = self.lower_variant(&variant) {
let idx = self.data().variants.alloc(data);
self.add_attrs(
- idx.into(),
+ FileItemTreeId(idx).into(),
RawAttrs::new(self.db.upcast(), &variant, self.span_map()),
);
}
}
let end = self.next_variant_idx();
- IdxRange::new(start..end)
+ FileItemTreeId(start)..FileItemTreeId(end)
}
fn lower_variant(&mut self, variant: &ast::Variant) -> Option<Variant> {
@@ -719,16 +721,10 @@ enum HasImplicitSelf {
}
fn lower_abi(abi: ast::Abi) -> Interned<str> {
- // FIXME: Abi::abi() -> Option<SyntaxToken>?
- match abi.syntax().last_token() {
- Some(tok) if tok.kind() == SyntaxKind::STRING => {
- // FIXME: Better way to unescape?
- Interned::new_str(tok.text().trim_matches('"'))
- }
- _ => {
- // `extern` default to be `extern "C"`.
- Interned::new_str("C")
- }
+ match abi.abi_string() {
+ Some(tok) => Interned::new_str(tok.text_without_quotes()),
+ // `extern` default to be `extern "C"`.
+ _ => Interned::new_str("C"),
}
}