Implement beginnings of generics
- add HIR for generic params - resolve generic params in type paths - add substitions for ADTs - insert type variables for substitutions
This commit is contained in:
@@ -12,6 +12,7 @@ use crate::{
|
||||
expr::BodySyntaxMapping,
|
||||
ty::InferenceResult,
|
||||
adt::VariantData,
|
||||
generics::Generics,
|
||||
code_model_impl::def_id_to_ast,
|
||||
};
|
||||
|
||||
@@ -201,6 +202,10 @@ impl Struct {
|
||||
pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::StructDef>) {
|
||||
def_id_to_ast(db, self.def_id)
|
||||
}
|
||||
|
||||
pub fn generics(&self, db: &impl HirDatabase) -> Arc<Generics> {
|
||||
db.generics(self.def_id)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||
@@ -228,6 +233,10 @@ impl Enum {
|
||||
pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::EnumDef>) {
|
||||
def_id_to_ast(db, self.def_id)
|
||||
}
|
||||
|
||||
pub fn generics(&self, db: &impl HirDatabase) -> Arc<Generics> {
|
||||
db.generics(self.def_id)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||
@@ -339,6 +348,10 @@ impl Function {
|
||||
pub fn infer(&self, db: &impl HirDatabase) -> Arc<InferenceResult> {
|
||||
db.infer(self.def_id)
|
||||
}
|
||||
|
||||
pub fn generics(&self, db: &impl HirDatabase) -> Arc<Generics> {
|
||||
db.generics(self.def_id)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||
@@ -384,6 +397,10 @@ impl Trait {
|
||||
pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::TraitDef>) {
|
||||
def_id_to_ast(db, self.def_id)
|
||||
}
|
||||
|
||||
pub fn generics(&self, db: &impl HirDatabase) -> Arc<Generics> {
|
||||
db.generics(self.def_id)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||
@@ -399,4 +416,8 @@ impl Type {
|
||||
pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc<ast::TypeDef>) {
|
||||
def_id_to_ast(db, self.def_id)
|
||||
}
|
||||
|
||||
pub fn generics(&self, db: &impl HirDatabase) -> Arc<Generics> {
|
||||
db.generics(self.def_id)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user