extend+improve HIR types documentation
This commit is contained in:
parent
ea0dc92972
commit
ad7d7eaba3
1 changed files with 26 additions and 8 deletions
|
@ -836,7 +836,7 @@ pub enum Expr_ {
|
||||||
ExprVec(HirVec<P<Expr>>),
|
ExprVec(HirVec<P<Expr>>),
|
||||||
/// A function call
|
/// A function call
|
||||||
///
|
///
|
||||||
/// The first field resolves to the function itself,
|
/// The first field resolves to the function itself (usually an `ExprPath`),
|
||||||
/// and the second field is the list of arguments
|
/// and the second field is the list of arguments
|
||||||
ExprCall(P<Expr>, HirVec<P<Expr>>),
|
ExprCall(P<Expr>, HirVec<P<Expr>>),
|
||||||
/// A method call (`x.foo::<Bar, Baz>(a, b, c, d)`)
|
/// A method call (`x.foo::<Bar, Baz>(a, b, c, d)`)
|
||||||
|
@ -845,9 +845,9 @@ pub enum Expr_ {
|
||||||
/// The vector of `Ty`s are the ascripted type parameters for the method
|
/// The vector of `Ty`s are the ascripted type parameters for the method
|
||||||
/// (within the angle brackets).
|
/// (within the angle brackets).
|
||||||
///
|
///
|
||||||
/// The first element of the vector of `Expr`s is the expression that evaluates
|
/// The first element of the vector of `Expr`s is the expression that
|
||||||
/// to the object on which the method is being called on (the receiver),
|
/// evaluates to the object on which the method is being called on (the
|
||||||
/// and the remaining elements are the rest of the arguments.
|
/// receiver), and the remaining elements are the rest of the arguments.
|
||||||
///
|
///
|
||||||
/// Thus, `x.foo::<Bar, Baz>(a, b, c, d)` is represented as
|
/// Thus, `x.foo::<Bar, Baz>(a, b, c, d)` is represented as
|
||||||
/// `ExprMethodCall(foo, [Bar, Baz], [x, a, b, c, d])`.
|
/// `ExprMethodCall(foo, [Bar, Baz], [x, a, b, c, d])`.
|
||||||
|
@ -919,13 +919,13 @@ pub enum Expr_ {
|
||||||
/// Inline assembly (from `asm!`), with its outputs and inputs.
|
/// Inline assembly (from `asm!`), with its outputs and inputs.
|
||||||
ExprInlineAsm(InlineAsm, Vec<P<Expr>>, Vec<P<Expr>>),
|
ExprInlineAsm(InlineAsm, Vec<P<Expr>>, Vec<P<Expr>>),
|
||||||
|
|
||||||
/// A struct literal expression.
|
/// A struct or enum variant literal expression.
|
||||||
///
|
///
|
||||||
/// For example, `Foo {x: 1, y: 2}`, or
|
/// For example, `Foo {x: 1, y: 2}`, or
|
||||||
/// `Foo {x: 1, .. base}`, where `base` is the `Option<Expr>`.
|
/// `Foo {x: 1, .. base}`, where `base` is the `Option<Expr>`.
|
||||||
ExprStruct(Path, HirVec<Field>, Option<P<Expr>>),
|
ExprStruct(Path, HirVec<Field>, Option<P<Expr>>),
|
||||||
|
|
||||||
/// A vector literal constructed from one repeated element.
|
/// An array literal constructed from one repeated element.
|
||||||
///
|
///
|
||||||
/// For example, `[1; 5]`. The first expression is the element
|
/// For example, `[1; 5]`. The first expression is the element
|
||||||
/// to be repeated; the second is the number of times to repeat it.
|
/// to be repeated; the second is the number of times to repeat it.
|
||||||
|
@ -950,14 +950,21 @@ pub struct QSelf {
|
||||||
pub position: usize,
|
pub position: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Hints at the original code for a `match _ { .. }`
|
||||||
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)]
|
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)]
|
||||||
pub enum MatchSource {
|
pub enum MatchSource {
|
||||||
|
/// A `match _ { .. }`
|
||||||
Normal,
|
Normal,
|
||||||
|
/// An `if let _ = _ { .. }` (optionally with `else { .. }`
|
||||||
IfLetDesugar {
|
IfLetDesugar {
|
||||||
contains_else_clause: bool,
|
contains_else_clause: bool,
|
||||||
},
|
},
|
||||||
|
/// A `while let _ = _ { .. }` (which was desugared to a
|
||||||
|
/// `loop { match _ { .. } }`
|
||||||
WhileLetDesugar,
|
WhileLetDesugar,
|
||||||
|
/// A desugared `for _ in _ { .. }` loop
|
||||||
ForLoopDesugar,
|
ForLoopDesugar,
|
||||||
|
/// A desugared `?` operator
|
||||||
TryDesugar,
|
TryDesugar,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -975,8 +982,7 @@ pub struct MutTy {
|
||||||
pub mutbl: Mutability,
|
pub mutbl: Mutability,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Represents a method's signature in a trait declaration,
|
/// Represents a method's signature in a trait declaration or implementation.
|
||||||
/// or in an implementation.
|
|
||||||
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
||||||
pub struct MethodSig {
|
pub struct MethodSig {
|
||||||
pub unsafety: Unsafety,
|
pub unsafety: Unsafety,
|
||||||
|
@ -999,13 +1005,20 @@ pub struct TraitItem {
|
||||||
pub span: Span,
|
pub span: Span,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Represents a trait method or associated constant or type
|
||||||
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
||||||
pub enum TraitItem_ {
|
pub enum TraitItem_ {
|
||||||
|
/// An associated constant with an optional value (otherwise `impl`s
|
||||||
|
/// must contain a value)
|
||||||
ConstTraitItem(P<Ty>, Option<P<Expr>>),
|
ConstTraitItem(P<Ty>, Option<P<Expr>>),
|
||||||
|
/// A method with an optional body
|
||||||
MethodTraitItem(MethodSig, Option<P<Block>>),
|
MethodTraitItem(MethodSig, Option<P<Block>>),
|
||||||
|
/// An associated type with (possibly empty) bounds and optional concrete
|
||||||
|
/// type
|
||||||
TypeTraitItem(TyParamBounds, Option<P<Ty>>),
|
TypeTraitItem(TyParamBounds, Option<P<Ty>>),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Represents anything within an `impl` block
|
||||||
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
||||||
pub struct ImplItem {
|
pub struct ImplItem {
|
||||||
pub id: NodeId,
|
pub id: NodeId,
|
||||||
|
@ -1017,10 +1030,15 @@ pub struct ImplItem {
|
||||||
pub span: Span,
|
pub span: Span,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Represents different contents within `impl`s
|
||||||
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
|
||||||
pub enum ImplItemKind {
|
pub enum ImplItemKind {
|
||||||
|
/// An associated constant of the given type, set to the constant result
|
||||||
|
/// of the expression
|
||||||
Const(P<Ty>, P<Expr>),
|
Const(P<Ty>, P<Expr>),
|
||||||
|
/// A method implementation with the given signature and body
|
||||||
Method(MethodSig, P<Block>),
|
Method(MethodSig, P<Block>),
|
||||||
|
/// An associated type
|
||||||
Type(P<Ty>),
|
Type(P<Ty>),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue