From 95d81622a19a08e4feff914ada7aeed38d433667 Mon Sep 17 00:00:00 2001 From: Klaus Date: Sun, 1 Feb 2026 11:37:06 -0300 Subject: [PATCH] avoid reassigning the same values when we know nothing changes --- src/slang-nodes/SlangNode.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/slang-nodes/SlangNode.ts b/src/slang-nodes/SlangNode.ts index 639a15a67..1c89e9390 100644 --- a/src/slang-nodes/SlangNode.ts +++ b/src/slang-nodes/SlangNode.ts @@ -8,13 +8,14 @@ import { MultiLineNatSpecComment } from './MultiLineNatSpecComment.js'; import { SingleLineComment } from './SingleLineComment.js'; import { SingleLineNatSpecComment } from './SingleLineNatSpecComment.js'; +import type { NonterminalKind } from '@nomicfoundation/slang/cst'; import type { AstLocation, CollectedMetadata, SlangAstNode } from '../types.d.ts'; import type { Comment, StrictAstNode } from './types.d.ts'; -import type { TerminalNode } from './TerminalNode.js'; +import type { TerminalNode } from './TerminalNode.ts'; function reversedIterator(children: T[]): Iterable { return { @@ -30,7 +31,9 @@ function reversedIterator(children: T[]): Iterable { }; } -export class SlangNode { +export abstract class SlangNode { + abstract readonly kind: TerminalKind | NonterminalKind; + comments?: Comment[]; loc: AstLocation; @@ -126,7 +129,7 @@ export class SlangNode { if (childNode === undefined) continue; const { leadingOffset, start } = childNode.loc; - if (start - leadingOffset === loc.start) { + if (leadingOffset > 0 && start - leadingOffset === loc.start) { loc.leadingOffset = leadingOffset; loc.start = start; break; @@ -139,7 +142,7 @@ export class SlangNode { if (childNode === undefined) continue; const { trailingOffset, end } = childNode.loc; - if (end + trailingOffset === loc.end) { + if (trailingOffset > 0 && end + trailingOffset === loc.end) { loc.trailingOffset = trailingOffset; loc.end = end; break;