From a78806ebfaa11516e1184dd865bb386fef29b4a9 Mon Sep 17 00:00:00 2001 From: Eytan Singher Date: Tue, 30 Sep 2025 17:32:37 +0300 Subject: [PATCH] Tracking SyntaxNode and interning through a tracked function --- .../src/generator.rs | 10 +- crates/cairo-lang-syntax/src/node/ast.rs | 883 ++++++++---------- crates/cairo-lang-syntax/src/node/db.rs | 23 +- crates/cairo-lang-syntax/src/node/mod.rs | 145 ++- 4 files changed, 536 insertions(+), 525 deletions(-) diff --git a/crates/cairo-lang-syntax-codegen/src/generator.rs b/crates/cairo-lang-syntax-codegen/src/generator.rs index 88262e37dac..478e70e63a5 100644 --- a/crates/cairo-lang-syntax-codegen/src/generator.rs +++ b/crates/cairo-lang-syntax-codegen/src/generator.rs @@ -502,7 +502,7 @@ fn gen_enum_code( } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - $(&ptr_name)(self.as_syntax_node().long(db).stable_ptr) + $(&ptr_name)(self.as_syntax_node().stable_ptr(db)) } } impl<'db> $(&name)<'db> { @@ -532,7 +532,7 @@ fn gen_token_code(name: String) -> rust::Tokens { }.intern(db)) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } @@ -570,7 +570,7 @@ fn gen_token_code(name: String) -> rust::Tokens { }.intern(db)) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => panic!( "Expected a token {:?}, not an internal node", @@ -579,7 +579,7 @@ fn gen_token_code(name: String) -> rust::Tokens { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -658,7 +658,7 @@ fn gen_struct_code(name: String, members: Vec, is_terminal: bool) -> rus }.intern(db)) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node{children,..} = &self.node.long(db).green.long(db).details else { + let GreenNodeDetails::Node{children,..} = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) diff --git a/crates/cairo-lang-syntax/src/node/ast.rs b/crates/cairo-lang-syntax/src/node/ast.rs index 4d442caa5dc..357a7dff718 100644 --- a/crates/cairo-lang-syntax/src/node/ast.rs +++ b/crates/cairo-lang-syntax/src/node/ast.rs @@ -256,7 +256,7 @@ impl<'db> TypedSyntaxNode<'db> for Trivium<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - TriviumPtr(self.as_syntax_node().long(db).stable_ptr) + TriviumPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> Trivium<'db> { @@ -713,7 +713,7 @@ impl<'db> TypedSyntaxNode<'db> for Expr<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - ExprPtr(self.as_syntax_node().long(db).stable_ptr) + ExprPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> Expr<'db> { @@ -1036,7 +1036,7 @@ impl<'db> TypedSyntaxNode<'db> for ArgClause<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - ArgClausePtr(self.as_syntax_node().long(db).stable_ptr) + ArgClausePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> ArgClause<'db> { @@ -1686,7 +1686,7 @@ impl<'db> TypedSyntaxNode<'db> for PathSegment<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - PathSegmentPtr(self.as_syntax_node().long(db).stable_ptr) + PathSegmentPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> PathSegment<'db> { @@ -1871,7 +1871,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionTerminalColonColon<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionTerminalColonColonPtr(self.as_syntax_node().long(db).stable_ptr) + OptionTerminalColonColonPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionTerminalColonColon<'db> { @@ -2234,7 +2234,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionTerminalDollar<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionTerminalDollarPtr(self.as_syntax_node().long(db).stable_ptr) + OptionTerminalDollarPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionTerminalDollar<'db> { @@ -2830,7 +2830,7 @@ impl<'db> TypedSyntaxNode<'db> for UnaryOperator<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - UnaryOperatorPtr(self.as_syntax_node().long(db).stable_ptr) + UnaryOperatorPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> UnaryOperator<'db> { @@ -3431,7 +3431,7 @@ impl<'db> TypedSyntaxNode<'db> for BinaryOperator<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - BinaryOperatorPtr(self.as_syntax_node().long(db).stable_ptr) + BinaryOperatorPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> BinaryOperator<'db> { @@ -3850,7 +3850,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionArgListParenthesized<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionArgListParenthesizedPtr(self.as_syntax_node().long(db).stable_ptr) + OptionArgListParenthesizedPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionArgListParenthesized<'db> { @@ -4822,7 +4822,7 @@ impl<'db> TypedSyntaxNode<'db> for Condition<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - ConditionPtr(self.as_syntax_node().long(db).stable_ptr) + ConditionPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> Condition<'db> { @@ -5092,7 +5092,7 @@ impl<'db> TypedSyntaxNode<'db> for BlockOrIf<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - BlockOrIfPtr(self.as_syntax_node().long(db).stable_ptr) + BlockOrIfPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> BlockOrIf<'db> { @@ -5586,7 +5586,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionElseClause<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionElseClausePtr(self.as_syntax_node().long(db).stable_ptr) + OptionElseClausePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionElseClause<'db> { @@ -6154,7 +6154,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionFixedSizeArraySize<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionFixedSizeArraySizePtr(self.as_syntax_node().long(db).stable_ptr) + OptionFixedSizeArraySizePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionFixedSizeArraySize<'db> { @@ -6430,7 +6430,7 @@ impl<'db> TypedSyntaxNode<'db> for ClosureParamWrapper<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - ClosureParamWrapperPtr(self.as_syntax_node().long(db).stable_ptr) + ClosureParamWrapperPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> ClosureParamWrapper<'db> { @@ -6717,7 +6717,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionStructArgExpr<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionStructArgExprPtr(self.as_syntax_node().long(db).stable_ptr) + OptionStructArgExprPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionStructArgExpr<'db> { @@ -7083,7 +7083,7 @@ impl<'db> TypedSyntaxNode<'db> for StructArg<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - StructArgPtr(self.as_syntax_node().long(db).stable_ptr) + StructArgPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> StructArg<'db> { @@ -7515,7 +7515,7 @@ impl<'db> TypedSyntaxNode<'db> for WrappedArgList<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - WrappedArgListPtr(self.as_syntax_node().long(db).stable_ptr) + WrappedArgListPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> WrappedArgList<'db> { @@ -7854,7 +7854,7 @@ impl<'db> TypedSyntaxNode<'db> for Pattern<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - PatternPtr(self.as_syntax_node().long(db).stable_ptr) + PatternPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> Pattern<'db> { @@ -8691,7 +8691,7 @@ impl<'db> TypedSyntaxNode<'db> for PatternStructParam<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - PatternStructParamPtr(self.as_syntax_node().long(db).stable_ptr) + PatternStructParamPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> PatternStructParam<'db> { @@ -9101,7 +9101,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionPatternEnumInnerPattern<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionPatternEnumInnerPatternPtr(self.as_syntax_node().long(db).stable_ptr) + OptionPatternEnumInnerPatternPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionPatternEnumInnerPattern<'db> { @@ -9364,7 +9364,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionTypeClause<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionTypeClausePtr(self.as_syntax_node().long(db).stable_ptr) + OptionTypeClausePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionTypeClause<'db> { @@ -9628,7 +9628,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionReturnTypeClause<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionReturnTypeClausePtr(self.as_syntax_node().long(db).stable_ptr) + OptionReturnTypeClausePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionReturnTypeClause<'db> { @@ -9881,7 +9881,7 @@ impl<'db> TypedSyntaxNode<'db> for Statement<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - StatementPtr(self.as_syntax_node().long(db).stable_ptr) + StatementPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> Statement<'db> { @@ -10377,7 +10377,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionLetElseClause<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionLetElseClausePtr(self.as_syntax_node().long(db).stable_ptr) + OptionLetElseClausePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionLetElseClause<'db> { @@ -10549,7 +10549,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionTerminalSemicolon<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionTerminalSemicolonPtr(self.as_syntax_node().long(db).stable_ptr) + OptionTerminalSemicolonPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionTerminalSemicolon<'db> { @@ -11005,7 +11005,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionExprClause<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionExprClausePtr(self.as_syntax_node().long(db).stable_ptr) + OptionExprClausePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionExprClause<'db> { @@ -11650,7 +11650,7 @@ impl<'db> TypedSyntaxNode<'db> for Modifier<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - ModifierPtr(self.as_syntax_node().long(db).stable_ptr) + ModifierPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> Modifier<'db> { @@ -12051,7 +12051,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionImplicitsClause<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionImplicitsClausePtr(self.as_syntax_node().long(db).stable_ptr) + OptionImplicitsClausePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionImplicitsClause<'db> { @@ -12223,7 +12223,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionTerminalNoPanic<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionTerminalNoPanicPtr(self.as_syntax_node().long(db).stable_ptr) + OptionTerminalNoPanicPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionTerminalNoPanic<'db> { @@ -12395,7 +12395,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionTerminalConst<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionTerminalConstPtr(self.as_syntax_node().long(db).stable_ptr) + OptionTerminalConstPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionTerminalConst<'db> { @@ -13337,7 +13337,7 @@ impl<'db> TypedSyntaxNode<'db> for ModuleItem<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - ModuleItemPtr(self.as_syntax_node().long(db).stable_ptr) + ModuleItemPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> ModuleItem<'db> { @@ -13986,7 +13986,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionVisibilityPubArgumentClause<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionVisibilityPubArgumentClausePtr(self.as_syntax_node().long(db).stable_ptr) + OptionVisibilityPubArgumentClausePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionVisibilityPubArgumentClause<'db> { @@ -14254,7 +14254,7 @@ impl<'db> TypedSyntaxNode<'db> for Visibility<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - VisibilityPtr(self.as_syntax_node().long(db).stable_ptr) + VisibilityPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> Visibility<'db> { @@ -14463,7 +14463,7 @@ impl<'db> TypedSyntaxNode<'db> for MaybeModuleBody<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - MaybeModuleBodyPtr(self.as_syntax_node().long(db).stable_ptr) + MaybeModuleBodyPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> MaybeModuleBody<'db> { @@ -15428,7 +15428,7 @@ impl<'db> TypedSyntaxNode<'db> for MaybeTraitBody<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - MaybeTraitBodyPtr(self.as_syntax_node().long(db).stable_ptr) + MaybeTraitBodyPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> MaybeTraitBody<'db> { @@ -15743,7 +15743,7 @@ impl<'db> TypedSyntaxNode<'db> for TraitItem<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - TraitItemPtr(self.as_syntax_node().long(db).stable_ptr) + TraitItemPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> TraitItem<'db> { @@ -16408,7 +16408,7 @@ impl<'db> TypedSyntaxNode<'db> for MaybeTraitFunctionBody<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - MaybeTraitFunctionBodyPtr(self.as_syntax_node().long(db).stable_ptr) + MaybeTraitFunctionBodyPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> MaybeTraitFunctionBody<'db> { @@ -16727,7 +16727,7 @@ impl<'db> TypedSyntaxNode<'db> for MaybeImplBody<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - MaybeImplBodyPtr(self.as_syntax_node().long(db).stable_ptr) + MaybeImplBodyPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> MaybeImplBody<'db> { @@ -17152,7 +17152,7 @@ impl<'db> TypedSyntaxNode<'db> for ImplItem<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - ImplItemPtr(self.as_syntax_node().long(db).stable_ptr) + ImplItemPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> ImplItem<'db> { @@ -18076,7 +18076,7 @@ impl<'db> TypedSyntaxNode<'db> for UsePath<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - UsePathPtr(self.as_syntax_node().long(db).stable_ptr) + UsePathPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> UsePath<'db> { @@ -18757,7 +18757,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionAliasClause<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionAliasClausePtr(self.as_syntax_node().long(db).stable_ptr) + OptionAliasClausePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionAliasClause<'db> { @@ -18926,7 +18926,7 @@ impl<'db> TypedSyntaxNode<'db> for GenericArg<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - GenericArgPtr(self.as_syntax_node().long(db).stable_ptr) + GenericArgPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> GenericArg<'db> { @@ -19207,7 +19207,7 @@ impl<'db> TypedSyntaxNode<'db> for GenericArgValue<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - GenericArgValuePtr(self.as_syntax_node().long(db).stable_ptr) + GenericArgValuePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> GenericArgValue<'db> { @@ -19905,7 +19905,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionAssociatedItemConstraints<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionAssociatedItemConstraintsPtr(self.as_syntax_node().long(db).stable_ptr) + OptionAssociatedItemConstraintsPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionAssociatedItemConstraints<'db> { @@ -20092,7 +20092,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionWrappedGenericParamList<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionWrappedGenericParamListPtr(self.as_syntax_node().long(db).stable_ptr) + OptionWrappedGenericParamListPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionWrappedGenericParamList<'db> { @@ -20520,7 +20520,7 @@ impl<'db> TypedSyntaxNode<'db> for GenericParam<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - GenericParamPtr(self.as_syntax_node().long(db).stable_ptr) + GenericParamPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> GenericParam<'db> { @@ -21662,7 +21662,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenTree<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - TokenTreePtr(self.as_syntax_node().long(db).stable_ptr) + TokenTreePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> TokenTree<'db> { @@ -21877,7 +21877,7 @@ impl<'db> TypedSyntaxNode<'db> for WrappedTokenTree<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - WrappedTokenTreePtr(self.as_syntax_node().long(db).stable_ptr) + WrappedTokenTreePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> WrappedTokenTree<'db> { @@ -22981,7 +22981,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionParamKind<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionParamKindPtr(self.as_syntax_node().long(db).stable_ptr) + OptionParamKindPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionParamKind<'db> { @@ -23371,7 +23371,7 @@ impl<'db> TypedSyntaxNode<'db> for OptionTerminalComma<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - OptionTerminalCommaPtr(self.as_syntax_node().long(db).stable_ptr) + OptionTerminalCommaPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> OptionTerminalComma<'db> { @@ -23579,7 +23579,7 @@ impl<'db> TypedSyntaxNode<'db> for MacroRepetitionOperator<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - MacroRepetitionOperatorPtr(self.as_syntax_node().long(db).stable_ptr) + MacroRepetitionOperatorPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> MacroRepetitionOperator<'db> { @@ -23938,7 +23938,7 @@ impl<'db> TypedSyntaxNode<'db> for MacroParamKind<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - MacroParamKindPtr(self.as_syntax_node().long(db).stable_ptr) + MacroParamKindPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> MacroParamKind<'db> { @@ -24144,7 +24144,7 @@ impl<'db> TypedSyntaxNode<'db> for MacroElement<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - MacroElementPtr(self.as_syntax_node().long(db).stable_ptr) + MacroElementPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> MacroElement<'db> { @@ -24418,7 +24418,7 @@ impl<'db> TypedSyntaxNode<'db> for WrappedMacro<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - WrappedMacroPtr(self.as_syntax_node().long(db).stable_ptr) + WrappedMacroPtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> WrappedMacro<'db> { @@ -25132,7 +25132,7 @@ impl<'db> TypedSyntaxNode<'db> for SkippedNode<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - SkippedNodePtr(self.as_syntax_node().long(db).stable_ptr) + SkippedNodePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> SkippedNode<'db> { @@ -25153,7 +25153,7 @@ impl<'db> Token<'db> for TokenIdentifier<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -25193,7 +25193,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenIdentifier<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenIdentifier) @@ -25201,7 +25201,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenIdentifier<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -25237,8 +25237,7 @@ impl<'db> Terminal<'db> for TerminalIdentifier<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -25336,7 +25335,7 @@ impl<'db> Token<'db> for TokenLiteralNumber<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -25376,7 +25375,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLiteralNumber<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => panic!( "Expected a token {:?}, not an internal node", @@ -25385,7 +25384,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLiteralNumber<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -25421,8 +25420,7 @@ impl<'db> Terminal<'db> for TerminalLiteralNumber<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -25520,7 +25518,7 @@ impl<'db> Token<'db> for TokenShortString<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -25560,7 +25558,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenShortString<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenShortString) @@ -25568,7 +25566,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenShortString<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -25604,8 +25602,7 @@ impl<'db> Terminal<'db> for TerminalShortString<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -25700,7 +25697,7 @@ impl<'db> Token<'db> for TokenString<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -25740,7 +25737,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenString<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenString) @@ -25748,7 +25745,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenString<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -25784,8 +25781,7 @@ impl<'db> Terminal<'db> for TerminalString<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -25880,7 +25876,7 @@ impl<'db> Token<'db> for TokenAs<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -25920,7 +25916,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenAs<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenAs) @@ -25928,7 +25924,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenAs<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -25964,8 +25960,7 @@ impl<'db> Terminal<'db> for TerminalAs<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -26056,7 +26051,7 @@ impl<'db> Token<'db> for TokenConst<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -26096,7 +26091,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenConst<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenConst) @@ -26104,7 +26099,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenConst<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -26140,8 +26135,7 @@ impl<'db> Terminal<'db> for TerminalConst<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -26236,7 +26230,7 @@ impl<'db> Token<'db> for TokenElse<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -26276,7 +26270,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenElse<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenElse) @@ -26284,7 +26278,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenElse<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -26320,8 +26314,7 @@ impl<'db> Terminal<'db> for TerminalElse<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -26412,7 +26405,7 @@ impl<'db> Token<'db> for TokenEnum<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -26452,7 +26445,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenEnum<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenEnum) @@ -26460,7 +26453,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenEnum<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -26496,8 +26489,7 @@ impl<'db> Terminal<'db> for TerminalEnum<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -26588,7 +26580,7 @@ impl<'db> Token<'db> for TokenExtern<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -26628,7 +26620,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenExtern<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenExtern) @@ -26636,7 +26628,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenExtern<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -26672,8 +26664,7 @@ impl<'db> Terminal<'db> for TerminalExtern<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -26768,7 +26759,7 @@ impl<'db> Token<'db> for TokenFalse<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -26808,7 +26799,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenFalse<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenFalse) @@ -26816,7 +26807,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenFalse<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -26852,8 +26843,7 @@ impl<'db> Terminal<'db> for TerminalFalse<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -26948,7 +26938,7 @@ impl<'db> Token<'db> for TokenFunction<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -26988,7 +26978,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenFunction<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenFunction) @@ -26996,7 +26986,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenFunction<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -27032,8 +27022,7 @@ impl<'db> Terminal<'db> for TerminalFunction<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -27128,7 +27117,7 @@ impl<'db> Token<'db> for TokenIf<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -27168,7 +27157,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenIf<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenIf) @@ -27176,7 +27165,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenIf<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -27212,8 +27201,7 @@ impl<'db> Terminal<'db> for TerminalIf<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -27304,7 +27292,7 @@ impl<'db> Token<'db> for TokenWhile<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -27344,7 +27332,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenWhile<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenWhile) @@ -27352,7 +27340,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenWhile<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -27388,8 +27376,7 @@ impl<'db> Terminal<'db> for TerminalWhile<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -27484,7 +27471,7 @@ impl<'db> Token<'db> for TokenFor<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -27524,7 +27511,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenFor<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenFor) @@ -27532,7 +27519,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenFor<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -27568,8 +27555,7 @@ impl<'db> Terminal<'db> for TerminalFor<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -27660,7 +27646,7 @@ impl<'db> Token<'db> for TokenLoop<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -27700,7 +27686,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLoop<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenLoop) @@ -27708,7 +27694,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLoop<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -27744,8 +27730,7 @@ impl<'db> Terminal<'db> for TerminalLoop<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -27836,7 +27821,7 @@ impl<'db> Token<'db> for TokenImpl<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -27876,7 +27861,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenImpl<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenImpl) @@ -27884,7 +27869,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenImpl<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -27920,8 +27905,7 @@ impl<'db> Terminal<'db> for TerminalImpl<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -28012,7 +27996,7 @@ impl<'db> Token<'db> for TokenImplicits<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -28052,7 +28036,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenImplicits<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenImplicits) @@ -28060,7 +28044,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenImplicits<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -28096,8 +28080,7 @@ impl<'db> Terminal<'db> for TerminalImplicits<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -28192,7 +28175,7 @@ impl<'db> Token<'db> for TokenLet<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -28232,7 +28215,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLet<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenLet) @@ -28240,7 +28223,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLet<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -28276,8 +28259,7 @@ impl<'db> Terminal<'db> for TerminalLet<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -28368,7 +28350,7 @@ impl<'db> Token<'db> for TokenMacro<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -28408,7 +28390,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMacro<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenMacro) @@ -28416,7 +28398,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMacro<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -28452,8 +28434,7 @@ impl<'db> Terminal<'db> for TerminalMacro<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -28548,7 +28529,7 @@ impl<'db> Token<'db> for TokenMatch<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -28588,7 +28569,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMatch<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenMatch) @@ -28596,7 +28577,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMatch<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -28632,8 +28613,7 @@ impl<'db> Terminal<'db> for TerminalMatch<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -28728,7 +28708,7 @@ impl<'db> Token<'db> for TokenModule<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -28768,7 +28748,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenModule<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenModule) @@ -28776,7 +28756,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenModule<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -28812,8 +28792,7 @@ impl<'db> Terminal<'db> for TerminalModule<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -28908,7 +28887,7 @@ impl<'db> Token<'db> for TokenMut<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -28948,7 +28927,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMut<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenMut) @@ -28956,7 +28935,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMut<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -28992,8 +28971,7 @@ impl<'db> Terminal<'db> for TerminalMut<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -29084,7 +29062,7 @@ impl<'db> Token<'db> for TokenNoPanic<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -29124,7 +29102,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenNoPanic<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenNoPanic) @@ -29132,7 +29110,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenNoPanic<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -29168,8 +29146,7 @@ impl<'db> Terminal<'db> for TerminalNoPanic<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -29264,7 +29241,7 @@ impl<'db> Token<'db> for TokenOf<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -29304,7 +29281,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenOf<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenOf) @@ -29312,7 +29289,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenOf<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -29348,8 +29325,7 @@ impl<'db> Terminal<'db> for TerminalOf<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -29440,7 +29416,7 @@ impl<'db> Token<'db> for TokenRef<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -29480,7 +29456,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenRef<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenRef) @@ -29488,7 +29464,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenRef<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -29524,8 +29500,7 @@ impl<'db> Terminal<'db> for TerminalRef<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -29616,7 +29591,7 @@ impl<'db> Token<'db> for TokenContinue<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -29656,7 +29631,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenContinue<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenContinue) @@ -29664,7 +29639,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenContinue<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -29700,8 +29675,7 @@ impl<'db> Terminal<'db> for TerminalContinue<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -29796,7 +29770,7 @@ impl<'db> Token<'db> for TokenReturn<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -29836,7 +29810,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenReturn<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenReturn) @@ -29844,7 +29818,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenReturn<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -29880,8 +29854,7 @@ impl<'db> Terminal<'db> for TerminalReturn<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -29976,7 +29949,7 @@ impl<'db> Token<'db> for TokenBreak<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -30016,7 +29989,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenBreak<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenBreak) @@ -30024,7 +29997,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenBreak<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -30060,8 +30033,7 @@ impl<'db> Terminal<'db> for TerminalBreak<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -30156,7 +30128,7 @@ impl<'db> Token<'db> for TokenStruct<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -30196,7 +30168,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenStruct<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenStruct) @@ -30204,7 +30176,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenStruct<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -30240,8 +30212,7 @@ impl<'db> Terminal<'db> for TerminalStruct<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -30336,7 +30307,7 @@ impl<'db> Token<'db> for TokenTrait<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -30376,7 +30347,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenTrait<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenTrait) @@ -30384,7 +30355,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenTrait<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -30420,8 +30391,7 @@ impl<'db> Terminal<'db> for TerminalTrait<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -30516,7 +30486,7 @@ impl<'db> Token<'db> for TokenTrue<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -30556,7 +30526,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenTrue<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenTrue) @@ -30564,7 +30534,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenTrue<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -30600,8 +30570,7 @@ impl<'db> Terminal<'db> for TerminalTrue<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -30692,7 +30661,7 @@ impl<'db> Token<'db> for TokenType<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -30732,7 +30701,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenType<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenType) @@ -30740,7 +30709,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenType<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -30776,8 +30745,7 @@ impl<'db> Terminal<'db> for TerminalType<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -30868,7 +30836,7 @@ impl<'db> Token<'db> for TokenUse<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -30908,7 +30876,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenUse<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenUse) @@ -30916,7 +30884,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenUse<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -30952,8 +30920,7 @@ impl<'db> Terminal<'db> for TerminalUse<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -31044,7 +31011,7 @@ impl<'db> Token<'db> for TokenPub<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -31084,7 +31051,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenPub<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenPub) @@ -31092,7 +31059,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenPub<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -31128,8 +31095,7 @@ impl<'db> Terminal<'db> for TerminalPub<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -31220,7 +31186,7 @@ impl<'db> Token<'db> for TokenAnd<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -31260,7 +31226,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenAnd<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenAnd) @@ -31268,7 +31234,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenAnd<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -31304,8 +31270,7 @@ impl<'db> Terminal<'db> for TerminalAnd<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -31396,7 +31361,7 @@ impl<'db> Token<'db> for TokenAndAnd<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -31436,7 +31401,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenAndAnd<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenAndAnd) @@ -31444,7 +31409,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenAndAnd<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -31480,8 +31445,7 @@ impl<'db> Terminal<'db> for TerminalAndAnd<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -31576,7 +31540,7 @@ impl<'db> Token<'db> for TokenArrow<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -31616,7 +31580,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenArrow<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenArrow) @@ -31624,7 +31588,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenArrow<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -31660,8 +31624,7 @@ impl<'db> Terminal<'db> for TerminalArrow<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -31756,7 +31719,7 @@ impl<'db> Token<'db> for TokenAt<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -31796,7 +31759,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenAt<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenAt) @@ -31804,7 +31767,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenAt<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -31840,8 +31803,7 @@ impl<'db> Terminal<'db> for TerminalAt<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -31935,7 +31897,7 @@ impl<'db> Token<'db> for TokenBadCharacters<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -31975,7 +31937,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenBadCharacters<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => panic!( "Expected a token {:?}, not an internal node", @@ -31984,7 +31946,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenBadCharacters<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -32020,8 +31982,7 @@ impl<'db> Terminal<'db> for TerminalBadCharacters<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -32116,7 +32077,7 @@ impl<'db> Token<'db> for TokenColon<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -32156,7 +32117,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenColon<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenColon) @@ -32164,7 +32125,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenColon<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -32200,8 +32161,7 @@ impl<'db> Terminal<'db> for TerminalColon<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -32296,7 +32256,7 @@ impl<'db> Token<'db> for TokenColonColon<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -32336,7 +32296,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenColonColon<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenColonColon) @@ -32344,7 +32304,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenColonColon<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -32380,8 +32340,7 @@ impl<'db> Terminal<'db> for TerminalColonColon<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -32476,7 +32435,7 @@ impl<'db> Token<'db> for TokenComma<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -32516,7 +32475,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenComma<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenComma) @@ -32524,7 +32483,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenComma<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -32560,8 +32519,7 @@ impl<'db> Terminal<'db> for TerminalComma<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -32656,7 +32614,7 @@ impl<'db> Token<'db> for TokenDiv<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -32696,7 +32654,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenDiv<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenDiv) @@ -32704,7 +32662,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenDiv<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -32740,8 +32698,7 @@ impl<'db> Terminal<'db> for TerminalDiv<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -32832,7 +32789,7 @@ impl<'db> Token<'db> for TokenDivEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -32872,7 +32829,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenDivEq<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenDivEq) @@ -32880,7 +32837,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenDivEq<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -32916,8 +32873,7 @@ impl<'db> Terminal<'db> for TerminalDivEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -33012,7 +32968,7 @@ impl<'db> Token<'db> for TokenDollar<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -33052,7 +33008,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenDollar<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenDollar) @@ -33060,7 +33016,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenDollar<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -33096,8 +33052,7 @@ impl<'db> Terminal<'db> for TerminalDollar<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -33192,7 +33147,7 @@ impl<'db> Token<'db> for TokenDot<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -33232,7 +33187,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenDot<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenDot) @@ -33240,7 +33195,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenDot<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -33276,8 +33231,7 @@ impl<'db> Terminal<'db> for TerminalDot<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -33368,7 +33322,7 @@ impl<'db> Token<'db> for TokenDotDot<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -33408,7 +33362,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenDotDot<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenDotDot) @@ -33416,7 +33370,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenDotDot<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -33452,8 +33406,7 @@ impl<'db> Terminal<'db> for TerminalDotDot<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -33548,7 +33501,7 @@ impl<'db> Token<'db> for TokenDotDotEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -33588,7 +33541,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenDotDotEq<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenDotDotEq) @@ -33596,7 +33549,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenDotDotEq<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -33632,8 +33585,7 @@ impl<'db> Terminal<'db> for TerminalDotDotEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -33728,7 +33680,7 @@ impl<'db> Token<'db> for TokenEndOfFile<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -33768,7 +33720,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenEndOfFile<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenEndOfFile) @@ -33776,7 +33728,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenEndOfFile<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -33812,8 +33764,7 @@ impl<'db> Terminal<'db> for TerminalEndOfFile<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -33908,7 +33859,7 @@ impl<'db> Token<'db> for TokenEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -33948,7 +33899,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenEq<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenEq) @@ -33956,7 +33907,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenEq<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -33992,8 +33943,7 @@ impl<'db> Terminal<'db> for TerminalEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -34084,7 +34034,7 @@ impl<'db> Token<'db> for TokenEqEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -34124,7 +34074,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenEqEq<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenEqEq) @@ -34132,7 +34082,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenEqEq<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -34168,8 +34118,7 @@ impl<'db> Terminal<'db> for TerminalEqEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -34260,7 +34209,7 @@ impl<'db> Token<'db> for TokenGE<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -34300,7 +34249,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenGE<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenGE) @@ -34308,7 +34257,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenGE<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -34344,8 +34293,7 @@ impl<'db> Terminal<'db> for TerminalGE<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -34436,7 +34384,7 @@ impl<'db> Token<'db> for TokenGT<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -34476,7 +34424,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenGT<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenGT) @@ -34484,7 +34432,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenGT<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -34520,8 +34468,7 @@ impl<'db> Terminal<'db> for TerminalGT<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -34612,7 +34559,7 @@ impl<'db> Token<'db> for TokenHash<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -34652,7 +34599,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenHash<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenHash) @@ -34660,7 +34607,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenHash<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -34696,8 +34643,7 @@ impl<'db> Terminal<'db> for TerminalHash<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -34788,7 +34734,7 @@ impl<'db> Token<'db> for TokenLBrace<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -34828,7 +34774,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLBrace<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenLBrace) @@ -34836,7 +34782,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLBrace<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -34872,8 +34818,7 @@ impl<'db> Terminal<'db> for TerminalLBrace<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -34968,7 +34913,7 @@ impl<'db> Token<'db> for TokenLBrack<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -35008,7 +34953,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLBrack<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenLBrack) @@ -35016,7 +34961,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLBrack<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -35052,8 +34997,7 @@ impl<'db> Terminal<'db> for TerminalLBrack<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -35148,7 +35092,7 @@ impl<'db> Token<'db> for TokenLE<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -35188,7 +35132,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLE<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenLE) @@ -35196,7 +35140,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLE<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -35232,8 +35176,7 @@ impl<'db> Terminal<'db> for TerminalLE<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -35324,7 +35267,7 @@ impl<'db> Token<'db> for TokenLParen<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -35364,7 +35307,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLParen<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenLParen) @@ -35372,7 +35315,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLParen<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -35408,8 +35351,7 @@ impl<'db> Terminal<'db> for TerminalLParen<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -35504,7 +35446,7 @@ impl<'db> Token<'db> for TokenLT<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -35544,7 +35486,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLT<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenLT) @@ -35552,7 +35494,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenLT<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -35588,8 +35530,7 @@ impl<'db> Terminal<'db> for TerminalLT<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -35680,7 +35621,7 @@ impl<'db> Token<'db> for TokenMatchArrow<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -35720,7 +35661,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMatchArrow<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenMatchArrow) @@ -35728,7 +35669,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMatchArrow<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -35764,8 +35705,7 @@ impl<'db> Terminal<'db> for TerminalMatchArrow<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -35860,7 +35800,7 @@ impl<'db> Token<'db> for TokenMinus<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -35900,7 +35840,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMinus<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenMinus) @@ -35908,7 +35848,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMinus<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -35944,8 +35884,7 @@ impl<'db> Terminal<'db> for TerminalMinus<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -36040,7 +35979,7 @@ impl<'db> Token<'db> for TokenMinusEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -36080,7 +36019,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMinusEq<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenMinusEq) @@ -36088,7 +36027,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMinusEq<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -36124,8 +36063,7 @@ impl<'db> Terminal<'db> for TerminalMinusEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -36220,7 +36158,7 @@ impl<'db> Token<'db> for TokenMod<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -36260,7 +36198,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMod<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenMod) @@ -36268,7 +36206,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMod<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -36304,8 +36242,7 @@ impl<'db> Terminal<'db> for TerminalMod<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -36396,7 +36333,7 @@ impl<'db> Token<'db> for TokenModEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -36436,7 +36373,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenModEq<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenModEq) @@ -36444,7 +36381,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenModEq<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -36480,8 +36417,7 @@ impl<'db> Terminal<'db> for TerminalModEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -36576,7 +36512,7 @@ impl<'db> Token<'db> for TokenMul<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -36616,7 +36552,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMul<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenMul) @@ -36624,7 +36560,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMul<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -36660,8 +36596,7 @@ impl<'db> Terminal<'db> for TerminalMul<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -36752,7 +36687,7 @@ impl<'db> Token<'db> for TokenMulEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -36792,7 +36727,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMulEq<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenMulEq) @@ -36800,7 +36735,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMulEq<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -36836,8 +36771,7 @@ impl<'db> Terminal<'db> for TerminalMulEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -36932,7 +36866,7 @@ impl<'db> Token<'db> for TokenNeq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -36972,7 +36906,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenNeq<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenNeq) @@ -36980,7 +36914,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenNeq<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -37016,8 +36950,7 @@ impl<'db> Terminal<'db> for TerminalNeq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -37108,7 +37041,7 @@ impl<'db> Token<'db> for TokenNot<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -37148,7 +37081,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenNot<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenNot) @@ -37156,7 +37089,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenNot<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -37192,8 +37125,7 @@ impl<'db> Terminal<'db> for TerminalNot<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -37284,7 +37216,7 @@ impl<'db> Token<'db> for TokenBitNot<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -37324,7 +37256,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenBitNot<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenBitNot) @@ -37332,7 +37264,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenBitNot<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -37368,8 +37300,7 @@ impl<'db> Terminal<'db> for TerminalBitNot<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -37464,7 +37395,7 @@ impl<'db> Token<'db> for TokenOr<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -37504,7 +37435,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenOr<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenOr) @@ -37512,7 +37443,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenOr<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -37548,8 +37479,7 @@ impl<'db> Terminal<'db> for TerminalOr<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -37640,7 +37570,7 @@ impl<'db> Token<'db> for TokenOrOr<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -37680,7 +37610,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenOrOr<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenOrOr) @@ -37688,7 +37618,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenOrOr<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -37724,8 +37654,7 @@ impl<'db> Terminal<'db> for TerminalOrOr<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -37816,7 +37745,7 @@ impl<'db> Token<'db> for TokenPlus<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -37856,7 +37785,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenPlus<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenPlus) @@ -37864,7 +37793,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenPlus<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -37900,8 +37829,7 @@ impl<'db> Terminal<'db> for TerminalPlus<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -37992,7 +37920,7 @@ impl<'db> Token<'db> for TokenPlusEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -38032,7 +37960,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenPlusEq<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenPlusEq) @@ -38040,7 +37968,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenPlusEq<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -38076,8 +38004,7 @@ impl<'db> Terminal<'db> for TerminalPlusEq<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -38175,7 +38102,7 @@ impl<'db> Token<'db> for TokenQuestionMark<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -38215,7 +38142,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenQuestionMark<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenQuestionMark) @@ -38223,7 +38150,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenQuestionMark<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -38259,8 +38186,7 @@ impl<'db> Terminal<'db> for TerminalQuestionMark<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -38355,7 +38281,7 @@ impl<'db> Token<'db> for TokenRBrace<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -38395,7 +38321,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenRBrace<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenRBrace) @@ -38403,7 +38329,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenRBrace<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -38439,8 +38365,7 @@ impl<'db> Terminal<'db> for TerminalRBrace<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -38535,7 +38460,7 @@ impl<'db> Token<'db> for TokenRBrack<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -38575,7 +38500,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenRBrack<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenRBrack) @@ -38583,7 +38508,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenRBrack<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -38619,8 +38544,7 @@ impl<'db> Terminal<'db> for TerminalRBrack<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -38715,7 +38639,7 @@ impl<'db> Token<'db> for TokenRParen<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -38755,7 +38679,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenRParen<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenRParen) @@ -38763,7 +38687,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenRParen<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -38799,8 +38723,7 @@ impl<'db> Terminal<'db> for TerminalRParen<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -38895,7 +38818,7 @@ impl<'db> Token<'db> for TokenSemicolon<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -38935,7 +38858,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenSemicolon<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenSemicolon) @@ -38943,7 +38866,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenSemicolon<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -38979,8 +38902,7 @@ impl<'db> Terminal<'db> for TerminalSemicolon<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -39075,7 +38997,7 @@ impl<'db> Token<'db> for TokenUnderscore<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -39115,7 +39037,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenUnderscore<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenUnderscore) @@ -39123,7 +39045,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenUnderscore<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -39159,8 +39081,7 @@ impl<'db> Terminal<'db> for TerminalUnderscore<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -39255,7 +39176,7 @@ impl<'db> Token<'db> for TokenXor<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -39295,7 +39216,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenXor<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenXor) @@ -39303,7 +39224,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenXor<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -39339,8 +39260,7 @@ impl<'db> Terminal<'db> for TerminalXor<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -39520,7 +39440,7 @@ impl<'db> Token<'db> for TokenEmpty<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -39560,7 +39480,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenEmpty<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenEmpty) @@ -39568,7 +39488,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenEmpty<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -39604,8 +39524,7 @@ impl<'db> Terminal<'db> for TerminalEmpty<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - let GreenNodeDetails::Node { children, .. } = &self.node.long(db).green.long(db).details - else { + let GreenNodeDetails::Node { children, .. } = &self.node.green_node(db).details else { unreachable!("Expected a node, not a token"); }; *extract_matches!(&children[1].long(db).details, GreenNodeDetails::Token) @@ -39703,7 +39622,7 @@ impl<'db> Token<'db> for TokenSingleLineComment<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -39743,7 +39662,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenSingleLineComment<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => panic!( "Expected a token {:?}, not an internal node", @@ -39752,7 +39671,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenSingleLineComment<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -39779,7 +39698,7 @@ impl<'db> Token<'db> for TokenSingleLineInnerComment<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -39819,7 +39738,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenSingleLineInnerComment<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => panic!( "Expected a token {:?}, not an internal node", @@ -39828,7 +39747,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenSingleLineInnerComment<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -39855,7 +39774,7 @@ impl<'db> Token<'db> for TokenSingleLineDocComment<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -39895,7 +39814,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenSingleLineDocComment<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => panic!( "Expected a token {:?}, not an internal node", @@ -39904,7 +39823,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenSingleLineDocComment<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -39928,7 +39847,7 @@ impl<'db> Token<'db> for TokenWhitespace<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -39968,7 +39887,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenWhitespace<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenWhitespace) @@ -39976,7 +39895,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenWhitespace<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -40000,7 +39919,7 @@ impl<'db> Token<'db> for TokenNewline<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -40040,7 +39959,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenNewline<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenNewline) @@ -40048,7 +39967,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenNewline<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -40072,7 +39991,7 @@ impl<'db> Token<'db> for TokenMissing<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -40112,7 +40031,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMissing<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenMissing) @@ -40120,7 +40039,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenMissing<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -40144,7 +40063,7 @@ impl<'db> Token<'db> for TokenSkipped<'db> { ) } fn text(&self, db: &'db dyn Database) -> SmolStrId<'db> { - *extract_matches!(&self.node.long(db).green.long(db).details, GreenNodeDetails::Token) + *extract_matches!(&self.node.green_node(db).details, GreenNodeDetails::Token) } } #[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)] @@ -40184,7 +40103,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenSkipped<'db> { ) } fn from_syntax_node(db: &'db dyn Database, node: SyntaxNode<'db>) -> Self { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Self { node }, GreenNodeDetails::Node { .. } => { panic!("Expected a token {:?}, not an internal node", SyntaxKind::TokenSkipped) @@ -40192,7 +40111,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenSkipped<'db> { } } fn cast(db: &'db dyn Database, node: SyntaxNode<'db>) -> Option { - match node.long(db).green.long(db).details { + match node.green_node(db).details { GreenNodeDetails::Token(_) => Some(Self { node }), GreenNodeDetails::Node { .. } => None, } @@ -41687,7 +41606,7 @@ impl<'db> TypedSyntaxNode<'db> for TokenNode<'db> { } } fn stable_ptr(&self, db: &'db dyn Database) -> Self::StablePtr { - TokenNodePtr(self.as_syntax_node().long(db).stable_ptr) + TokenNodePtr(self.as_syntax_node().stable_ptr(db)) } } impl<'db> TokenNode<'db> { diff --git a/crates/cairo-lang-syntax/src/node/db.rs b/crates/cairo-lang-syntax/src/node/db.rs index b5963df4eae..e5d8ba7b762 100644 --- a/crates/cairo-lang-syntax/src/node/db.rs +++ b/crates/cairo-lang-syntax/src/node/db.rs @@ -1,16 +1,35 @@ +use cairo_lang_filesystem::ids::Tracked; +use cairo_lang_filesystem::span::TextOffset; use salsa::Database; use super::SyntaxNode; +use super::ids::{GreenId, SyntaxStablePtrId}; +use crate::node::new_syntax_node; pub trait SyntaxGroup: Database { /// Query for caching [SyntaxNode::get_children]. fn get_children<'db>(&'db self, node: SyntaxNode<'db>) -> &'db [SyntaxNode<'db>] { - get_children(self.as_dyn_database(), node) + get_children(self.as_dyn_database(), (), node) + } + + /// Tracked function for creating syntax nodes to have it also interned. + fn create_syntax_node<'db>( + &'db self, + green: GreenId<'db>, + offset: TextOffset, + parent: Option>, + stable_ptr: SyntaxStablePtrId<'db>, + ) -> SyntaxNode<'db> { + new_syntax_node(self.as_dyn_database(), green, offset, parent, stable_ptr) } } impl SyntaxGroup for T {} #[salsa::tracked(returns(ref))] -fn get_children<'db>(db: &'db dyn Database, node: SyntaxNode<'db>) -> Vec> { +fn get_children<'db>( + db: &'db dyn Database, + _tracked: Tracked, + node: SyntaxNode<'db>, +) -> Vec> { node.get_children_impl(db) } diff --git a/crates/cairo-lang-syntax/src/node/mod.rs b/crates/cairo-lang-syntax/src/node/mod.rs index 59bed864afa..40c9df09b6c 100644 --- a/crates/cairo-lang-syntax/src/node/mod.rs +++ b/crates/cairo-lang-syntax/src/node/mod.rs @@ -3,8 +3,9 @@ use core::hash::Hash; use cairo_lang_filesystem::db::FilesGroup; use cairo_lang_filesystem::ids::{FileId, SmolStrId}; use cairo_lang_filesystem::span::{TextOffset, TextPosition, TextSpan, TextWidth}; -use cairo_lang_utils::{Intern, define_short_id, require}; +use cairo_lang_utils::{Intern, require}; use salsa::Database; +use salsa::plumbing::AsId; use vector_map::VecMap; use self::ast::TriviaGreen; @@ -32,19 +33,85 @@ mod ast_test; #[cfg(test)] mod test_utils; -/// SyntaxNode. Untyped view of the syntax tree. Adds parent() and offset() capabilities. - -#[derive(Clone, Debug, Hash, PartialEq, Eq)] -pub struct SyntaxNodeLongId<'a> { +/// Private tracked struct containing the actual SyntaxNode data. +/// This is kept private so the public `new` function generated by salsa can't be called directly. +#[salsa::tracked] +#[derive(Debug)] +struct SyntaxNodeData<'a> { + #[tracked] green: GreenId<'a>, /// Number of characters from the beginning of the file to the start of the span of this /// syntax subtree. + #[tracked] offset: TextOffset, parent: Option>, stable_ptr: SyntaxStablePtrId<'a>, } -define_short_id!(SyntaxNode, SyntaxNodeLongId<'db>); + +impl<'db> cairo_lang_debug::DebugWithDb<'db> for SyntaxNodeData<'db> { + type Db = dyn Database; + fn fmt(&self, f: &mut std::fmt::Formatter<'_>, db: &'db Self::Db) -> std::fmt::Result { + f.debug_struct("SyntaxNode") + .field("green", &self.green(db).debug(db)) + .field("offset", &self.offset(db)) + .field("parent", &self.parent(db).debug(db)) + .field("stable_ptr", &self.stable_ptr(db).debug(db)) + .finish() + } +} + +/// SyntaxNode. Untyped view of the syntax tree. Adds parent() and offset() capabilities. +/// +/// This is a public wrapper around a private tracked struct. Construction only happens through +/// tracked functions to ensure uniqueness of SyntaxNodes. +/// Use `SyntaxNode::new_root` or `SyntaxNode::new_root_with_offset` to create root nodes. +#[derive(Clone, Copy, PartialEq, Eq, Hash, salsa::Update)] +pub struct SyntaxNode<'a>(SyntaxNodeData<'a>); + +impl<'db> std::fmt::Debug for SyntaxNode<'db> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "SyntaxNode({:x})", self.0.as_id().index()) + } +} + +impl<'db> cairo_lang_debug::DebugWithDb<'db> for SyntaxNode<'db> { + type Db = dyn Database; + fn fmt(&self, f: &mut std::fmt::Formatter<'_>, db: &'db Self::Db) -> std::fmt::Result { + self.0.fmt(f, db) + } +} + +impl<'db> SyntaxNode<'db> { + /// Get the offset of this syntax node from the beginning of the file. + pub fn offset(self, db: &'db dyn Database) -> TextOffset { + self.0.offset(db) + } + + /// Get the parent syntax node, if any. + pub fn parent(self, db: &'db dyn Database) -> Option> { + self.0.parent(db) + } + + /// Get the stable pointer for this syntax node. + pub fn stable_ptr(self, db: &'db dyn Database) -> SyntaxStablePtrId<'db> { + self.0.stable_ptr(db) + } +} + +#[salsa::tracked] +pub fn new_syntax_node<'db>( + db: &'db dyn Database, + green: GreenId<'db>, + offset: TextOffset, + parent: Option>, + stable_ptr: SyntaxStablePtrId<'db>, +) -> SyntaxNode<'db> { + SyntaxNode(SyntaxNodeData::new(db, green, offset, parent, stable_ptr)) +} + +// Construction methods impl<'a> SyntaxNode<'a> { + /// Create a new root syntax node. pub fn new_root(db: &'a dyn Database, file_id: FileId<'a>, green: GreenId<'a>) -> Self { Self::new_with_inner( db, @@ -55,6 +122,7 @@ impl<'a> SyntaxNode<'a> { ) } + /// Create a new root syntax node with a custom initial offset. pub fn new_root_with_offset( db: &'a dyn Database, file_id: FileId<'a>, @@ -70,6 +138,8 @@ impl<'a> SyntaxNode<'a> { ) } + /// Create a syntax node with the given parameters. + /// This delegates to a tracked function to ensure proper Salsa tracking. pub fn new_with_inner( db: &'a dyn Database, green: GreenId<'a>, @@ -77,21 +147,26 @@ impl<'a> SyntaxNode<'a> { parent: Option>, stable_ptr: SyntaxStablePtrId<'a>, ) -> Self { - SyntaxNodeLongId { green, offset, parent, stable_ptr }.intern(db) + db.create_syntax_node(green, offset, parent, stable_ptr) } - pub fn offset(&self, db: &dyn Database) -> TextOffset { - self.long(db).offset - } + // Basic accessors + + /// Get the width of this syntax node. pub fn width(&self, db: &dyn Database) -> TextWidth { self.green_node(db).width(db) } + + /// Get the syntax kind of this node. pub fn kind(&self, db: &dyn Database) -> SyntaxKind { self.green_node(db).kind } + + /// Get the span of this syntax node. pub fn span(&self, db: &dyn Database) -> TextSpan { TextSpan::new_with_width(self.offset(db), self.width(db)) } + /// Returns the text of the token if this node is a token. pub fn text(&self, db: &'a dyn Database) -> Option> { match &self.green_node(db).details { @@ -102,24 +177,18 @@ impl<'a> SyntaxNode<'a> { /// Returns the green node of the syntax node. pub fn green_node(&self, db: &'a dyn Database) -> &'a GreenNode<'a> { - self.long(db).green.long(db) + self.0.green(db).long(db) } /// Returns the span of the syntax node without trivia. pub fn span_without_trivia(&self, db: &dyn Database) -> TextSpan { - let node = self.long(db); - let green_node = node.green.long(db); + let green_node = self.green_node(db); let (leading, trailing) = both_trivia_width(db, green_node); - let start = node.offset.add_width(leading); - let end = node.offset.add_width(green_node.width(db)).sub_width(trailing); + let offset = self.offset(db); + let start = offset.add_width(leading); + let end = offset.add_width(green_node.width(db)).sub_width(trailing); TextSpan::new(start, end) } - pub fn parent(&self, db: &'a dyn Database) -> Option> { - self.long(db).parent - } - pub fn stable_ptr(&self, db: &'a dyn Database) -> SyntaxStablePtrId<'a> { - self.long(db).stable_ptr - } /// Gets the inner token from a terminal SyntaxNode. If the given node is not a terminal, /// returns None. @@ -130,16 +199,17 @@ impl<'a> SyntaxNode<'a> { self.get_children(db).get(1).copied() } + // Children and tree navigation + /// Gets the children syntax nodes of the current node. pub fn get_children(&self, db: &'a dyn Database) -> &'a [SyntaxNode<'a>] { db.get_children(*self) } /// Implementation of [SyntaxNode::get_children]. - fn get_children_impl(&self, db: &'a dyn Database) -> Vec> { - let self_long_id = self.long(db); - let mut offset = self_long_id.offset; - let self_green = self_long_id.green.long(db); + pub(crate) fn get_children_impl(&self, db: &'a dyn Database) -> Vec> { + let mut offset = self.offset(db); + let self_green = self.green_node(db); let children = self_green.children(); let mut res: Vec> = Vec::with_capacity(children.len()); let mut key_map = VecMap::<_, usize>::new(); @@ -151,7 +221,7 @@ impl<'a> SyntaxNode<'a> { let key_fields: &'a [GreenId<'a>] = &green.children()[rng]; let key_count = key_map.entry((kind, key_fields)).or_insert(0); let stable_ptr = SyntaxStablePtr::Child { - parent: self_long_id.stable_ptr, + parent: self.stable_ptr(db), kind, key_fields: key_fields.into(), index: *key_count, @@ -159,30 +229,27 @@ impl<'a> SyntaxNode<'a> { .intern(db); *key_count += 1; // Create the SyntaxNode view for the child. - res.push( - SyntaxNodeLongId { green: *green_id, offset, parent: Some(*self), stable_ptr } - .intern(db), - ); + res.push(db.create_syntax_node(*green_id, offset, Some(*self), stable_ptr)); offset = offset.add_width(width); } res } + // Text and span utilities + /// Returns the start of the span of the syntax node without trivia. pub fn span_start_without_trivia(&self, db: &dyn Database) -> TextOffset { - let node = self.long(db); - let green_node = node.green.long(db); + let green_node = self.green_node(db); let leading = leading_trivia_width(db, green_node); - node.offset.add_width(leading) + self.offset(db).add_width(leading) } /// Returns the end of the span of the syntax node without trivia. pub fn span_end_without_trivia(&self, db: &dyn Database) -> TextOffset { - let node = self.long(db); - let green_node = node.green.long(db); + let green_node = self.green_node(db); let trailing = trailing_trivia_width(db, green_node); - node.offset.add_width(green_node.width(db)).sub_width(trailing) + self.offset(db).add_width(green_node.width(db)).sub_width(trailing) } /// Lookups a syntax node using an offset. @@ -301,6 +368,8 @@ impl<'a> SyntaxNode<'a> { span.take(file_content) } + // Tree traversal iterators + /// Traverse the subtree rooted at the current node (including the current node) in preorder. /// /// This is a shortcut for [`Self::preorder`] paired with filtering for [`WalkEvent::Enter`] @@ -331,6 +400,8 @@ impl<'a> SyntaxNode<'a> { T::cast(db, self) } + // Ancestor queries + /// Creates an iterator that yields ancestors of this syntax node. pub fn ancestors(&self, db: &'a dyn Database) -> impl Iterator> + 'a { // We aren't reusing `ancestors_with_self` here to avoid cloning this node. @@ -365,6 +436,8 @@ impl<'a> SyntaxNode<'a> { node.is_ancestor_or_self(db, self) } + // Specific ancestor/parent queries + /// Finds the first ancestor of a given kind. pub fn ancestor_of_kind( &self,