mirror of
https://github.com/rust-lang/rust.git
synced 2025-01-27 07:03:45 +00:00
Move incorrect case diagnostic things into their module
This commit is contained in:
parent
91def936bc
commit
69782f55de
@ -359,7 +359,7 @@ impl ModuleDef {
|
||||
def.diagnostics(db, &mut acc);
|
||||
}
|
||||
None => {
|
||||
for diag in hir_ty::diagnostics::validate_module_item(db, module.id.krate(), id) {
|
||||
for diag in hir_ty::diagnostics::incorrect_case(db, module.id.krate(), id) {
|
||||
acc.push(diag.into())
|
||||
}
|
||||
}
|
||||
@ -1282,7 +1282,7 @@ impl DefWithBody {
|
||||
DefWithBody::Static(it) => it.into(),
|
||||
DefWithBody::Const(it) => it.into(),
|
||||
};
|
||||
for diag in hir_ty::diagnostics::validate_module_item(db, krate, def.into()) {
|
||||
for diag in hir_ty::diagnostics::incorrect_case(db, krate, def.into()) {
|
||||
acc.push(diag.into())
|
||||
}
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ pub(super) fn lower_path(mut path: ast::Path, ctx: &LowerCtx) -> Option<Path> {
|
||||
kind = mod_path.kind;
|
||||
|
||||
segments.extend(mod_path.segments.iter().cloned().rev());
|
||||
generic_args.extend(path_generic_args.iter().cloned().rev());
|
||||
generic_args.extend(Vec::from(path_generic_args).into_iter().rev());
|
||||
|
||||
// Insert the type reference (T in the above example) as Self parameter for the trait
|
||||
let last_segment =
|
||||
|
@ -4,92 +4,10 @@ mod match_check;
|
||||
mod unsafe_check;
|
||||
mod decl_check;
|
||||
|
||||
use std::fmt;
|
||||
|
||||
use base_db::CrateId;
|
||||
use hir_def::ModuleDefId;
|
||||
use hir_expand::HirFileId;
|
||||
use syntax::{ast, AstPtr};
|
||||
|
||||
use crate::db::HirDatabase;
|
||||
|
||||
pub use crate::diagnostics::{
|
||||
decl_check::{incorrect_case, IncorrectCase},
|
||||
expr::{
|
||||
record_literal_missing_fields, record_pattern_missing_fields, BodyValidationDiagnostic,
|
||||
},
|
||||
unsafe_check::missing_unsafe,
|
||||
};
|
||||
|
||||
pub fn validate_module_item(
|
||||
db: &dyn HirDatabase,
|
||||
krate: CrateId,
|
||||
owner: ModuleDefId,
|
||||
) -> Vec<IncorrectCase> {
|
||||
let _p = profile::span("validate_module_item");
|
||||
let mut validator = decl_check::DeclValidator::new(db, krate);
|
||||
validator.validate_item(owner);
|
||||
validator.sink
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum CaseType {
|
||||
// `some_var`
|
||||
LowerSnakeCase,
|
||||
// `SOME_CONST`
|
||||
UpperSnakeCase,
|
||||
// `SomeStruct`
|
||||
UpperCamelCase,
|
||||
}
|
||||
|
||||
impl fmt::Display for CaseType {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
let repr = match self {
|
||||
CaseType::LowerSnakeCase => "snake_case",
|
||||
CaseType::UpperSnakeCase => "UPPER_SNAKE_CASE",
|
||||
CaseType::UpperCamelCase => "CamelCase",
|
||||
};
|
||||
|
||||
write!(f, "{}", repr)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum IdentType {
|
||||
Constant,
|
||||
Enum,
|
||||
Field,
|
||||
Function,
|
||||
Parameter,
|
||||
StaticVariable,
|
||||
Structure,
|
||||
Variable,
|
||||
Variant,
|
||||
}
|
||||
|
||||
impl fmt::Display for IdentType {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
let repr = match self {
|
||||
IdentType::Constant => "Constant",
|
||||
IdentType::Enum => "Enum",
|
||||
IdentType::Field => "Field",
|
||||
IdentType::Function => "Function",
|
||||
IdentType::Parameter => "Parameter",
|
||||
IdentType::StaticVariable => "Static variable",
|
||||
IdentType::Structure => "Structure",
|
||||
IdentType::Variable => "Variable",
|
||||
IdentType::Variant => "Variant",
|
||||
};
|
||||
|
||||
write!(f, "{}", repr)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct IncorrectCase {
|
||||
pub file: HirFileId,
|
||||
pub ident: AstPtr<ast::Name>,
|
||||
pub expected_case: CaseType,
|
||||
pub ident_type: IdentType,
|
||||
pub ident_text: String,
|
||||
pub suggested_text: String,
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
//! Provides validators for the item declarations.
|
||||
//! Provides validators for names of declarations.
|
||||
//!
|
||||
//! This includes the following items:
|
||||
//!
|
||||
@ -12,6 +12,8 @@
|
||||
|
||||
mod case_conv;
|
||||
|
||||
use std::fmt;
|
||||
|
||||
use base_db::CrateId;
|
||||
use hir_def::{
|
||||
adt::VariantData,
|
||||
@ -19,17 +21,19 @@ use hir_def::{
|
||||
src::HasSource,
|
||||
AdtId, AttrDefId, ConstId, EnumId, FunctionId, Lookup, ModuleDefId, StaticId, StructId,
|
||||
};
|
||||
use hir_expand::name::{AsName, Name};
|
||||
use hir_expand::{
|
||||
name::{AsName, Name},
|
||||
HirFileId,
|
||||
};
|
||||
use stdx::{always, never};
|
||||
use syntax::{
|
||||
ast::{self, HasName},
|
||||
AstNode, AstPtr,
|
||||
};
|
||||
|
||||
use crate::{
|
||||
db::HirDatabase,
|
||||
diagnostics::{decl_check::case_conv::*, CaseType, IdentType, IncorrectCase},
|
||||
};
|
||||
use crate::db::HirDatabase;
|
||||
|
||||
use self::case_conv::{to_camel_case, to_lower_snake_case, to_upper_snake_case};
|
||||
|
||||
mod allow {
|
||||
pub(super) const BAD_STYLE: &str = "bad_style";
|
||||
@ -39,6 +43,80 @@ mod allow {
|
||||
pub(super) const NON_CAMEL_CASE_TYPES: &str = "non_camel_case_types";
|
||||
}
|
||||
|
||||
pub fn incorrect_case(
|
||||
db: &dyn HirDatabase,
|
||||
krate: CrateId,
|
||||
owner: ModuleDefId,
|
||||
) -> Vec<IncorrectCase> {
|
||||
let _p = profile::span("validate_module_item");
|
||||
let mut validator = DeclValidator::new(db, krate);
|
||||
validator.validate_item(owner);
|
||||
validator.sink
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum CaseType {
|
||||
// `some_var`
|
||||
LowerSnakeCase,
|
||||
// `SOME_CONST`
|
||||
UpperSnakeCase,
|
||||
// `SomeStruct`
|
||||
UpperCamelCase,
|
||||
}
|
||||
|
||||
impl fmt::Display for CaseType {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
let repr = match self {
|
||||
CaseType::LowerSnakeCase => "snake_case",
|
||||
CaseType::UpperSnakeCase => "UPPER_SNAKE_CASE",
|
||||
CaseType::UpperCamelCase => "CamelCase",
|
||||
};
|
||||
|
||||
write!(f, "{}", repr)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum IdentType {
|
||||
Constant,
|
||||
Enum,
|
||||
Field,
|
||||
Function,
|
||||
Parameter,
|
||||
StaticVariable,
|
||||
Structure,
|
||||
Variable,
|
||||
Variant,
|
||||
}
|
||||
|
||||
impl fmt::Display for IdentType {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
let repr = match self {
|
||||
IdentType::Constant => "Constant",
|
||||
IdentType::Enum => "Enum",
|
||||
IdentType::Field => "Field",
|
||||
IdentType::Function => "Function",
|
||||
IdentType::Parameter => "Parameter",
|
||||
IdentType::StaticVariable => "Static variable",
|
||||
IdentType::Structure => "Structure",
|
||||
IdentType::Variable => "Variable",
|
||||
IdentType::Variant => "Variant",
|
||||
};
|
||||
|
||||
write!(f, "{}", repr)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct IncorrectCase {
|
||||
pub file: HirFileId,
|
||||
pub ident: AstPtr<ast::Name>,
|
||||
pub expected_case: CaseType,
|
||||
pub ident_type: IdentType,
|
||||
pub ident_text: String,
|
||||
pub suggested_text: String,
|
||||
}
|
||||
|
||||
pub(super) struct DeclValidator<'a> {
|
||||
db: &'a dyn HirDatabase,
|
||||
krate: CrateId,
|
||||
|
Loading…
Reference in New Issue
Block a user