diff options
| author | Steve Klabnik <steve@steveklabnik.com> | 2016-07-06 19:13:06 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-07-06 19:13:06 -0400 |
| commit | dfc7da4dc4f43df9ce2109e9e34cc1b8cfff4e49 (patch) | |
| tree | 4aa9e0aead844ce2bbbb8c3c7990eb60c55748af /src | |
| parent | affbbc3e450f76bfd40c3d9d7a2f3fb5982ef2a8 (diff) | |
| parent | 5de684adf6f6b21a6ff56953a63012e15ea4f6d4 (diff) | |
| download | rust-dfc7da4dc4f43df9ce2109e9e34cc1b8cfff4e49.tar.gz rust-dfc7da4dc4f43df9ce2109e9e34cc1b8cfff4e49.zip | |
Rollup merge of #34521 - llogiq:doc-fixes, r=steveklabnik
extend+improve HIR types documentation
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/hir/mod.rs | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/src/librustc/hir/mod.rs b/src/librustc/hir/mod.rs index a139dd152f0..e1e681b7aff 100644 --- a/src/librustc/hir/mod.rs +++ b/src/librustc/hir/mod.rs @@ -836,7 +836,7 @@ pub enum Expr_ { ExprVec(HirVec<P<Expr>>), /// 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 ExprCall(P<Expr>, HirVec<P<Expr>>), /// 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 /// (within the angle brackets). /// - /// The first element of the vector of `Expr`s is the expression that evaluates - /// to the object on which the method is being called on (the receiver), - /// and the remaining elements are the rest of the arguments. + /// The first element of the vector of `Expr`s is the expression that + /// evaluates to the object on which the method is being called on (the + /// receiver), and the remaining elements are the rest of the arguments. /// /// Thus, `x.foo::<Bar, Baz>(a, b, c, d)` is represented as /// `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. ExprInlineAsm(InlineAsm, Vec<P<Expr>>, Vec<P<Expr>>), - /// A struct literal expression. + /// A struct or struct-like variant literal expression. /// /// For example, `Foo {x: 1, y: 2}`, or /// `Foo {x: 1, .. base}`, where `base` is the `Option<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 /// to be repeated; the second is the number of times to repeat it. @@ -950,14 +950,21 @@ pub struct QSelf { pub position: usize, } +/// Hints at the original code for a `match _ { .. }` #[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] pub enum MatchSource { + /// A `match _ { .. }` Normal, + /// An `if let _ = _ { .. }` (optionally with `else { .. }`) IfLetDesugar { contains_else_clause: bool, }, + /// A `while let _ = _ { .. }` (which was desugared to a + /// `loop { match _ { .. } }`) WhileLetDesugar, + /// A desugared `for _ in _ { .. }` loop ForLoopDesugar, + /// A desugared `?` operator TryDesugar, } @@ -975,8 +982,7 @@ pub struct MutTy { pub mutbl: Mutability, } -/// Represents a method's signature in a trait declaration, -/// or in an implementation. +/// Represents a method's signature in a trait declaration or implementation. #[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)] pub struct MethodSig { pub unsafety: Unsafety, @@ -999,13 +1005,20 @@ pub struct TraitItem { pub span: Span, } +/// Represents a trait method or associated constant or type #[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)] pub enum TraitItem_ { + /// An associated constant with an optional value (otherwise `impl`s + /// must contain a value) ConstTraitItem(P<Ty>, Option<P<Expr>>), + /// A method with an optional body MethodTraitItem(MethodSig, Option<P<Block>>), + /// An associated type with (possibly empty) bounds and optional concrete + /// type TypeTraitItem(TyParamBounds, Option<P<Ty>>), } +/// Represents anything within an `impl` block #[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)] pub struct ImplItem { pub id: NodeId, @@ -1017,10 +1030,15 @@ pub struct ImplItem { pub span: Span, } +/// Represents different contents within `impl`s #[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)] pub enum ImplItemKind { + /// An associated constant of the given type, set to the constant result + /// of the expression Const(P<Ty>, P<Expr>), + /// A method implementation with the given signature and body Method(MethodSig, P<Block>), + /// An associated type Type(P<Ty>), } |
