mirror of
https://github.com/rust-lang/rust.git
synced 2025-01-28 15:43:21 +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);
|
def.diagnostics(db, &mut acc);
|
||||||
}
|
}
|
||||||
None => {
|
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())
|
acc.push(diag.into())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1282,7 +1282,7 @@ impl DefWithBody {
|
|||||||
DefWithBody::Static(it) => it.into(),
|
DefWithBody::Static(it) => it.into(),
|
||||||
DefWithBody::Const(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())
|
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;
|
kind = mod_path.kind;
|
||||||
|
|
||||||
segments.extend(mod_path.segments.iter().cloned().rev());
|
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
|
// Insert the type reference (T in the above example) as Self parameter for the trait
|
||||||
let last_segment =
|
let last_segment =
|
||||||
|
@ -4,92 +4,10 @@ mod match_check;
|
|||||||
mod unsafe_check;
|
mod unsafe_check;
|
||||||
mod decl_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::{
|
pub use crate::diagnostics::{
|
||||||
|
decl_check::{incorrect_case, IncorrectCase},
|
||||||
expr::{
|
expr::{
|
||||||
record_literal_missing_fields, record_pattern_missing_fields, BodyValidationDiagnostic,
|
record_literal_missing_fields, record_pattern_missing_fields, BodyValidationDiagnostic,
|
||||||
},
|
},
|
||||||
unsafe_check::missing_unsafe,
|
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:
|
//! This includes the following items:
|
||||||
//!
|
//!
|
||||||
@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
mod case_conv;
|
mod case_conv;
|
||||||
|
|
||||||
|
use std::fmt;
|
||||||
|
|
||||||
use base_db::CrateId;
|
use base_db::CrateId;
|
||||||
use hir_def::{
|
use hir_def::{
|
||||||
adt::VariantData,
|
adt::VariantData,
|
||||||
@ -19,17 +21,19 @@ use hir_def::{
|
|||||||
src::HasSource,
|
src::HasSource,
|
||||||
AdtId, AttrDefId, ConstId, EnumId, FunctionId, Lookup, ModuleDefId, StaticId, StructId,
|
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 stdx::{always, never};
|
||||||
use syntax::{
|
use syntax::{
|
||||||
ast::{self, HasName},
|
ast::{self, HasName},
|
||||||
AstNode, AstPtr,
|
AstNode, AstPtr,
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::{
|
use crate::db::HirDatabase;
|
||||||
db::HirDatabase,
|
|
||||||
diagnostics::{decl_check::case_conv::*, CaseType, IdentType, IncorrectCase},
|
use self::case_conv::{to_camel_case, to_lower_snake_case, to_upper_snake_case};
|
||||||
};
|
|
||||||
|
|
||||||
mod allow {
|
mod allow {
|
||||||
pub(super) const BAD_STYLE: &str = "bad_style";
|
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(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> {
|
pub(super) struct DeclValidator<'a> {
|
||||||
db: &'a dyn HirDatabase,
|
db: &'a dyn HirDatabase,
|
||||||
krate: CrateId,
|
krate: CrateId,
|
||||||
|
Loading…
Reference in New Issue
Block a user