mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Change "differentiation parameter" to "differentiability parameter", matching terminology in docs/DifferentiableProgramming.md.
268 lines
7.6 KiB
Python
268 lines
7.6 KiB
Python
from Node import error
|
|
|
|
|
|
SYNTAX_NODE_SERIALIZATION_CODES = {
|
|
# 0 is 'Token'. Needs to be defined manually
|
|
# 1 is 'Unknown'. Needs to be defined manually
|
|
'UnknownDecl': 2,
|
|
'TypealiasDecl': 3,
|
|
'AssociatedtypeDecl': 4,
|
|
'IfConfigDecl': 5,
|
|
'PoundErrorDecl': 6,
|
|
'PoundWarningDecl': 7,
|
|
'PoundSourceLocation': 8,
|
|
'ClassDecl': 9,
|
|
'StructDecl': 10,
|
|
'ProtocolDecl': 11,
|
|
'ExtensionDecl': 12,
|
|
'FunctionDecl': 13,
|
|
'InitializerDecl': 14,
|
|
'DeinitializerDecl': 15,
|
|
'SubscriptDecl': 16,
|
|
'ImportDecl': 17,
|
|
'AccessorDecl': 18,
|
|
'VariableDecl': 19,
|
|
'EnumCaseDecl': 20,
|
|
'EnumDecl': 21,
|
|
'OperatorDecl': 22,
|
|
'PrecedenceGroupDecl': 23,
|
|
'UnknownExpr': 24,
|
|
'InOutExpr': 25,
|
|
'PoundColumnExpr': 26,
|
|
'TryExpr': 27,
|
|
'IdentifierExpr': 28,
|
|
'SuperRefExpr': 29,
|
|
'NilLiteralExpr': 30,
|
|
'DiscardAssignmentExpr': 31,
|
|
'AssignmentExpr': 32,
|
|
'SequenceExpr': 33,
|
|
'PoundLineExpr': 34,
|
|
'PoundFileExpr': 35,
|
|
'PoundFunctionExpr': 36,
|
|
'PoundDsohandleExpr': 37,
|
|
'SymbolicReferenceExpr': 38,
|
|
'PrefixOperatorExpr': 39,
|
|
'BinaryOperatorExpr': 40,
|
|
'ArrowExpr': 41,
|
|
'FloatLiteralExpr': 42,
|
|
'TupleExpr': 43,
|
|
'ArrayExpr': 44,
|
|
'DictionaryExpr': 45,
|
|
'ImplicitMemberExpr': 46,
|
|
'IntegerLiteralExpr': 47,
|
|
'StringLiteralExpr': 48,
|
|
'BooleanLiteralExpr': 49,
|
|
'TernaryExpr': 50,
|
|
'MemberAccessExpr': 51,
|
|
'DotSelfExpr': 52,
|
|
'IsExpr': 53,
|
|
'AsExpr': 54,
|
|
'TypeExpr': 55,
|
|
'ClosureExpr': 56,
|
|
'UnresolvedPatternExpr': 57,
|
|
'FunctionCallExpr': 58,
|
|
'SubscriptExpr': 59,
|
|
'OptionalChainingExpr': 60,
|
|
'ForcedValueExpr': 61,
|
|
'PostfixUnaryExpr': 62,
|
|
'SpecializeExpr': 63,
|
|
'KeyPathExpr': 65,
|
|
'KeyPathBaseExpr': 66,
|
|
'ObjcKeyPathExpr': 67,
|
|
'ObjcSelectorExpr': 68,
|
|
'EditorPlaceholderExpr': 69,
|
|
'ObjectLiteralExpr': 70,
|
|
'UnknownStmt': 71,
|
|
'ContinueStmt': 72,
|
|
'WhileStmt': 73,
|
|
'DeferStmt': 74,
|
|
'ExpressionStmt': 75,
|
|
'RepeatWhileStmt': 76,
|
|
'GuardStmt': 77,
|
|
'ForInStmt': 78,
|
|
'SwitchStmt': 79,
|
|
'DoStmt': 80,
|
|
'ReturnStmt': 81,
|
|
'FallthroughStmt': 82,
|
|
'BreakStmt': 83,
|
|
'DeclarationStmt': 84,
|
|
'ThrowStmt': 85,
|
|
'IfStmt': 86,
|
|
'Decl': 87,
|
|
'Expr': 88,
|
|
'Stmt': 89,
|
|
'Type': 90,
|
|
'Pattern': 91,
|
|
'CodeBlockItem': 92,
|
|
'CodeBlock': 93,
|
|
'DeclNameArgument': 94,
|
|
'DeclNameArguments': 95,
|
|
# removed: 'FunctionCallArgument': 96,
|
|
'TupleExprElement': 97,
|
|
'ArrayElement': 98,
|
|
'DictionaryElement': 99,
|
|
'ClosureCaptureItem': 100,
|
|
'ClosureCaptureSignature': 101,
|
|
'ClosureParam': 102,
|
|
'ClosureSignature': 103,
|
|
'StringSegment': 104,
|
|
'ExpressionSegment': 105,
|
|
'ObjcNamePiece': 106,
|
|
'TypeInitializerClause': 107,
|
|
'ParameterClause': 108,
|
|
'ReturnClause': 109,
|
|
'FunctionSignature': 110,
|
|
'IfConfigClause': 111,
|
|
'PoundSourceLocationArgs': 112,
|
|
'DeclModifier': 113,
|
|
'InheritedType': 114,
|
|
'TypeInheritanceClause': 115,
|
|
'MemberDeclBlock': 116,
|
|
'MemberDeclListItem': 117,
|
|
'SourceFile': 118,
|
|
'InitializerClause': 119,
|
|
'FunctionParameter': 120,
|
|
'AccessLevelModifier': 121,
|
|
'AccessPathComponent': 122,
|
|
'AccessorParameter': 123,
|
|
'AccessorBlock': 124,
|
|
'PatternBinding': 125,
|
|
'EnumCaseElement': 126,
|
|
'OperatorPrecedenceAndTypes': 127,
|
|
'PrecedenceGroupRelation': 128,
|
|
'PrecedenceGroupNameElement': 129,
|
|
'PrecedenceGroupAssignment': 130,
|
|
'PrecedenceGroupAssociativity': 131,
|
|
'Attribute': 132,
|
|
'LabeledSpecializeEntry': 133,
|
|
'ImplementsAttributeArguments': 134,
|
|
'ObjCSelectorPiece': 135,
|
|
'WhereClause': 136,
|
|
'ConditionElement': 137,
|
|
'AvailabilityCondition': 138,
|
|
'MatchingPatternCondition': 139,
|
|
'OptionalBindingCondition': 140,
|
|
'ElseIfContinuation': 141,
|
|
'ElseBlock': 142,
|
|
'SwitchCase': 143,
|
|
'SwitchDefaultLabel': 144,
|
|
'CaseItem': 145,
|
|
'SwitchCaseLabel': 146,
|
|
'CatchClause': 147,
|
|
'GenericWhereClause': 148,
|
|
'SameTypeRequirement': 149,
|
|
'GenericParameter': 150,
|
|
'GenericParameterClause': 151,
|
|
'ConformanceRequirement': 152,
|
|
'CompositionTypeElement': 153,
|
|
'TupleTypeElement': 154,
|
|
'GenericArgument': 155,
|
|
'GenericArgumentClause': 156,
|
|
'TypeAnnotation': 157,
|
|
'TuplePatternElement': 158,
|
|
'AvailabilityArgument': 159,
|
|
'AvailabilityLabeledArgument': 160,
|
|
'AvailabilityVersionRestriction': 161,
|
|
'VersionTuple': 162,
|
|
'CodeBlockItemList': 163,
|
|
# removed: 'FunctionCallArgumentList': 164,
|
|
'TupleExprElementList': 165,
|
|
'ArrayElementList': 166,
|
|
'DictionaryElementList': 167,
|
|
'StringLiteralSegments': 168,
|
|
'DeclNameArgumentList': 169,
|
|
'ExprList': 170,
|
|
'ClosureCaptureItemList': 171,
|
|
'ClosureParamList': 172,
|
|
'ObjcName': 173,
|
|
'FunctionParameterList': 174,
|
|
'IfConfigClauseList': 175,
|
|
'InheritedTypeList': 176,
|
|
'MemberDeclList': 177,
|
|
'ModifierList': 178,
|
|
'AccessPath': 179,
|
|
'AccessorList': 180,
|
|
'PatternBindingList': 181,
|
|
'EnumCaseElementList': 182,
|
|
'PrecedenceGroupAttributeList': 183,
|
|
'PrecedenceGroupNameList': 184,
|
|
'TokenList': 185,
|
|
'NonEmptyTokenList': 186,
|
|
'AttributeList': 187,
|
|
'SpecializeAttributeSpecList': 188,
|
|
'ObjCSelector': 189,
|
|
'SwitchCaseList': 190,
|
|
'CatchClauseList': 191,
|
|
'CaseItemList': 192,
|
|
'ConditionElementList': 193,
|
|
'GenericRequirementList': 194,
|
|
'GenericParameterList': 195,
|
|
'CompositionTypeElementList': 196,
|
|
'TupleTypeElementList': 197,
|
|
'GenericArgumentList': 198,
|
|
'TuplePatternElementList': 199,
|
|
'AvailabilitySpecList': 200,
|
|
'UnknownPattern': 201,
|
|
'EnumCasePattern': 202,
|
|
'IsTypePattern': 203,
|
|
'OptionalPattern': 204,
|
|
'IdentifierPattern': 205,
|
|
'AsTypePattern': 206,
|
|
'TuplePattern': 207,
|
|
'WildcardPattern': 208,
|
|
'ExpressionPattern': 209,
|
|
'ValueBindingPattern': 210,
|
|
'UnknownType': 211,
|
|
'SimpleTypeIdentifier': 212,
|
|
'MemberTypeIdentifier': 213,
|
|
'ClassRestrictionType': 214,
|
|
'ArrayType': 215,
|
|
'DictionaryType': 216,
|
|
'MetatypeType': 217,
|
|
'OptionalType': 218,
|
|
'ImplicitlyUnwrappedOptionalType': 219,
|
|
'CompositionType': 220,
|
|
'TupleType': 221,
|
|
'FunctionType': 222,
|
|
'AttributedType': 223,
|
|
'YieldStmt': 224,
|
|
'YieldList': 225,
|
|
'IdentifierList': 226,
|
|
'NamedAttributeStringArgument': 227,
|
|
'DeclName': 228,
|
|
'PoundAssertStmt': 229,
|
|
'SomeType': 230,
|
|
'CustomAttribute': 231,
|
|
'GenericRequirement': 232,
|
|
'DifferentiableAttributeArguments': 233,
|
|
'DifferentiabilityParamsClause': 234,
|
|
'DifferentiabilityParams': 235,
|
|
'DifferentiabilityParamList': 236,
|
|
'DifferentiabilityParam': 237,
|
|
# removed: 'DifferentiableAttributeFuncSpecifier': 238,
|
|
'FunctionDeclName': 239,
|
|
'PoundFilePathExpr': 240,
|
|
'DerivativeRegistrationAttributeArguments': 241,
|
|
'QualifiedDeclName': 242,
|
|
'CatchItem': 243,
|
|
'CatchItemList': 244,
|
|
}
|
|
|
|
|
|
def verify_syntax_node_serialization_codes(nodes, serialization_codes):
|
|
# Verify that all nodes have serialization codes
|
|
for node in nodes:
|
|
if not node.is_base() and node.syntax_kind not in serialization_codes:
|
|
error('Node %s has no serialization code' % node.syntax_kind)
|
|
|
|
# Verify that no serialization code is used twice
|
|
used_codes = set()
|
|
for serialization_code in serialization_codes.values():
|
|
if serialization_code in used_codes:
|
|
error("Serialization code %d used twice" % serialization_code)
|
|
used_codes.add(serialization_code)
|
|
|
|
|
|
def get_serialization_code(syntax_kind):
|
|
return SYNTAX_NODE_SERIALIZATION_CODES[syntax_kind]
|