diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index 2cfe2cc896cb..57a3bf86b0e5 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -167,6 +167,17 @@ impl GenericArgs { pub enum GenericArg { Lifetime(Lifetime), Type(P), + Const(AnonConst), +} + +impl GenericArg { + pub fn span(&self) -> Span { + match self { + GenericArg::Lifetime(lt) => lt.ident.span, + GenericArg::Type(ty) => ty.span, + GenericArg::Const(ct) => ct.value.span, + } + } } /// A path like `Foo<'a, T>` @@ -300,9 +311,8 @@ pub type GenericBounds = Vec; pub enum GenericParamKind { /// A lifetime definition (e.g., `'a: 'b + 'c + 'd`). Lifetime, - Type { - default: Option>, - }, + Type { default: Option> }, + Const { ty: P }, } #[derive(Clone, RustcEncodable, RustcDecodable, Debug)]