Skip to content

Commit

Permalink
[reference-bindings] Change the parser to refer to 'VariableBindings'…
Browse files Browse the repository at this point in the history
… instead of 'letOrVar' in preparation for adding inout and borrow bindings.
  • Loading branch information
gottesmm committed Feb 21, 2023
1 parent 8bc71f0 commit 008fb99
Show file tree
Hide file tree
Showing 26 changed files with 132 additions and 129 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -791,7 +791,7 @@ public let DECL_NODES: [Node] = [
Child(name: "Modifiers",
kind: .collection(kind: "ModifierList", collectionElementName: "Modifier"),
isOptional: true),
Child(name: "LetOrVarKeyword",
Child(name: "VariableBindingKeyword",
kind: .token(choices: [.keyword(text: "let"), .keyword(text: "var")])),
Child(name: "Bindings",
kind: .collection(kind: "PatternBindingList", collectionElementName: "Binding"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public let PATTERN_NODES: [Node] = [
nameForDiagnostics: "value binding pattern",
kind: "Pattern",
children: [
Child(name: "LetOrVarKeyword",
Child(name: "VariableBindingKeyword",
kind: .token(choices: [.keyword(text: "let"), .keyword(text: "var")])),
Child(name: "ValuePattern",
kind: .node(kind: "Pattern"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ public let STMT_NODES: [Node] = [
nameForDiagnostics: "optional binding",
kind: "Syntax",
children: [
Child(name: "LetOrVarKeyword",
Child(name: "VariableBindingKeyword",
kind: .token(choices: [.keyword(text: "let"), .keyword(text: "var")])),
Child(name: "Pattern",
kind: .node(kind: "Pattern")),
Expand Down
8 changes: 4 additions & 4 deletions Sources/SwiftParser/Declarations.swift
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ extension Parser {
case (.subscriptKeyword, let handle)?:
return RawDeclSyntax(self.parseSubscriptDeclaration(attrs, handle))
case (.letKeyword, let handle)?, (.varKeyword, let handle)?:
return RawDeclSyntax(self.parseLetOrVarDeclaration(attrs, handle, inMemberDeclList: inMemberDeclList))
return RawDeclSyntax(self.parseVariableBindingDeclaration(attrs, handle, inMemberDeclList: inMemberDeclList))
case (.initKeyword, let handle)?:
return RawDeclSyntax(self.parseInitializerDeclaration(attrs, handle))
case (.deinitKeyword, let handle)?:
Expand All @@ -261,7 +261,7 @@ extension Parser {
let isProbablyTupleDecl = self.at(.leftParen) && self.peek().rawTokenKind.is(any: [.identifier, .wildcard])

if isProbablyVarDecl || isProbablyTupleDecl {
return RawDeclSyntax(self.parseLetOrVarDeclaration(attrs, .missing(.keyword(.var))))
return RawDeclSyntax(self.parseVariableBindingDeclaration(attrs, .missing(.keyword(.var))))
}

if self.currentToken.isEditorPlaceholder {
Expand Down Expand Up @@ -1433,7 +1433,7 @@ extension Parser {
/// }
/// ```
@_spi(RawSyntax)
public mutating func parseLetOrVarDeclaration(
public mutating func parseVariableBindingDeclaration(
_ attrs: DeclAttributes,
_ handle: RecoveryConsumptionHandle,
inMemberDeclList: Bool = false
Expand Down Expand Up @@ -1533,7 +1533,7 @@ extension Parser {
attributes: attrs.attributes,
modifiers: attrs.modifiers,
unexpectedBeforeIntroducer,
letOrVarKeyword: introducer,
variableBindingKeyword: introducer,
bindings: RawPatternBindingListSyntax(elements: elements, arena: self.arena),
arena: self.arena
)
Expand Down
6 changes: 3 additions & 3 deletions Sources/SwiftParser/Expressions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,11 @@ extension Parser {
/// ```
/// case let x.y <- 'x' must refer to the base of some member access, y must refer to some pattern-compatible identfier
/// ```
case letOrVar
case variableBinding

var admitsBinding: Bool {
switch self {
case .letOrVar:
case .variableBinding:
return true
case .none, .matching:
return false
Expand Down Expand Up @@ -328,7 +328,7 @@ extension Parser {

case (.equal, let handle)?:
switch pattern {
case .matching, .letOrVar:
case .matching, .variableBinding:
return nil
case .none:
let eq = self.eat(handle)
Expand Down
12 changes: 7 additions & 5 deletions Sources/SwiftParser/Patterns.swift
Original file line number Diff line number Diff line change
Expand Up @@ -121,11 +121,12 @@ extension Parser {
)
case (.letKeyword, let handle)?,
(.varKeyword, let handle)?:
let letOrVar = self.eat(handle)
// 'let' or 'var'
let bindingKeyword = self.eat(handle)
let value = self.parsePattern()
return RawPatternSyntax(
RawValueBindingPatternSyntax(
letOrVarKeyword: letOrVar,
variableBindingKeyword: bindingKeyword,
valuePattern: value,
arena: self.arena
)
Expand Down Expand Up @@ -240,11 +241,12 @@ extension Parser {
switch self.at(anyIn: MatchingPatternStart.self) {
case (.varKeyword, let handle)?,
(.letKeyword, let handle)?:
let letOrVar = self.eat(handle)
let value = self.parseMatchingPattern(context: .letOrVar)
// 'let' or 'var'
let bindingKeyword = self.eat(handle)
let value = self.parseMatchingPattern(context: .variableBinding)
return RawPatternSyntax(
RawValueBindingPatternSyntax(
letOrVarKeyword: letOrVar,
variableBindingKeyword: bindingKeyword,
valuePattern: value,
arena: self.arena
)
Expand Down
11 changes: 6 additions & 5 deletions Sources/SwiftParser/Statements.swift
Original file line number Diff line number Diff line change
Expand Up @@ -251,9 +251,10 @@ extension Parser {
let pattern = self.parseMatchingPattern(context: .matching)
kind = .pattern(caseKeyword, pattern)
} else {
let letOrVar = self.consumeAnyToken()
let pattern = self.parseMatchingPattern(context: .letOrVar)
kind = .optional(letOrVar, pattern)
// A 'let' or 'var'
let variableBinding = self.consumeAnyToken()
let pattern = self.parseMatchingPattern(context: .variableBinding)
kind = .optional(variableBinding, pattern)
}

// Now parse an optional type annotation.
Expand Down Expand Up @@ -285,10 +286,10 @@ extension Parser {
}

switch kind {
case let .optional(letOrVar, pattern):
case let .optional(variableBindingKeyword, pattern):
return .optionalBinding(
RawOptionalBindingConditionSyntax(
letOrVarKeyword: letOrVar,
variableBindingKeyword: variableBindingKeyword,
pattern: pattern,
typeAnnotation: annotation,
initializer: initializer,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1044,7 +1044,7 @@ public class ParseDiagnosticsGenerator: SyntaxAnyVisitor {
return $0.initializer?.value.as(TryExprSyntax.self)?.tryKeyword
})
exchangeTokens(
unexpected: node.unexpectedBetweenModifiersAndLetOrVarKeyword,
unexpected: node.unexpectedBetweenModifiersAndVariableBindingKeyword,
unexpectedTokenCondition: { $0.tokenKind == .keyword(.try) },
correctTokens: missingTries,
message: { _ in .tryOnInitialValueExpression },
Expand Down
54 changes: 27 additions & 27 deletions Sources/SwiftSyntax/Raw/gyb_generated/RawSyntaxNodes.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9506,9 +9506,9 @@ public struct RawVariableDeclSyntax: RawDeclSyntaxNodeProtocol {
attributes: RawAttributeListSyntax?,
_ unexpectedBetweenAttributesAndModifiers: RawUnexpectedNodesSyntax? = nil,
modifiers: RawModifierListSyntax?,
_ unexpectedBetweenModifiersAndLetOrVarKeyword: RawUnexpectedNodesSyntax? = nil,
letOrVarKeyword: RawTokenSyntax,
_ unexpectedBetweenLetOrVarKeywordAndBindings: RawUnexpectedNodesSyntax? = nil,
_ unexpectedBetweenModifiersAndVariableBindingKeyword: RawUnexpectedNodesSyntax? = nil,
variableBindingKeyword: RawTokenSyntax,
_ unexpectedBetweenVariableBindingKeywordAndBindings: RawUnexpectedNodesSyntax? = nil,
bindings: RawPatternBindingListSyntax,
_ unexpectedAfterBindings: RawUnexpectedNodesSyntax? = nil,
arena: __shared SyntaxArena
Expand All @@ -9520,9 +9520,9 @@ public struct RawVariableDeclSyntax: RawDeclSyntaxNodeProtocol {
layout[1] = attributes?.raw
layout[2] = unexpectedBetweenAttributesAndModifiers?.raw
layout[3] = modifiers?.raw
layout[4] = unexpectedBetweenModifiersAndLetOrVarKeyword?.raw
layout[5] = letOrVarKeyword.raw
layout[6] = unexpectedBetweenLetOrVarKeywordAndBindings?.raw
layout[4] = unexpectedBetweenModifiersAndVariableBindingKeyword?.raw
layout[5] = variableBindingKeyword.raw
layout[6] = unexpectedBetweenVariableBindingKeywordAndBindings?.raw
layout[7] = bindings.raw
layout[8] = unexpectedAfterBindings?.raw
}
Expand All @@ -9541,13 +9541,13 @@ public struct RawVariableDeclSyntax: RawDeclSyntaxNodeProtocol {
public var modifiers: RawModifierListSyntax? {
layoutView.children[3].map(RawModifierListSyntax.init(raw:))
}
public var unexpectedBetweenModifiersAndLetOrVarKeyword: RawUnexpectedNodesSyntax? {
public var unexpectedBetweenModifiersAndVariableBindingKeyword: RawUnexpectedNodesSyntax? {
layoutView.children[4].map(RawUnexpectedNodesSyntax.init(raw:))
}
public var letOrVarKeyword: RawTokenSyntax {
public var variableBindingKeyword: RawTokenSyntax {
layoutView.children[5].map(RawTokenSyntax.init(raw:))!
}
public var unexpectedBetweenLetOrVarKeywordAndBindings: RawUnexpectedNodesSyntax? {
public var unexpectedBetweenVariableBindingKeywordAndBindings: RawUnexpectedNodesSyntax? {
layoutView.children[6].map(RawUnexpectedNodesSyntax.init(raw:))
}
public var bindings: RawPatternBindingListSyntax {
Expand Down Expand Up @@ -14791,9 +14791,9 @@ public struct RawOptionalBindingConditionSyntax: RawSyntaxNodeProtocol {
}

public init(
_ unexpectedBeforeLetOrVarKeyword: RawUnexpectedNodesSyntax? = nil,
letOrVarKeyword: RawTokenSyntax,
_ unexpectedBetweenLetOrVarKeywordAndPattern: RawUnexpectedNodesSyntax? = nil,
_ unexpectedBeforeVariableBindingKeyword: RawUnexpectedNodesSyntax? = nil,
variableBindingKeyword: RawTokenSyntax,
_ unexpectedBetweenVariableBindingKeywordAndPattern: RawUnexpectedNodesSyntax? = nil,
pattern: RawPatternSyntax,
_ unexpectedBetweenPatternAndTypeAnnotation: RawUnexpectedNodesSyntax? = nil,
typeAnnotation: RawTypeAnnotationSyntax?,
Expand All @@ -14805,9 +14805,9 @@ public struct RawOptionalBindingConditionSyntax: RawSyntaxNodeProtocol {
let raw = RawSyntax.makeLayout(
kind: .optionalBindingCondition, uninitializedCount: 9, arena: arena) { layout in
layout.initialize(repeating: nil)
layout[0] = unexpectedBeforeLetOrVarKeyword?.raw
layout[1] = letOrVarKeyword.raw
layout[2] = unexpectedBetweenLetOrVarKeywordAndPattern?.raw
layout[0] = unexpectedBeforeVariableBindingKeyword?.raw
layout[1] = variableBindingKeyword.raw
layout[2] = unexpectedBetweenVariableBindingKeywordAndPattern?.raw
layout[3] = pattern.raw
layout[4] = unexpectedBetweenPatternAndTypeAnnotation?.raw
layout[5] = typeAnnotation?.raw
Expand All @@ -14818,13 +14818,13 @@ public struct RawOptionalBindingConditionSyntax: RawSyntaxNodeProtocol {
self.init(raw: raw)
}

public var unexpectedBeforeLetOrVarKeyword: RawUnexpectedNodesSyntax? {
public var unexpectedBeforeVariableBindingKeyword: RawUnexpectedNodesSyntax? {
layoutView.children[0].map(RawUnexpectedNodesSyntax.init(raw:))
}
public var letOrVarKeyword: RawTokenSyntax {
public var variableBindingKeyword: RawTokenSyntax {
layoutView.children[1].map(RawTokenSyntax.init(raw:))!
}
public var unexpectedBetweenLetOrVarKeywordAndPattern: RawUnexpectedNodesSyntax? {
public var unexpectedBetweenVariableBindingKeywordAndPattern: RawUnexpectedNodesSyntax? {
layoutView.children[2].map(RawUnexpectedNodesSyntax.init(raw:))
}
public var pattern: RawPatternSyntax {
Expand Down Expand Up @@ -17916,32 +17916,32 @@ public struct RawValueBindingPatternSyntax: RawPatternSyntaxNodeProtocol {
}

public init(
_ unexpectedBeforeLetOrVarKeyword: RawUnexpectedNodesSyntax? = nil,
letOrVarKeyword: RawTokenSyntax,
_ unexpectedBetweenLetOrVarKeywordAndValuePattern: RawUnexpectedNodesSyntax? = nil,
_ unexpectedBeforeVariableBindingKeyword: RawUnexpectedNodesSyntax? = nil,
variableBindingKeyword: RawTokenSyntax,
_ unexpectedBetweenVariableBindingKeywordAndValuePattern: RawUnexpectedNodesSyntax? = nil,
valuePattern: RawPatternSyntax,
_ unexpectedAfterValuePattern: RawUnexpectedNodesSyntax? = nil,
arena: __shared SyntaxArena
) {
let raw = RawSyntax.makeLayout(
kind: .valueBindingPattern, uninitializedCount: 5, arena: arena) { layout in
layout.initialize(repeating: nil)
layout[0] = unexpectedBeforeLetOrVarKeyword?.raw
layout[1] = letOrVarKeyword.raw
layout[2] = unexpectedBetweenLetOrVarKeywordAndValuePattern?.raw
layout[0] = unexpectedBeforeVariableBindingKeyword?.raw
layout[1] = variableBindingKeyword.raw
layout[2] = unexpectedBetweenVariableBindingKeywordAndValuePattern?.raw
layout[3] = valuePattern.raw
layout[4] = unexpectedAfterValuePattern?.raw
}
self.init(raw: raw)
}

public var unexpectedBeforeLetOrVarKeyword: RawUnexpectedNodesSyntax? {
public var unexpectedBeforeVariableBindingKeyword: RawUnexpectedNodesSyntax? {
layoutView.children[0].map(RawUnexpectedNodesSyntax.init(raw:))
}
public var letOrVarKeyword: RawTokenSyntax {
public var variableBindingKeyword: RawTokenSyntax {
layoutView.children[1].map(RawTokenSyntax.init(raw:))!
}
public var unexpectedBetweenLetOrVarKeywordAndValuePattern: RawUnexpectedNodesSyntax? {
public var unexpectedBetweenVariableBindingKeywordAndValuePattern: RawUnexpectedNodesSyntax? {
layoutView.children[2].map(RawUnexpectedNodesSyntax.init(raw:))
}
public var valuePattern: RawPatternSyntax {
Expand Down
24 changes: 12 additions & 12 deletions Sources/SwiftSyntax/gyb_generated/SyntaxFactory.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4501,15 +4501,15 @@ public enum SyntaxFactory {
}
}
@available(*, deprecated, message: "Use initializer on VariableDeclSyntax")
public static func makeVariableDecl(_ unexpectedBeforeAttributes: UnexpectedNodesSyntax? = nil, attributes: AttributeListSyntax?, _ unexpectedBetweenAttributesAndModifiers: UnexpectedNodesSyntax? = nil, modifiers: ModifierListSyntax?, _ unexpectedBetweenModifiersAndLetOrVarKeyword: UnexpectedNodesSyntax? = nil, letOrVarKeyword: TokenSyntax, _ unexpectedBetweenLetOrVarKeywordAndBindings: UnexpectedNodesSyntax? = nil, bindings: PatternBindingListSyntax, _ unexpectedAfterBindings: UnexpectedNodesSyntax? = nil) -> VariableDeclSyntax {
public static func makeVariableDecl(_ unexpectedBeforeAttributes: UnexpectedNodesSyntax? = nil, attributes: AttributeListSyntax?, _ unexpectedBetweenAttributesAndModifiers: UnexpectedNodesSyntax? = nil, modifiers: ModifierListSyntax?, _ unexpectedBetweenModifiersAndVariableBindingKeyword: UnexpectedNodesSyntax? = nil, variableBindingKeyword: TokenSyntax, _ unexpectedBetweenVariableBindingKeywordAndBindings: UnexpectedNodesSyntax? = nil, bindings: PatternBindingListSyntax, _ unexpectedAfterBindings: UnexpectedNodesSyntax? = nil) -> VariableDeclSyntax {
let layout: [RawSyntax?] = [
unexpectedBeforeAttributes?.raw,
attributes?.raw,
unexpectedBetweenAttributesAndModifiers?.raw,
modifiers?.raw,
unexpectedBetweenModifiersAndLetOrVarKeyword?.raw,
letOrVarKeyword.raw,
unexpectedBetweenLetOrVarKeywordAndBindings?.raw,
unexpectedBetweenModifiersAndVariableBindingKeyword?.raw,
variableBindingKeyword.raw,
unexpectedBetweenVariableBindingKeywordAndBindings?.raw,
bindings.raw,
unexpectedAfterBindings?.raw,
]
Expand Down Expand Up @@ -6912,11 +6912,11 @@ public enum SyntaxFactory {
}
}
@available(*, deprecated, message: "Use initializer on OptionalBindingConditionSyntax")
public static func makeOptionalBindingCondition(_ unexpectedBeforeLetOrVarKeyword: UnexpectedNodesSyntax? = nil, letOrVarKeyword: TokenSyntax, _ unexpectedBetweenLetOrVarKeywordAndPattern: UnexpectedNodesSyntax? = nil, pattern: PatternSyntax, _ unexpectedBetweenPatternAndTypeAnnotation: UnexpectedNodesSyntax? = nil, typeAnnotation: TypeAnnotationSyntax?, _ unexpectedBetweenTypeAnnotationAndInitializer: UnexpectedNodesSyntax? = nil, initializer: InitializerClauseSyntax?, _ unexpectedAfterInitializer: UnexpectedNodesSyntax? = nil) -> OptionalBindingConditionSyntax {
public static func makeOptionalBindingCondition(_ unexpectedBeforeVariableBindingKeyword: UnexpectedNodesSyntax? = nil, variableBindingKeyword: TokenSyntax, _ unexpectedBetweenVariableBindingKeywordAndPattern: UnexpectedNodesSyntax? = nil, pattern: PatternSyntax, _ unexpectedBetweenPatternAndTypeAnnotation: UnexpectedNodesSyntax? = nil, typeAnnotation: TypeAnnotationSyntax?, _ unexpectedBetweenTypeAnnotationAndInitializer: UnexpectedNodesSyntax? = nil, initializer: InitializerClauseSyntax?, _ unexpectedAfterInitializer: UnexpectedNodesSyntax? = nil) -> OptionalBindingConditionSyntax {
let layout: [RawSyntax?] = [
unexpectedBeforeLetOrVarKeyword?.raw,
letOrVarKeyword.raw,
unexpectedBetweenLetOrVarKeywordAndPattern?.raw,
unexpectedBeforeVariableBindingKeyword?.raw,
variableBindingKeyword.raw,
unexpectedBetweenVariableBindingKeywordAndPattern?.raw,
pattern.raw,
unexpectedBetweenPatternAndTypeAnnotation?.raw,
typeAnnotation?.raw,
Expand Down Expand Up @@ -8460,11 +8460,11 @@ public enum SyntaxFactory {
}
}
@available(*, deprecated, message: "Use initializer on ValueBindingPatternSyntax")
public static func makeValueBindingPattern(_ unexpectedBeforeLetOrVarKeyword: UnexpectedNodesSyntax? = nil, letOrVarKeyword: TokenSyntax, _ unexpectedBetweenLetOrVarKeywordAndValuePattern: UnexpectedNodesSyntax? = nil, valuePattern: PatternSyntax, _ unexpectedAfterValuePattern: UnexpectedNodesSyntax? = nil) -> ValueBindingPatternSyntax {
public static func makeValueBindingPattern(_ unexpectedBeforeVariableBindingKeyword: UnexpectedNodesSyntax? = nil, variableBindingKeyword: TokenSyntax, _ unexpectedBetweenVariableBindingKeywordAndValuePattern: UnexpectedNodesSyntax? = nil, valuePattern: PatternSyntax, _ unexpectedAfterValuePattern: UnexpectedNodesSyntax? = nil) -> ValueBindingPatternSyntax {
let layout: [RawSyntax?] = [
unexpectedBeforeLetOrVarKeyword?.raw,
letOrVarKeyword.raw,
unexpectedBetweenLetOrVarKeywordAndValuePattern?.raw,
unexpectedBeforeVariableBindingKeyword?.raw,
variableBindingKeyword.raw,
unexpectedBetweenVariableBindingKeywordAndValuePattern?.raw,
valuePattern.raw,
unexpectedAfterValuePattern?.raw,
]
Expand Down
Loading

0 comments on commit 008fb99

Please sign in to comment.