Skip to content

Commit 572a144

Browse files
author
Harlan Haskins
committed
Rename byteOffset to utf8Offset and remove utf16
1 parent 5d7549c commit 572a144

File tree

5 files changed

+26
-84
lines changed

5 files changed

+26
-84
lines changed

test/SwiftSyntax/AbsolutePosition.swift

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ PositionTests.test("Visitor") {
3131
let content = try SwiftLang.parse(getInput("visitor.swift"))
3232
let source = try String(contentsOf: getInput("visitor.swift"))
3333
let parsed = try SourceFileSyntax.decodeSourceFileSyntax(content)
34-
expectEqual(parsed.position.byteOffset, 0)
35-
expectEqual(parsed.eofToken.positionAfterSkippingLeadingTrivia.byteOffset,
36-
source.count)
37-
expectEqual(parsed.position.byteOffset, 0)
38-
expectEqual(parsed.byteSize, source.count)
34+
expectEqual(0, parsed.position.utf8Offset)
35+
expectEqual(source.count,
36+
parsed.eofToken.positionAfterSkippingLeadingTrivia.utf8Offset)
37+
expectEqual(0, parsed.position.utf8Offset)
38+
expectEqual(source.count, parsed.byteSize)
3939
})
4040
}
4141

@@ -44,10 +44,10 @@ PositionTests.test("Closure") {
4444
let content = try SwiftLang.parse(getInput("closure.swift"))
4545
let source = try String(contentsOf: getInput("closure.swift"))
4646
let parsed = try SourceFileSyntax.decodeSourceFileSyntax(content)
47-
expectEqual(parsed.eofToken.positionAfterSkippingLeadingTrivia.byteOffset,
48-
source.count)
49-
expectEqual(parsed.position.byteOffset, 0)
50-
expectEqual(parsed.byteSize, source.count)
47+
expectEqual(source.count,
48+
parsed.eofToken.positionAfterSkippingLeadingTrivia.utf8Offset)
49+
expectEqual(0, parsed.position.utf8Offset)
50+
expectEqual(source.count, parsed.byteSize)
5151
})
5252
}
5353

@@ -57,9 +57,9 @@ PositionTests.test("Rename") {
5757
let parsed = try SourceFileSyntax.decodeSourceFileSyntax(content)
5858
let renamed = FuncRenamer().visit(parsed) as! SourceFileSyntax
5959
let renamedSource = renamed.description
60-
expectEqual(renamed.eofToken.positionAfterSkippingLeadingTrivia.byteOffset,
61-
renamedSource.count)
62-
expectEqual(renamed.byteSize, renamedSource.count)
60+
expectEqual(renamedSource.count,
61+
renamed.eofToken.positionAfterSkippingLeadingTrivia.utf8Offset)
62+
expectEqual(renamedSource.count, renamed.byteSize)
6363
})
6464
}
6565

@@ -74,8 +74,8 @@ PositionTests.test("CurrentFile") {
7474
_ = node.positionAfterSkippingLeadingTrivia
7575
}
7676
override func visit(_ node: TokenSyntax) {
77-
expectEqual(node.position.byteOffset + node.leadingTrivia.byteSize,
78-
node.positionAfterSkippingLeadingTrivia.byteOffset)
77+
expectEqual(node.positionAfterSkippingLeadingTrivia.utf8Offset,
78+
node.position.utf8Offset + node.leadingTrivia.byteSize)
7979
}
8080
}
8181
Visitor().visit(parsed)
@@ -125,13 +125,14 @@ PositionTests.test("Trivias") {
125125
expectDoesNotThrow({
126126
let idx = 5
127127
let root = createSourceFile(idx + 1)
128-
expectEqual(root.leadingTrivia!.count, 3)
129-
expectEqual(root.trailingTrivia!.count, 0)
128+
expectEqual(3, root.leadingTrivia!.count)
129+
expectEqual(0, root.trailingTrivia!.count)
130130
let state = root.statements[idx]
131-
expectEqual(state.leadingTrivia!.count, 3)
132-
expectEqual(state.trailingTrivia!.count, 1)
133-
expectEqual(state.leadingTrivia!.byteSize + state.trailingTrivia!.byteSize
134-
+ state.byteSizeAfterTrimmingTrivia, state.byteSize)
131+
expectEqual(3, state.leadingTrivia!.count)
132+
expectEqual(1, state.trailingTrivia!.count)
133+
expectEqual(state.byteSize,
134+
state.leadingTrivia!.byteSize + state.trailingTrivia!.byteSize
135+
+ state.byteSizeAfterTrimmingTrivia)
135136
expectFalse(root.statements.isImplicit)
136137
})
137138
}

