mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 21:13:37 +00:00
Move ty lowering diagnostic definitions into a separate module
To keep them organized.
This commit is contained in:
parent
15d2d509d0
commit
82896b2cc4
4 changed files with 34 additions and 29 deletions
|
@ -58,7 +58,7 @@ use crate::{
|
||||||
fold_tys,
|
fold_tys,
|
||||||
generics::Generics,
|
generics::Generics,
|
||||||
infer::{coerce::CoerceMany, expr::ExprIsRead, unify::InferenceTable},
|
infer::{coerce::CoerceMany, expr::ExprIsRead, unify::InferenceTable},
|
||||||
lower::{ImplTraitLoweringMode, TyLoweringDiagnostic},
|
lower::{diagnostics::TyLoweringDiagnostic, ImplTraitLoweringMode},
|
||||||
mir::MirSpan,
|
mir::MirSpan,
|
||||||
to_assoc_type_id,
|
to_assoc_type_id,
|
||||||
traits::FnTrait,
|
traits::FnTrait,
|
||||||
|
|
|
@ -88,10 +88,10 @@ pub use infer::{
|
||||||
PointerCast,
|
PointerCast,
|
||||||
};
|
};
|
||||||
pub use interner::Interner;
|
pub use interner::Interner;
|
||||||
|
pub use lower::diagnostics::*;
|
||||||
pub use lower::{
|
pub use lower::{
|
||||||
associated_type_shorthand_candidates, GenericArgsProhibitedReason, ImplTraitLoweringMode,
|
associated_type_shorthand_candidates, ImplTraitLoweringMode, ParamLoweringMode, TyDefId,
|
||||||
ParamLoweringMode, TyDefId, TyLoweringContext, TyLoweringDiagnostic, TyLoweringDiagnosticKind,
|
TyLoweringContext, ValueTyDefId,
|
||||||
ValueTyDefId,
|
|
||||||
};
|
};
|
||||||
pub use mapping::{
|
pub use mapping::{
|
||||||
from_assoc_type_id, from_chalk_trait_id, from_foreign_def_id, from_placeholder_idx,
|
from_assoc_type_id, from_chalk_trait_id, from_foreign_def_id, from_placeholder_idx,
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
//! - Building the type for an item: This happens through the `ty` query.
|
//! - Building the type for an item: This happens through the `ty` query.
|
||||||
//!
|
//!
|
||||||
//! This usually involves resolving names, collecting generic arguments etc.
|
//! This usually involves resolving names, collecting generic arguments etc.
|
||||||
|
pub(crate) mod diagnostics;
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
cell::OnceCell,
|
cell::OnceCell,
|
||||||
iter, mem,
|
iter, mem,
|
||||||
|
@ -59,6 +61,7 @@ use crate::{
|
||||||
db::HirDatabase,
|
db::HirDatabase,
|
||||||
error_lifetime,
|
error_lifetime,
|
||||||
generics::{generics, trait_self_param_idx, Generics},
|
generics::{generics, trait_self_param_idx, Generics},
|
||||||
|
lower::diagnostics::*,
|
||||||
make_binders,
|
make_binders,
|
||||||
mapping::{from_chalk_trait_id, lt_to_placeholder_idx, ToChalk},
|
mapping::{from_chalk_trait_id, lt_to_placeholder_idx, ToChalk},
|
||||||
static_lifetime, to_assoc_type_id, to_chalk_trait_id, to_placeholder_idx,
|
static_lifetime, to_assoc_type_id, to_chalk_trait_id, to_placeholder_idx,
|
||||||
|
@ -102,31 +105,6 @@ impl ImplTraitLoweringState {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type TypeSource = Either<TypeRefId, hir_def::type_ref::TypeSource>;
|
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq, Clone)]
|
|
||||||
pub struct TyLoweringDiagnostic {
|
|
||||||
pub source: TypeSource,
|
|
||||||
pub kind: TyLoweringDiagnosticKind,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq, Clone)]
|
|
||||||
pub enum TyLoweringDiagnosticKind {
|
|
||||||
GenericArgsProhibited { segment: u32, reason: GenericArgsProhibitedReason },
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
||||||
pub enum GenericArgsProhibitedReason {
|
|
||||||
Module,
|
|
||||||
TyParam,
|
|
||||||
SelfTy,
|
|
||||||
PrimitiveTy,
|
|
||||||
/// When there is a generic enum, within the expression `Enum::Variant`,
|
|
||||||
/// either `Enum` or `Variant` are allowed to have generic arguments, but not both.
|
|
||||||
// FIXME: This is not used now but it should be.
|
|
||||||
EnumVariant,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct TyLoweringContext<'a> {
|
pub struct TyLoweringContext<'a> {
|
||||||
pub db: &'a dyn HirDatabase,
|
pub db: &'a dyn HirDatabase,
|
||||||
|
|
27
crates/hir-ty/src/lower/diagnostics.rs
Normal file
27
crates/hir-ty/src/lower/diagnostics.rs
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
use either::Either;
|
||||||
|
use hir_def::type_ref::TypeRefId;
|
||||||
|
|
||||||
|
type TypeSource = Either<TypeRefId, hir_def::type_ref::TypeSource>;
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Eq, Clone)]
|
||||||
|
pub struct TyLoweringDiagnostic {
|
||||||
|
pub source: TypeSource,
|
||||||
|
pub kind: TyLoweringDiagnosticKind,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Eq, Clone)]
|
||||||
|
pub enum TyLoweringDiagnosticKind {
|
||||||
|
GenericArgsProhibited { segment: u32, reason: GenericArgsProhibitedReason },
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
|
pub enum GenericArgsProhibitedReason {
|
||||||
|
Module,
|
||||||
|
TyParam,
|
||||||
|
SelfTy,
|
||||||
|
PrimitiveTy,
|
||||||
|
/// When there is a generic enum, within the expression `Enum::Variant`,
|
||||||
|
/// either `Enum` or `Variant` are allowed to have generic arguments, but not both.
|
||||||
|
// FIXME: This is not used now but it should be.
|
||||||
|
EnumVariant,
|
||||||
|
}
|
Loading…
Reference in a new issue