From 68bb6bcfc6d2070e7cb39775b4a59bc92ee930a6 Mon Sep 17 00:00:00 2001 From: Nathan Hawes Date: Fri, 7 Sep 2018 14:31:50 -0700 Subject: [PATCH] Fix RawSyntax's leading/trailingTrivia computation to return nil if its outermost children don't have leading/trailing trivia Previously if would skip over outer children that didn't have leading/trailing trivia until it found one that did. This was causing that trivia to be included twice when computing the totalLength/byteSize of the node; once in leading/trailingTrivia and again in contentlength, which only skipped the trivia of the outmost children. --- Sources/SwiftSyntax/RawSyntax.swift | 4 ++-- Tests/SwiftSyntaxTest/Inputs/visitor.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Sources/SwiftSyntax/RawSyntax.swift b/Sources/SwiftSyntax/RawSyntax.swift index 1af1c5d4a13..2bb2bc47d14 100644 --- a/Sources/SwiftSyntax/RawSyntax.swift +++ b/Sources/SwiftSyntax/RawSyntax.swift @@ -350,7 +350,7 @@ extension RawSyntax { case .node(_, let layout): for child in layout { guard let child = child else { continue } - guard let result = child.leadingTrivia else { continue } + guard let result = child.leadingTrivia else { break } return result } return nil @@ -364,7 +364,7 @@ extension RawSyntax { case .node(_, let layout): for child in layout.reversed() { guard let child = child else { continue } - guard let result = child.trailingTrivia else { continue } + guard let result = child.trailingTrivia else { break } return result } return nil diff --git a/Tests/SwiftSyntaxTest/Inputs/visitor.swift b/Tests/SwiftSyntaxTest/Inputs/visitor.swift index 3597e470aa8..b2b527f8f78 100644 --- a/Tests/SwiftSyntaxTest/Inputs/visitor.swift +++ b/Tests/SwiftSyntaxTest/Inputs/visitor.swift @@ -1,5 +1,5 @@ func foo() { - func foo() { + public func foo() { func foo() { /*Unknown token */0xG }