From 8eaf7952ae4ba510d448a7e310a3e2dcfd09f6d3 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 6 Nov 2018 22:47:38 +0300 Subject: ra_syntax::File is just RootNode --- crates/ra_syntax/src/ast/generated.rs.tera | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'crates/ra_syntax/src/ast/generated.rs.tera') diff --git a/crates/ra_syntax/src/ast/generated.rs.tera b/crates/ra_syntax/src/ast/generated.rs.tera index d4fc6b5bd..131ee09ec 100644 --- a/crates/ra_syntax/src/ast/generated.rs.tera +++ b/crates/ra_syntax/src/ast/generated.rs.tera @@ -11,6 +11,8 @@ the below applies to the result of this template #![cfg_attr(rustfmt, rustfmt_skip)] +use std::hash::{Hash, Hasher}; + use crate::{ ast, SyntaxNode, SyntaxNodeRef, AstNode, @@ -21,7 +23,7 @@ use crate::{ // {{ node }} {%- if methods.enum %} -#[derive(Debug, Clone, Copy)] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum {{ node }}<'a> { {%- for kind in methods.enum %} {{ kind }}({{ kind }}<'a>), @@ -46,12 +48,20 @@ impl<'a> AstNode<'a> for {{ node }}<'a> { } } {% else %} -#[derive(Debug, Clone, Copy)] +#[derive(Debug, Clone, Copy,)] pub struct {{ node }}Node = OwnedRoot> { - syntax: SyntaxNode, + pub(crate) syntax: SyntaxNode, } pub type {{ node }}<'a> = {{ node }}Node>; +impl, R2: TreeRoot> PartialEq<{{node}}Node> for {{node}}Node { + fn eq(&self, other: &{{node}}Node) -> bool { self.syntax == other.syntax } +} +impl> Eq for {{node}}Node {} +impl> Hash for {{node}}Node { + fn hash(&self, state: &mut H) { self.syntax.hash(state) } +} + impl<'a> AstNode<'a> for {{ node }}<'a> { fn cast(syntax: SyntaxNodeRef<'a>) -> Option { match syntax.kind() { -- cgit v1.2.3