mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[swiftSyntax] Add type annotations to speed up compile time
This commit is contained in:
@@ -46,8 +46,9 @@ public struct ${Builder} {
|
|||||||
if let list = layout[idx] {
|
if let list = layout[idx] {
|
||||||
layout[idx] = list.appending(elt.raw)
|
layout[idx] = list.appending(elt.raw)
|
||||||
} else {
|
} else {
|
||||||
layout[idx] = RawSyntax(kind: .${child.swift_syntax_kind},
|
layout[idx] = RawSyntax(kind: SyntaxKind.${child.swift_syntax_kind},
|
||||||
layout: [elt.raw], presence: .present)
|
layout: [elt.raw],
|
||||||
|
presence: SourcePresence.present)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
% else:
|
% else:
|
||||||
|
|||||||
@@ -58,8 +58,7 @@ public enum SyntaxFactory {
|
|||||||
% child_params.append("%s: %s" % (child.swift_name, param_type))
|
% child_params.append("%s: %s" % (child.swift_name, param_type))
|
||||||
% child_params = ', '.join(child_params)
|
% child_params = ', '.join(child_params)
|
||||||
public static func make${node.syntax_kind}(${child_params}) -> ${node.name} {
|
public static func make${node.syntax_kind}(${child_params}) -> ${node.name} {
|
||||||
let data = SyntaxData(raw: RawSyntax(kind: .${node.swift_syntax_kind},
|
let layout: [RawSyntax?] = [
|
||||||
layout: [
|
|
||||||
% for child in node.children:
|
% for child in node.children:
|
||||||
% if child.is_optional:
|
% if child.is_optional:
|
||||||
${child.swift_name}?.data.raw ?? ${make_missing_swift_child(child)},
|
${child.swift_name}?.data.raw ?? ${make_missing_swift_child(child)},
|
||||||
@@ -67,15 +66,18 @@ public enum SyntaxFactory {
|
|||||||
${child.swift_name}.data.raw,
|
${child.swift_name}.data.raw,
|
||||||
% end
|
% end
|
||||||
% end
|
% end
|
||||||
], presence: .present))
|
]
|
||||||
|
let raw = RawSyntax(kind: SyntaxKind.${node.swift_syntax_kind},
|
||||||
|
layout: layout, presence: SourcePresence.present)
|
||||||
|
let data = SyntaxData(raw: raw)
|
||||||
return ${node.name}(root: data, data: data)
|
return ${node.name}(root: data, data: data)
|
||||||
}
|
}
|
||||||
% elif node.is_syntax_collection():
|
% elif node.is_syntax_collection():
|
||||||
public static func make${node.syntax_kind}(
|
public static func make${node.syntax_kind}(
|
||||||
_ elements: [${node.collection_element_type}]) -> ${node.name} {
|
_ elements: [${node.collection_element_type}]) -> ${node.name} {
|
||||||
let raw = RawSyntax(kind: .${node.swift_syntax_kind},
|
let raw = RawSyntax(kind: SyntaxKind.${node.swift_syntax_kind},
|
||||||
layout: elements.map { $0.data.raw },
|
layout: elements.map { $0.data.raw },
|
||||||
presence: .present)
|
presence: SourcePresence.present)
|
||||||
let data = SyntaxData(raw: raw)
|
let data = SyntaxData(raw: raw)
|
||||||
return ${node.name}(root: data, data: data)
|
return ${node.name}(root: data, data: data)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,11 +77,11 @@ def make_missing_swift_child(child):
|
|||||||
tok_kind = token.swift_kind() if token else "unknown"
|
tok_kind = token.swift_kind() if token else "unknown"
|
||||||
if not token or not token.text:
|
if not token or not token.text:
|
||||||
tok_kind += '("")'
|
tok_kind += '("")'
|
||||||
return 'RawSyntax.missingToken(.%s)' % tok_kind
|
return 'RawSyntax.missingToken(TokenKind.%s)' % tok_kind
|
||||||
else:
|
else:
|
||||||
missing_kind = "unknown" if child.syntax_kind == "Syntax" \
|
missing_kind = "unknown" if child.syntax_kind == "Syntax" \
|
||||||
else child.swift_syntax_kind
|
else child.swift_syntax_kind
|
||||||
return 'RawSyntax.missing(.%s)' % missing_kind
|
return 'RawSyntax.missing(SyntaxKind.%s)' % missing_kind
|
||||||
|
|
||||||
|
|
||||||
def create_node_map():
|
def create_node_map():
|
||||||
|
|||||||
Reference in New Issue
Block a user