tools/SwiftSyntax/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ add_swift_library(swiftSwiftSyntax SHARED
22
# This file should be listed the first. Module name is inferred from the
33
# filename.
44
SwiftSyntax.swift
5+
AbsolutePosition.swift
56
AtomicCache.swift
67
Diagnostic.swift
78
DiagnosticConsumer.swift

tools/SwiftSyntax/Diagnostic.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public struct SourceLocation: Codable {
3131

3232
public init(file: String, position: AbsolutePosition) {
3333
self.init(line: position.line, column: position.column,
34-
offset: position.byteOffset, file: file)
34+
offset: position.utf8Offset, file: file)
3535
}
3636

3737
public init(line: Int, column: Int, offset: Int, file: String) {

tools/SwiftSyntax/SyntaxData.swift

Lines changed: 1 addition & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ final class SyntaxData: Equatable {
9494
}
9595

9696
var byteSize: Int {
97-
return getNextSiblingPos().byteOffset - self.position.byteOffset
97+
return getNextSiblingPos().utf8Offset - self.position.utf8Offset
9898
}
9999

100100
/// Creates a SyntaxData with the provided raw syntax, pointing to the
@@ -258,63 +258,3 @@ final class SyntaxData: Equatable {
258258
return lhs === rhs
259259
}
260260
}
261-
262-
/// An absolute position in a source file as text - the absolute byteOffset from
263-
/// the start, line, and column.
264-
public final class AbsolutePosition {
265-
public fileprivate(set) var byteOffset: Int
266-
public fileprivate(set) var line: Int
267-
public fileprivate(set) var column: Int
268-
public let encoding: Encoding
269-
270-
public enum Encoding {
271-
case utf8
272-
case utf16
273-
}
274-
275-
public init(line: Int = 1, column: Int = 1, byteOffset: Int = 0,
276-
encoding: Encoding = .utf8) {
277-
self.line = line
278-
self.column = column
279-
self.byteOffset = byteOffset
280-
self.encoding = encoding
281-
}
282-
283-
internal func add(columns: Int) {
284-
self.column += columns
285-
}
286-
287-
internal func add(lines: Int, size: Int) {
288-
self.line += lines * size
289-
self.column = 1
290-
}
291-
292-
/// Use some text as a reference for adding to the absolute position,
293-
/// taking note of newlines, etc.
294-
internal func add(text: String) {
295-
for char in text {
296-
switch char {
297-
case "\n", "\r\n":
298-
line += 1
299-
column = 1
300-
default:
301-
column += 1
302-
}
303-
304-
// FIXME: This is currently very wasteful, but should be fast once the small-string
305-
// optimization lands.
306-
switch encoding {
307-
case .utf8:
308-
byteOffset += String(char).utf8.count
309-
case .utf16:
310-
// FIXME: Is this correct?
311-
byteOffset += String(char).utf16.count * 2
312-
}
313-
}
314-
}
315-
316-
internal func copy() -> AbsolutePosition {
317-
return AbsolutePosition(line: line, column: column,
318-
byteOffset: byteOffset)
319-
}
320-
}

tools/SwiftSyntax/Trivia.swift.gyb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ extension Trivia: Collection {
182182
for piece in pieces {
183183
piece.accumulateAbsolutePosition(pos)
184184
}
185-
return pos.byteOffset
185+
return pos.utf8Offset
186186
}
187187
}
188188

@@ -214,6 +214,6 @@ extension TriviaPiece {
214214
pos.add(text: text)
215215
% end
216216
% end
217-
}
217+
}
218218
}
219219
}

0 commit comments

Comments
 (0)