1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2023 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
import SwiftSyntax
import SwiftSyntaxBuilder
import SyntaxSupport
import Utils
func deprecationAttribute(for syntaxKind: SyntaxNodeKind) -> AttributeSyntax {
if let deprecationMessage = syntaxKind.deprecationMessage {
return AttributeSyntax("@available(*, deprecated, message: \(literal: deprecationMessage))")
}
return AttributeSyntax(#"@available(*, deprecated, renamed: "\#(syntaxKind.syntaxType)")"#)
}
let renamedSyntaxNodesFile = SourceFileSyntax(leadingTrivia: copyrightHeader) {
for syntaxKind in SyntaxNodeKind.allCases.sorted(by: { $0.deprecatedRawValue ?? "" < $1.deprecatedRawValue ?? "" }) {
if let deprecatedName = syntaxKind.deprecatedRawValue {
DeclSyntax(
"""
\(deprecationAttribute(for: syntaxKind))
public typealias \(raw: deprecatedName.withFirstCharacterUppercased)Syntax = \(syntaxKind.syntaxType)
"""
)
}
}
try! ExtensionDeclSyntax("extension SyntaxKind") {
let syntaxKinds = SyntaxNodeKind.allCases.sorted(by: { $0.deprecatedRawValue ?? "" < $1.deprecatedRawValue ?? "" })
for syntaxKind in syntaxKinds {
if let deprecatedName = syntaxKind.deprecatedRawValue {
DeclSyntax(
"""
\(deprecationAttribute(for: syntaxKind))
public static var \(raw: deprecatedName): Self {
return .\(syntaxKind.varOrCaseName)
}
"""
)
}
}
}
}
|