Files
codeql/swift/ql/test/library-tests/ast/PrintAst.expected
2025-05-26 16:41:05 +02:00

7595 lines
393 KiB
Plaintext

cfg.swift:
# 1| [TopLevelCodeDecl] { ... }
# 1| getBody(): [BraceStmt] { ... }
# 1| getElement(0): [PatternBindingDecl] var ... = ...
# 1| getInit(0): [IntegerLiteralExpr] 0
# 1| getPattern(0): [TypedPattern] ... as ...
# 1| getSubPattern(): [NamedPattern] topLevelDecl
# 1| getTypeRepr(): [TypeRepr] Int
# 1| [ConcreteVarDecl] topLevelDecl
# 1| Type = Int
# 2| [TopLevelCodeDecl] { ... }
# 2| getBody(): [BraceStmt] { ... }
# 2| getElement(0): [IntegerLiteralExpr] 0
# 3| [TopLevelCodeDecl] { ... }
# 3| getBody(): [BraceStmt] { ... }
# 3| getElement(0): [BinaryExpr] ... .+(_:_:) ...
# 3| getFunction(): [MethodLookupExpr] .+(_:_:)
# 3| getBase(): [TypeExpr] Int.Type
# 3| getTypeRepr(): [TypeRepr] Int
# 3| getMethodRef(): [DeclRefExpr] +(_:_:)
# 3| getArgument(0): [Argument] : topLevelDecl
# 3| getExpr(): [DeclRefExpr] topLevelDecl
# 3| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 3| getArgument(1): [Argument] : 1
# 3| getExpr(): [IntegerLiteralExpr] 1
# 5| [NamedFunction] returnZero()
# 5| InterfaceType = () -> Int
# 5| getBody(): [BraceStmt] { ... }
# 5| getElement(0): [ReturnStmt] return ...
# 5| getResult(): [IntegerLiteralExpr] 0
# 7| [TopLevelCodeDecl] { ... }
# 7| getBody(): [BraceStmt] { ... }
# 7| getElement(0): [CallExpr] call to returnZero()
# 7| getFunction(): [DeclRefExpr] returnZero()
# 8| [TopLevelCodeDecl] { ... }
# 8| getBody(): [BraceStmt] { ... }
# 8| getElement(0): [CallExpr] call to Double.init(_:)
# 8| getFunction(): [MethodLookupExpr] Double.init(_:)
# 8| getBase(): [TypeExpr] Double.Type
# 8| getTypeRepr(): [TypeRepr] Double
# 8| getMethodRef(): [DeclRefExpr] Double.init(_:)
# 8| getArgument(0): [Argument] : topLevelDecl
# 8| getExpr(): [DeclRefExpr] topLevelDecl
# 8| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 10| [EnumDecl] MyError
# 11| getMember(0): [EnumCaseDecl] case ...
# 11| getMember(1): [EnumElementDecl] error1
# 11| getMember(2): [EnumElementDecl] error2
# 12| getMember(3): [EnumCaseDecl] case ...
# 12| getMember(4): [EnumElementDecl] error3
# 12| getParam(0): [ParamDecl] withParam
# 12| Type = Int
# 15| [NamedFunction] isZero(x:)
# 15| InterfaceType = (Int) -> Bool
# 15| getParam(0): [ParamDecl] x
# 15| Type = Int
# 15| getBody(): [BraceStmt] { ... }
# 15| getElement(0): [ReturnStmt] return ...
# 15| getResult(): [BinaryExpr] ... .==(_:_:) ...
# 15| getFunction(): [MethodLookupExpr] .==(_:_:)
# 15| getBase(): [TypeExpr] Int.Type
# 15| getTypeRepr(): [TypeRepr] Int
# 15| getMethodRef(): [DeclRefExpr] ==(_:_:)
# 15| getArgument(0): [Argument] : x
# 15| getExpr(): [DeclRefExpr] x
# 15| getArgument(1): [Argument] : 0
# 15| getExpr(): [IntegerLiteralExpr] 0
# 17| [NamedFunction] mightThrow(x:)
# 17| InterfaceType = (Int) throws -> Void
# 17| getParam(0): [ParamDecl] x
# 17| Type = Int
# 17| getBody(): [BraceStmt] { ... }
# 18| getElement(0): [GuardStmt] guard ... else { ... }
# 18| getCondition(): [StmtCondition] StmtCondition
# 18| getElement(0): [ConditionElement] ... .>=(_:_:) ...
# 18| getBoolean(): [BinaryExpr] ... .>=(_:_:) ...
# 18| getFunction(): [MethodLookupExpr] .>=(_:_:)
# 18| getBase(): [TypeExpr] Int.Type
# 18| getTypeRepr(): [TypeRepr] Int
# 18| getMethodRef(): [DeclRefExpr] >=(_:_:)
# 18| getArgument(0): [Argument] : x
# 18| getExpr(): [DeclRefExpr] x
# 18| getArgument(1): [Argument] : 0
# 18| getExpr(): [IntegerLiteralExpr] 0
# 18| getBody(): [BraceStmt] { ... }
# 19| getElement(0): [ThrowStmt] throw ...
# 19| getSubExpr(): [MethodLookupExpr] .error1
# 19| getBase(): [TypeExpr] MyError.Type
# 19| getTypeRepr(): [TypeRepr] MyError
# 19| getMethodRef(): [DeclRefExpr] error1
# 19| getSubExpr().getFullyConverted(): [ErasureExpr] (any Error) ...
# 21| getElement(1): [GuardStmt] guard ... else { ... }
# 21| getCondition(): [StmtCondition] StmtCondition
# 21| getElement(0): [ConditionElement] ... .<=(_:_:) ...
# 21| getBoolean(): [BinaryExpr] ... .<=(_:_:) ...
# 21| getFunction(): [MethodLookupExpr] .<=(_:_:)
# 21| getBase(): [TypeExpr] Int.Type
# 21| getTypeRepr(): [TypeRepr] Int
# 21| getMethodRef(): [DeclRefExpr] <=(_:_:)
# 21| getArgument(0): [Argument] : x
# 21| getExpr(): [DeclRefExpr] x
# 21| getArgument(1): [Argument] : 0
# 21| getExpr(): [IntegerLiteralExpr] 0
# 21| getBody(): [BraceStmt] { ... }
# 22| getElement(0): [ThrowStmt] throw ...
# 22| getSubExpr(): [CallExpr] call to ...
# 22| getFunction(): [MethodLookupExpr] .error3
# 22| getBase(): [TypeExpr] MyError.Type
# 22| getTypeRepr(): [TypeRepr] MyError
# 22| getMethodRef(): [DeclRefExpr] error3
# 22| getArgument(0): [Argument] withParam: ... .+(_:_:) ...
# 22| getExpr(): [BinaryExpr] ... .+(_:_:) ...
# 22| getFunction(): [MethodLookupExpr] .+(_:_:)
# 22| getBase(): [TypeExpr] Int.Type
# 22| getTypeRepr(): [TypeRepr] Int
# 22| getMethodRef(): [DeclRefExpr] +(_:_:)
# 22| getArgument(0): [Argument] : x
# 22| getExpr(): [DeclRefExpr] x
# 22| getArgument(1): [Argument] : 1
# 22| getExpr(): [IntegerLiteralExpr] 1
# 22| getSubExpr().getFullyConverted(): [ErasureExpr] (any Error) ...
# 26| [NamedFunction] tryCatch(x:)
# 26| InterfaceType = (Int) -> Int
# 26| getParam(0): [ParamDecl] x
# 26| Type = Int
# 26| getBody(): [BraceStmt] { ... }
# 27| getElement(0): [DoCatchStmt] do { ... } catch { ... }
# 27| getBody(): [BraceStmt] { ... }
# 28| getElement(0): [TryExpr] try ...
# 28| getSubExpr(): [CallExpr] call to mightThrow(x:)
# 28| getFunction(): [DeclRefExpr] mightThrow(x:)
# 28| getArgument(0): [Argument] x: 0
# 28| getExpr(): [IntegerLiteralExpr] 0
# 29| getElement(1): [CallExpr] call to print(_:separator:terminator:)
# 29| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 29| getArgument(0): [Argument] : [...]
# 29| getExpr(): [VarargExpansionExpr] [...]
# 29| getSubExpr(): [ArrayExpr] [...]
# 29| getElement(0): [StringLiteralExpr] Did not throw.
# 29| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 29| getArgument(1): [Argument] separator: default separator
# 29| getExpr(): [DefaultArgumentExpr] default separator
# 29| getArgument(2): [Argument] terminator: default terminator
# 29| getExpr(): [DefaultArgumentExpr] default terminator
# 30| getElement(2): [ForceTryExpr] try! ...
# 30| getSubExpr(): [CallExpr] call to mightThrow(x:)
# 30| getFunction(): [DeclRefExpr] mightThrow(x:)
# 30| getArgument(0): [Argument] x: 0
# 30| getExpr(): [IntegerLiteralExpr] 0
# 31| getElement(3): [CallExpr] call to print(_:separator:terminator:)
# 31| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 31| getArgument(0): [Argument] : [...]
# 31| getExpr(): [VarargExpansionExpr] [...]
# 31| getSubExpr(): [ArrayExpr] [...]
# 31| getElement(0): [StringLiteralExpr] Still did not throw.
# 31| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 31| getArgument(1): [Argument] separator: default separator
# 31| getExpr(): [DefaultArgumentExpr] default separator
# 31| getArgument(2): [Argument] terminator: default terminator
# 31| getExpr(): [DefaultArgumentExpr] default terminator
# 33| getCatch(0): [CaseStmt] case ...
# 33| getLabel(0): [CaseLabelItem] ... is ...
# 33| getPattern(): [IsPattern] ... is ...
# 33| getSubPattern(): [EnumElementPattern] .error1
# 33| getLabel(1): [CaseLabelItem] ... is ... where ...
# 33| getPattern(): [IsPattern] ... is ...
# 33| getSubPattern(): [EnumElementPattern] .error2
# 33| getGuard(): [CallExpr] call to isZero(x:)
# 33| getFunction(): [DeclRefExpr] isZero(x:)
# 33| getArgument(0): [Argument] x: x
# 33| getExpr(): [DeclRefExpr] x
# 33| getBody(): [BraceStmt] { ... }
# 34| getElement(0): [ReturnStmt] return ...
# 34| getResult(): [IntegerLiteralExpr] 0
# 35| getCatch(1): [CaseStmt] case ...
# 35| getLabel(0): [CaseLabelItem] ... is ...
# 35| getPattern(): [IsPattern] ... is ...
# 35| getSubPattern(): [EnumElementPattern] .error3(...)
# 35| getSubPattern(): [TuplePattern] (...)
# 35| getElement(0): [NamedPattern] withParam
# 35| getElement(0).getFullyUnresolved(): [BindingPattern] let ...
# 35| getVariable(0): [ConcreteVarDecl] withParam
# 35| Type = Int
# 35| getBody(): [BraceStmt] { ... }
# 36| getElement(0): [ReturnStmt] return ...
# 36| getResult(): [DeclRefExpr] withParam
# 37| getCatch(2): [CaseStmt] case ...
# 37| getLabel(0): [CaseLabelItem] ... is ...
# 37| getPattern(): [IsPattern] ... is ...
# 37| getCastTypeRepr(): [TypeRepr] MyError
# 37| getBody(): [BraceStmt] { ... }
# 38| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 38| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 38| getArgument(0): [Argument] : [...]
# 38| getExpr(): [VarargExpansionExpr] [...]
# 38| getSubExpr(): [ArrayExpr] [...]
# 38| getElement(0): [StringLiteralExpr] MyError
# 38| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 38| getArgument(1): [Argument] separator: default separator
# 38| getExpr(): [DefaultArgumentExpr] default separator
# 38| getArgument(2): [Argument] terminator: default terminator
# 38| getExpr(): [DefaultArgumentExpr] default terminator
# 39| getCatch(3): [CaseStmt] case ...
# 39| getLabel(0): [CaseLabelItem] error
# 39| getPattern(): [NamedPattern] error
# 39| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 39| getVariable(0): [ConcreteVarDecl] error
# 39| Type = any Error
# 39| getBody(): [BraceStmt] { ... }
# 40| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 40| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 40| getArgument(0): [Argument] : [...]
# 40| getExpr(): [VarargExpansionExpr] [...]
# 40| getSubExpr(): [ArrayExpr] [...]
# 40| getElement(0): [InterpolatedStringLiteralExpr] "..."
# 40| getAppendingExpr(): [TapExpr] TapExpr
# 40| getSubExpr(): [OpaqueValueExpr] OpaqueValueExpr
# 40| getBody(): [BraceStmt] { ... }
#-----| getVariable(0): [ConcreteVarDecl] $interpolation
#-----| Type = DefaultStringInterpolation
# 40| getElement(0): [CallExpr] call to appendLiteral(_:)
# 40| getFunction(): [MethodLookupExpr] .appendLiteral(_:)
# 40| getBase(): [DeclRefExpr] $interpolation
# 40| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:)
# 40| getArgument(0): [Argument] : Unknown error
# 40| getExpr(): [StringLiteralExpr] Unknown error
# 40| getElement(1): [CallExpr] call to appendInterpolation(_:)
# 40| getFunction(): [MethodLookupExpr] .appendInterpolation(_:)
# 40| getBase(): [DeclRefExpr] $interpolation
# 40| getBase().getFullyConverted(): [InOutExpr] &...
# 40| getMethodRef(): [DeclRefExpr] appendInterpolation(_:)
# 40| getArgument(0): [Argument] : error
# 40| getExpr(): [DeclRefExpr] error
# 40| getElement(2): [CallExpr] call to appendLiteral(_:)
# 40| getFunction(): [MethodLookupExpr] .appendLiteral(_:)
# 40| getBase(): [DeclRefExpr] $interpolation
# 40| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:)
# 40| getArgument(0): [Argument] :
# 40| getExpr(): [StringLiteralExpr]
# 40| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 40| getArgument(1): [Argument] separator: default separator
# 40| getExpr(): [DefaultArgumentExpr] default separator
# 40| getArgument(2): [Argument] terminator: default terminator
# 40| getExpr(): [DefaultArgumentExpr] default terminator
# 42| getElement(1): [ReturnStmt] return ...
# 42| getResult(): [IntegerLiteralExpr] 0
# 45| [NamedFunction] createClosure1(s:)
# 45| InterfaceType = (String) -> () -> String
# 45| getParam(0): [ParamDecl] s
# 45| Type = String
# 45| getBody(): [BraceStmt] { ... }
# 46| getElement(0): [ReturnStmt] return ...
# 46| getResult(): [ExplicitClosureExpr] { ... }
# 46| getBody(): [BraceStmt] { ... }
# 47| getElement(0): [ReturnStmt] return ...
# 47| getResult(): [BinaryExpr] ... .+(_:_:) ...
# 47| getFunction(): [MethodLookupExpr] .+(_:_:)
# 47| getBase(): [TypeExpr] String.Type
# 47| getTypeRepr(): [TypeRepr] String
# 47| getMethodRef(): [DeclRefExpr] +(_:_:)
# 47| getArgument(0): [Argument] : s
# 47| getExpr(): [DeclRefExpr] s
# 47| getArgument(1): [Argument] :
# 47| getExpr(): [StringLiteralExpr]
# 47| getCapture(0): [CapturedDecl] s
# 51| [NamedFunction] createClosure2(x:)
# 51| InterfaceType = (Int) -> (Int) -> Int
# 51| getParam(0): [ParamDecl] x
# 51| Type = Int
# 51| getBody(): [BraceStmt] { ... }
# 52| getElement(0): [NamedFunction] f(y:)
# 52| InterfaceType = (Int) -> Int
# 52| getParam(0): [ParamDecl] y
# 52| Type = Int
# 52| getBody(): [BraceStmt] { ... }
# 53| getElement(0): [ReturnStmt] return ...
# 53| getResult(): [BinaryExpr] ... .+(_:_:) ...
# 53| getFunction(): [MethodLookupExpr] .+(_:_:)
# 53| getBase(): [TypeExpr] Int.Type
# 53| getTypeRepr(): [TypeRepr] Int
# 53| getMethodRef(): [DeclRefExpr] +(_:_:)
# 53| getArgument(0): [Argument] : x
# 53| getExpr(): [DeclRefExpr] x
# 53| getArgument(1): [Argument] : y
# 53| getExpr(): [DeclRefExpr] y
# 53| getCapture(0): [CapturedDecl] x
# 55| getElement(1): [ReturnStmt] return ...
# 55| getResult(): [DeclRefExpr] f(y:)
# 58| [NamedFunction] createClosure3(x:)
# 58| InterfaceType = (Int) -> (Int) -> Int
# 58| getParam(0): [ParamDecl] x
# 58| Type = Int
# 58| getBody(): [BraceStmt] { ... }
# 59| getElement(0): [ReturnStmt] return ...
# 59| getResult(): [ExplicitClosureExpr] { ... }
# 60| getParam(0): [ParamDecl] y
# 60| Type = Int
# 59| getBody(): [BraceStmt] { ... }
# 60| getElement(0): [ReturnStmt] return ...
# 60| getResult(): [BinaryExpr] ... .+(_:_:) ...
# 60| getFunction(): [MethodLookupExpr] .+(_:_:)
# 60| getBase(): [TypeExpr] Int.Type
# 60| getTypeRepr(): [TypeRepr] Int
# 60| getMethodRef(): [DeclRefExpr] +(_:_:)
# 60| getArgument(0): [Argument] : x
# 60| getExpr(): [DeclRefExpr] x
# 60| getArgument(1): [Argument] : y
# 60| getExpr(): [DeclRefExpr] y
# 60| getCapture(0): [CapturedDecl] x
# 64| [NamedFunction] callClosures()
# 64| InterfaceType = () -> ()
# 64| getBody(): [BraceStmt] { ... }
# 65| getVariable(0): [ConcreteVarDecl] x1
# 65| Type = String
# 66| getVariable(1): [ConcreteVarDecl] x2
# 66| Type = Int
# 67| getVariable(2): [ConcreteVarDecl] x3
# 67| Type = Int
# 65| getElement(0): [PatternBindingDecl] var ... = ...
# 65| getInit(0): [CallExpr] call to ...
# 65| getFunction(): [CallExpr] call to createClosure1(s:)
# 65| getFunction(): [DeclRefExpr] createClosure1(s:)
# 65| getArgument(0): [Argument] s:
# 65| getExpr(): [StringLiteralExpr]
# 65| getPattern(0): [NamedPattern] x1
# 66| getElement(1): [PatternBindingDecl] var ... = ...
# 66| getInit(0): [CallExpr] call to ...
# 66| getFunction(): [CallExpr] call to createClosure2(x:)
# 66| getFunction(): [DeclRefExpr] createClosure2(x:)
# 66| getArgument(0): [Argument] x: 0
# 66| getExpr(): [IntegerLiteralExpr] 0
# 66| getArgument(0): [Argument] : 10
# 66| getExpr(): [IntegerLiteralExpr] 10
# 66| getPattern(0): [NamedPattern] x2
# 67| getElement(2): [PatternBindingDecl] var ... = ...
# 67| getInit(0): [CallExpr] call to ...
# 67| getFunction(): [CallExpr] call to createClosure3(x:)
# 67| getFunction(): [DeclRefExpr] createClosure3(x:)
# 67| getArgument(0): [Argument] x: 0
# 67| getExpr(): [IntegerLiteralExpr] 0
# 67| getArgument(0): [Argument] : 10
# 67| getExpr(): [IntegerLiteralExpr] 10
# 67| getPattern(0): [NamedPattern] x3
# 70| [NamedFunction] maybeParseInt(s:)
# 70| InterfaceType = (String) -> Int?
# 70| getParam(0): [ParamDecl] s
# 70| Type = String
# 70| getBody(): [BraceStmt] { ... }
# 71| getVariable(0): [ConcreteVarDecl] n
# 71| Type = Int?
# 71| getElement(0): [PatternBindingDecl] var ... = ...
# 71| getInit(0): [CallExpr] call to Self.init(_:)
# 71| getFunction(): [MethodLookupExpr] Self.init(_:)
# 71| getBase(): [TypeExpr] Int.Type
# 71| getTypeRepr(): [TypeRepr] Int
# 71| getMethodRef(): [DeclRefExpr] Self.init(_:)
# 71| getArgument(0): [Argument] : s
# 71| getExpr(): [DeclRefExpr] s
# 71| getPattern(0): [TypedPattern] ... as ...
# 71| getSubPattern(): [NamedPattern] n
# 71| getTypeRepr(): [TypeRepr] Int?
# 72| getElement(1): [ReturnStmt] return ...
# 72| getResult(): [DeclRefExpr] n
# 72| getResult().getFullyConverted(): [LoadExpr] (Int?) ...
# 75| [NamedFunction] forceAndBackToOptional()
# 75| InterfaceType = () -> Int?
# 75| getBody(): [BraceStmt] { ... }
# 76| getVariable(0): [ConcreteVarDecl] nBang
# 76| Type = Int
# 77| getVariable(1): [ConcreteVarDecl] n
# 77| Type = Int?
# 76| getElement(0): [PatternBindingDecl] var ... = ...
# 76| getInit(0): [ForceValueExpr] ...!
# 76| getSubExpr(): [CallExpr] call to maybeParseInt(s:)
# 76| getFunction(): [DeclRefExpr] maybeParseInt(s:)
# 76| getArgument(0): [Argument] s: 42
# 76| getExpr(): [StringLiteralExpr] 42
# 76| getPattern(0): [NamedPattern] nBang
# 77| getElement(1): [PatternBindingDecl] var ... = ...
# 77| getInit(0): [CallExpr] call to maybeParseInt(s:)
# 77| getFunction(): [DeclRefExpr] maybeParseInt(s:)
# 77| getArgument(0): [Argument] s: 42
# 77| getExpr(): [StringLiteralExpr] 42
# 77| getPattern(0): [NamedPattern] n
# 78| getElement(2): [ReturnStmt] return ...
# 78| getResult(): [BinaryExpr] ... .+(_:_:) ...
# 78| getFunction(): [MethodLookupExpr] .+(_:_:)
# 78| getBase(): [TypeExpr] Int.Type
# 78| getTypeRepr(): [TypeRepr] Int
# 78| getMethodRef(): [DeclRefExpr] +(_:_:)
# 78| getArgument(0): [Argument] : nBang
# 78| getExpr(): [DeclRefExpr] nBang
# 78| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 78| getArgument(1): [Argument] : ...!
# 78| getExpr(): [ForceValueExpr] ...!
# 78| getSubExpr(): [DeclRefExpr] n
# 78| getSubExpr().getFullyConverted(): [LoadExpr] (Int?) ...
# 78| getResult().getFullyConverted(): [InjectIntoOptionalExpr] (Int?) ...
# 81| [NamedFunction] testInOut()
# 81| InterfaceType = () -> Int
# 81| getBody(): [BraceStmt] { ... }
# 82| getVariable(0): [ConcreteVarDecl] temp
# 82| Type = Int
# 93| getVariable(1): [ConcreteVarDecl] tempOptional
# 93| Type = Int?
# 82| getElement(0): [PatternBindingDecl] var ... = ...
# 82| getInit(0): [IntegerLiteralExpr] 10
# 82| getPattern(0): [NamedPattern] temp
# 84| getElement(1): [NamedFunction] add(a:)
# 84| InterfaceType = (inout Int) -> ()
# 84| getParam(0): [ParamDecl] a
# 84| Type = Int
# 84| getBody(): [BraceStmt] { ... }
# 85| getElement(0): [AssignExpr] ... = ...
# 85| getDest(): [DeclRefExpr] a
# 85| getSource(): [BinaryExpr] ... .+(_:_:) ...
# 85| getFunction(): [MethodLookupExpr] .+(_:_:)
# 85| getBase(): [TypeExpr] Int.Type
# 85| getTypeRepr(): [TypeRepr] Int
# 85| getMethodRef(): [DeclRefExpr] +(_:_:)
# 85| getArgument(0): [Argument] : a
# 85| getExpr(): [DeclRefExpr] a
# 85| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 85| getArgument(1): [Argument] : 1
# 85| getExpr(): [IntegerLiteralExpr] 1
# 88| getElement(2): [NamedFunction] addOptional(a:)
# 88| InterfaceType = (inout Int?) -> ()
# 88| getParam(0): [ParamDecl] a
# 88| Type = Int?
# 88| getBody(): [BraceStmt] { ... }
# 89| getElement(0): [AssignExpr] ... = ...
# 89| getDest(): [DeclRefExpr] a
# 89| getSource(): [NilLiteralExpr] nil
# 92| getElement(3): [CallExpr] call to add(a:)
# 92| getFunction(): [DeclRefExpr] add(a:)
# 92| getArgument(0): [Argument] a: temp
# 92| getExpr(): [DeclRefExpr] temp
# 92| getExpr().getFullyConverted(): [InOutExpr] &...
# 93| getElement(4): [PatternBindingDecl] var ... = ...
# 93| getInit(0): [IntegerLiteralExpr] 10
# 93| getInit(0).getFullyConverted(): [InjectIntoOptionalExpr] (Int?) ...
# 93| getPattern(0): [TypedPattern] ... as ...
# 93| getSubPattern(): [NamedPattern] tempOptional
# 93| getTypeRepr(): [TypeRepr] Int?
# 94| getElement(5): [CallExpr] call to addOptional(a:)
# 94| getFunction(): [DeclRefExpr] addOptional(a:)
# 94| getArgument(0): [Argument] a: tempOptional
# 94| getExpr(): [DeclRefExpr] tempOptional
# 94| getExpr().getFullyConverted(): [InOutExpr] &...
# 95| getElement(6): [ReturnStmt] return ...
# 95| getResult(): [BinaryExpr] ... .+(_:_:) ...
# 95| getFunction(): [MethodLookupExpr] .+(_:_:)
# 95| getBase(): [TypeExpr] Int.Type
# 95| getTypeRepr(): [TypeRepr] Int
# 95| getMethodRef(): [DeclRefExpr] +(_:_:)
# 95| getArgument(0): [Argument] : temp
# 95| getExpr(): [DeclRefExpr] temp
# 95| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 95| getArgument(1): [Argument] : ...!
# 95| getExpr(): [ForceValueExpr] ...!
# 95| getSubExpr(): [DeclRefExpr] tempOptional
# 95| getSubExpr().getFullyConverted(): [LoadExpr] (Int?) ...
# 98| [ClassDecl] C
# 99| getMember(0): [PatternBindingDecl] var ... = ...
# 99| getPattern(0): [TypedPattern] ... as ...
# 99| getSubPattern(): [NamedPattern] myInt
# 99| getTypeRepr(): [TypeRepr] Int
# 99| getMember(1): [ConcreteVarDecl] myInt
# 99| Type = Int
# 99| getAccessor(0): [Accessor] get
# 99| InterfaceType = (C) -> () -> Int
# 99| getSelfParam(): [ParamDecl] self
# 99| Type = C
# 99| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .myInt
#-----| getBase(): [DeclRefExpr] self
# 100| getMember(2): [Initializer] C.init(n:)
# 100| InterfaceType = (C.Type) -> (Int) -> C
# 100| getSelfParam(): [ParamDecl] self
# 100| Type = C
# 100| getParam(0): [ParamDecl] n
# 100| Type = Int
# 100| getBody(): [BraceStmt] { ... }
# 101| getElement(0): [AssignExpr] ... = ...
# 101| getDest(): [MemberRefExpr] .myInt
# 101| getBase(): [DeclRefExpr] self
# 101| getSource(): [DeclRefExpr] n
# 102| getElement(1): [ReturnStmt] return
# 104| getMember(3): [NamedFunction] getMyInt()
# 104| InterfaceType = (C) -> () -> Int
# 104| getSelfParam(): [ParamDecl] self
# 104| Type = C
# 104| getBody(): [BraceStmt] { ... }
# 105| getElement(0): [ReturnStmt] return ...
# 105| getResult(): [MemberRefExpr] .myInt
# 105| getBase(): [DeclRefExpr] self
# 98| getMember(4): [Deinitializer] C.deinit()
# 98| InterfaceType = (C) -> () -> ()
# 98| getSelfParam(): [ParamDecl] self
# 98| Type = C
# 98| getBody(): [BraceStmt] { ... }
# 109| [NamedFunction] testMemberRef(param:inoutParam:opt:)
# 109| InterfaceType = (C, inout C, C?) -> ()
# 109| getParam(0): [ParamDecl] param
# 109| Type = C
# 109| getParam(1): [ParamDecl] inoutParam
# 109| Type = C
# 109| getParam(2): [ParamDecl] opt
# 109| Type = C?
# 109| getBody(): [BraceStmt] { ... }
# 110| getVariable(0): [ConcreteVarDecl] c
# 110| Type = C
# 111| getVariable(1): [ConcreteVarDecl] n1
# 111| Type = Int
# 112| getVariable(2): [ConcreteVarDecl] n2
# 112| Type = Int
# 113| getVariable(3): [ConcreteVarDecl] n3
# 113| Type = Int
# 114| getVariable(4): [ConcreteVarDecl] n4
# 114| Type = Int
# 115| getVariable(5): [ConcreteVarDecl] n5
# 115| Type = Int
# 116| getVariable(6): [ConcreteVarDecl] n6
# 116| Type = Int
# 118| getVariable(7): [ConcreteVarDecl] n8
# 118| Type = Int
# 120| getVariable(8): [ConcreteVarDecl] n9
# 120| Type = Int
# 121| getVariable(9): [ConcreteVarDecl] n7
# 121| Type = Int
# 122| getVariable(10): [ConcreteVarDecl] n10
# 122| Type = Int
# 123| getVariable(11): [ConcreteVarDecl] n11
# 123| Type = Int
# 124| getVariable(12): [ConcreteVarDecl] n12
# 124| Type = Int
# 126| getVariable(13): [ConcreteVarDecl] n13
# 126| Type = Int
# 127| getVariable(14): [ConcreteVarDecl] n14
# 127| Type = Int
# 128| getVariable(15): [ConcreteVarDecl] n15
# 128| Type = Int
# 129| getVariable(16): [ConcreteVarDecl] n16
# 129| Type = Int
# 131| getVariable(17): [ConcreteVarDecl] n17
# 131| Type = Int?
# 132| getVariable(18): [ConcreteVarDecl] n18
# 132| Type = Int?
# 133| getVariable(19): [ConcreteVarDecl] n19
# 133| Type = Int?
# 134| getVariable(20): [ConcreteVarDecl] n20
# 134| Type = Int?
# 110| getElement(0): [PatternBindingDecl] var ... = ...
# 110| getInit(0): [CallExpr] call to C.init(n:)
# 110| getFunction(): [MethodLookupExpr] C.init(n:)
# 110| getBase(): [TypeExpr] C.Type
# 110| getTypeRepr(): [TypeRepr] C
# 110| getMethodRef(): [DeclRefExpr] C.init(n:)
# 110| getArgument(0): [Argument] n: 42
# 110| getExpr(): [IntegerLiteralExpr] 42
# 110| getPattern(0): [NamedPattern] c
# 111| getElement(1): [PatternBindingDecl] var ... = ...
# 111| getInit(0): [MemberRefExpr] .myInt
# 111| getBase(): [DeclRefExpr] c
# 111| getPattern(0): [NamedPattern] n1
# 112| getElement(2): [PatternBindingDecl] var ... = ...
# 112| getInit(0): [MemberRefExpr] .myInt
# 112| getBase(): [DeclRefExpr] c
# 112| getBase().getFullyConverted(): [DotSelfExpr] .self
# 112| getPattern(0): [NamedPattern] n2
# 113| getElement(3): [PatternBindingDecl] var ... = ...
# 113| getInit(0): [CallExpr] call to getMyInt()
# 113| getFunction(): [MethodLookupExpr] .getMyInt()
# 113| getBase(): [DeclRefExpr] c
# 113| getMethodRef(): [DeclRefExpr] getMyInt()
# 113| getPattern(0): [NamedPattern] n3
# 114| getElement(4): [PatternBindingDecl] var ... = ...
# 114| getInit(0): [CallExpr] call to getMyInt()
# 114| getFunction(): [MethodLookupExpr] .getMyInt()
# 114| getBase(): [DeclRefExpr] c
# 114| getBase().getFullyConverted(): [DotSelfExpr] .self
# 114| getMethodRef(): [DeclRefExpr] getMyInt()
# 114| getPattern(0): [NamedPattern] n4
# 115| getElement(5): [PatternBindingDecl] var ... = ...
# 115| getInit(0): [MemberRefExpr] .myInt
# 115| getBase(): [DeclRefExpr] param
# 115| getPattern(0): [NamedPattern] n5
# 116| getElement(6): [PatternBindingDecl] var ... = ...
# 116| getInit(0): [MemberRefExpr] .myInt
# 116| getBase(): [DeclRefExpr] param
# 116| getBase().getFullyConverted(): [DotSelfExpr] .self
# 116| getPattern(0): [NamedPattern] n6
# 118| getElement(7): [PatternBindingDecl] var ... = ...
# 118| getInit(0): [CallExpr] call to getMyInt()
# 118| getFunction(): [MethodLookupExpr] .getMyInt()
# 118| getBase(): [DeclRefExpr] param
# 118| getBase().getFullyConverted(): [DotSelfExpr] .self
# 118| getMethodRef(): [DeclRefExpr] getMyInt()
# 118| getPattern(0): [NamedPattern] n8
# 120| getElement(8): [PatternBindingDecl] var ... = ...
# 120| getInit(0): [MemberRefExpr] .myInt
# 120| getBase(): [DeclRefExpr] inoutParam
# 120| getBase().getFullyConverted(): [LoadExpr] (C) ...
# 120| getPattern(0): [NamedPattern] n9
# 121| getElement(9): [PatternBindingDecl] var ... = ...
# 121| getInit(0): [CallExpr] call to getMyInt()
# 121| getFunction(): [MethodLookupExpr] .getMyInt()
# 121| getBase(): [DeclRefExpr] param
# 121| getMethodRef(): [DeclRefExpr] getMyInt()
# 121| getPattern(0): [NamedPattern] n7
# 122| getElement(10): [PatternBindingDecl] var ... = ...
# 122| getInit(0): [MemberRefExpr] .myInt
# 122| getBase(): [DeclRefExpr] inoutParam
# 122| getBase().getFullyConverted(): [LoadExpr] (C) ...
# 122| getSubExpr(): [DotSelfExpr] .self
# 122| getPattern(0): [NamedPattern] n10
# 123| getElement(11): [PatternBindingDecl] var ... = ...
# 123| getInit(0): [CallExpr] call to getMyInt()
# 123| getFunction(): [MethodLookupExpr] .getMyInt()
# 123| getBase(): [DeclRefExpr] inoutParam
# 123| getBase().getFullyConverted(): [LoadExpr] (C) ...
# 123| getMethodRef(): [DeclRefExpr] getMyInt()
# 123| getPattern(0): [NamedPattern] n11
# 124| getElement(12): [PatternBindingDecl] var ... = ...
# 124| getInit(0): [CallExpr] call to getMyInt()
# 124| getFunction(): [MethodLookupExpr] .getMyInt()
# 124| getBase(): [DeclRefExpr] inoutParam
# 124| getBase().getFullyConverted(): [LoadExpr] (C) ...
# 124| getSubExpr(): [DotSelfExpr] .self
# 124| getMethodRef(): [DeclRefExpr] getMyInt()
# 124| getPattern(0): [NamedPattern] n12
# 126| getElement(13): [PatternBindingDecl] var ... = ...
# 126| getInit(0): [MemberRefExpr] .myInt
# 126| getBase(): [ForceValueExpr] ...!
# 126| getSubExpr(): [DeclRefExpr] opt
# 126| getPattern(0): [NamedPattern] n13
# 127| getElement(14): [PatternBindingDecl] var ... = ...
# 127| getInit(0): [MemberRefExpr] .myInt
# 127| getBase(): [ForceValueExpr] ...!
# 127| getSubExpr(): [DeclRefExpr] opt
# 127| getBase().getFullyConverted(): [DotSelfExpr] .self
# 127| getPattern(0): [NamedPattern] n14
# 128| getElement(15): [PatternBindingDecl] var ... = ...
# 128| getInit(0): [CallExpr] call to getMyInt()
# 128| getFunction(): [MethodLookupExpr] .getMyInt()
# 128| getBase(): [ForceValueExpr] ...!
# 128| getSubExpr(): [DeclRefExpr] opt
# 128| getMethodRef(): [DeclRefExpr] getMyInt()
# 128| getPattern(0): [NamedPattern] n15
# 129| getElement(16): [PatternBindingDecl] var ... = ...
# 129| getInit(0): [CallExpr] call to getMyInt()
# 129| getFunction(): [MethodLookupExpr] .getMyInt()
# 129| getBase(): [ForceValueExpr] ...!
# 129| getSubExpr(): [DeclRefExpr] opt
# 129| getBase().getFullyConverted(): [DotSelfExpr] .self
# 129| getMethodRef(): [DeclRefExpr] getMyInt()
# 129| getPattern(0): [NamedPattern] n16
# 131| getElement(17): [PatternBindingDecl] var ... = ...
# 131| getInit(0): [OptionalEvaluationExpr] OptionalEvaluationExpr
# 131| getSubExpr(): [MemberRefExpr] .myInt
# 131| getBase(): [BindOptionalExpr] ...?
# 131| getSubExpr(): [DeclRefExpr] opt
# 131| getSubExpr().getFullyConverted(): [InjectIntoOptionalExpr] (Int?) ...
# 131| getPattern(0): [NamedPattern] n17
# 132| getElement(18): [PatternBindingDecl] var ... = ...
# 132| getInit(0): [OptionalEvaluationExpr] OptionalEvaluationExpr
# 132| getSubExpr(): [MemberRefExpr] .myInt
# 132| getBase(): [BindOptionalExpr] ...?
# 132| getSubExpr(): [DeclRefExpr] opt
# 132| getBase().getFullyConverted(): [DotSelfExpr] .self
# 132| getSubExpr().getFullyConverted(): [InjectIntoOptionalExpr] (Int?) ...
# 132| getPattern(0): [NamedPattern] n18
# 133| getElement(19): [PatternBindingDecl] var ... = ...
# 133| getInit(0): [OptionalEvaluationExpr] OptionalEvaluationExpr
# 133| getSubExpr(): [CallExpr] call to getMyInt()
# 133| getFunction(): [MethodLookupExpr] .getMyInt()
# 133| getBase(): [BindOptionalExpr] ...?
# 133| getSubExpr(): [DeclRefExpr] opt
# 133| getMethodRef(): [DeclRefExpr] getMyInt()
# 133| getSubExpr().getFullyConverted(): [InjectIntoOptionalExpr] (Int?) ...
# 133| getPattern(0): [NamedPattern] n19
# 134| getElement(20): [PatternBindingDecl] var ... = ...
# 134| getInit(0): [OptionalEvaluationExpr] OptionalEvaluationExpr
# 134| getSubExpr(): [CallExpr] call to getMyInt()
# 134| getFunction(): [MethodLookupExpr] .getMyInt()
# 134| getBase(): [BindOptionalExpr] ...?
# 134| getSubExpr(): [DeclRefExpr] opt
# 134| getBase().getFullyConverted(): [DotSelfExpr] .self
# 134| getMethodRef(): [DeclRefExpr] getMyInt()
# 134| getSubExpr().getFullyConverted(): [InjectIntoOptionalExpr] (Int?) ...
# 134| getPattern(0): [NamedPattern] n20
# 137| [NamedFunction] patterns(x:)
# 137| InterfaceType = (Int) -> Bool
# 137| getParam(0): [ParamDecl] x
# 137| Type = Int
# 137| getBody(): [BraceStmt] { ... }
# 150| getVariable(0): [ConcreteVarDecl] obj
# 150| Type = AnyObject
# 155| getVariable(1): [ConcreteVarDecl] xOptional
# 155| Type = Int?
# 138| getElement(0): [ForEachStmt] for ... in ... { ... }
# 138| getVariable(0): [ConcreteVarDecl] $generator
# 138| Type = IndexingIterator<ClosedRange<Int>>
# 138| getPattern(): [AnyPattern] _
#-----| getIteratorVar(): [PatternBindingDecl] var ... = ...
# 138| getInit(0): [CallExpr] call to makeIterator()
# 138| getFunction(): [MethodLookupExpr] .makeIterator()
# 138| getBase(): [BinaryExpr] ... ....(_:_:) ...
# 138| getFunction(): [MethodLookupExpr] ....(_:_:)
# 138| getBase(): [TypeExpr] Int.Type
# 138| getTypeRepr(): [TypeRepr] Int
# 138| getMethodRef(): [DeclRefExpr] ...(_:_:)
# 138| getArgument(0): [Argument] : 0
# 138| getExpr(): [IntegerLiteralExpr] 0
# 138| getArgument(1): [Argument] : 10
# 138| getExpr(): [IntegerLiteralExpr] 10
#-----| getMethodRef(): [DeclRefExpr] makeIterator()
# 138| getPattern(0): [NamedPattern] $generator
# 138| getNextCall(): [CallExpr] call to next()
# 138| getFunction(): [MethodLookupExpr] .next()
# 138| getBase(): [DeclRefExpr] $generator
# 138| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] next()
# 138| getBody(): [BraceStmt] { ... }
# 140| getElement(1): [SwitchStmt] switch x { ... }
# 140| getExpr(): [DeclRefExpr] x
# 141| getCase(0): [CaseStmt] case ...
# 141| getLabel(0): [CaseLabelItem] =~ ...
# 141| getPattern(): [ExprPattern] =~ ...
# 141| getSubExpr(): [BinaryExpr] ... ~=(_:_:) ...
# 141| getFunction(): [DeclRefExpr] ~=(_:_:)
# 141| getArgument(0): [Argument] : 0
# 141| getExpr(): [IntegerLiteralExpr] 0
# 141| getArgument(1): [Argument] : $match
# 141| getExpr(): [DeclRefExpr] $match
# 141| getLabel(1): [CaseLabelItem] =~ ...
# 141| getPattern(): [ExprPattern] =~ ...
# 141| getSubExpr(): [BinaryExpr] ... ~=(_:_:) ...
# 141| getFunction(): [DeclRefExpr] ~=(_:_:)
# 141| getArgument(0): [Argument] : 1
# 141| getExpr(): [IntegerLiteralExpr] 1
# 141| getArgument(1): [Argument] : $match
# 141| getExpr(): [DeclRefExpr] $match
# 142| getBody(): [BraceStmt] { ... }
# 142| getElement(0): [ReturnStmt] return ...
# 142| getResult(): [BooleanLiteralExpr] true
# 143| getElement(1): [ReturnStmt] return ...
# 143| getResult(): [BooleanLiteralExpr] true
# 144| getCase(1): [CaseStmt] case ...
# 144| getLabel(0): [CaseLabelItem] =~ ... where ...
# 144| getPattern(): [ExprPattern] =~ ...
# 144| getSubExpr(): [BinaryExpr] ... ~=(_:_:) ...
# 144| getFunction(): [DeclRefExpr] ~=(_:_:)
# 144| getArgument(0): [Argument] : x
# 144| getExpr(): [DeclRefExpr] x
# 144| getArgument(1): [Argument] : $match
# 144| getExpr(): [DeclRefExpr] $match
# 144| getGuard(): [BinaryExpr] ... .&&(_:_:) ...
# 144| getFunction(): [MethodLookupExpr] .&&(_:_:)
# 144| getBase(): [TypeExpr] Bool.Type
# 144| getTypeRepr(): [TypeRepr] Bool
# 144| getMethodRef(): [DeclRefExpr] &&(_:_:)
# 144| getArgument(0): [Argument] : ... .>=(_:_:) ...
# 144| getExpr(): [BinaryExpr] ... .>=(_:_:) ...
# 144| getFunction(): [MethodLookupExpr] .>=(_:_:)
# 144| getBase(): [TypeExpr] Int.Type
# 144| getTypeRepr(): [TypeRepr] Int
# 144| getMethodRef(): [DeclRefExpr] >=(_:_:)
# 144| getArgument(0): [Argument] : x
# 144| getExpr(): [DeclRefExpr] x
# 144| getArgument(1): [Argument] : 2
# 144| getExpr(): [IntegerLiteralExpr] 2
# 144| getExpr().getFullyConverted(): [ParenExpr] (...)
# 144| getArgument(1): [Argument] : { ... }
# 144| getExpr(): [AutoClosureExpr] { ... }
# 144| getBody(): [BraceStmt] { ... }
# 144| getElement(0): [ReturnStmt] return ...
# 144| getResult(): [BinaryExpr] ... .<(_:_:) ...
# 144| getFunction(): [MethodLookupExpr] .<(_:_:)
# 144| getBase(): [TypeExpr] Int.Type
# 144| getTypeRepr(): [TypeRepr] Int
# 144| getMethodRef(): [DeclRefExpr] <(_:_:)
# 144| getArgument(0): [Argument] : x
# 144| getExpr(): [DeclRefExpr] x
# 144| getArgument(1): [Argument] : 5
# 144| getExpr(): [IntegerLiteralExpr] 5
# 144| getCapture(0): [CapturedDecl] x
# 145| getBody(): [BraceStmt] { ... }
# 145| getElement(0): [ReturnStmt] return ...
# 145| getResult(): [BooleanLiteralExpr] true
# 146| getCase(2): [CaseStmt] case ...
# 146| getLabel(0): [CaseLabelItem] _
# 146| getPattern(): [AnyPattern] _
# 147| getBody(): [BraceStmt] { ... }
# 147| getElement(0): [ReturnStmt] return ...
# 147| getResult(): [BooleanLiteralExpr] false
# 150| getElement(2): [PatternBindingDecl] var ... = ...
# 150| getInit(0): [CallExpr] call to C.init(n:)
# 150| getFunction(): [MethodLookupExpr] C.init(n:)
# 150| getBase(): [TypeExpr] C.Type
# 150| getTypeRepr(): [TypeRepr] C
# 150| getMethodRef(): [DeclRefExpr] C.init(n:)
# 150| getArgument(0): [Argument] n: x
# 150| getExpr(): [DeclRefExpr] x
# 150| getInit(0).getFullyConverted(): [ErasureExpr] (AnyObject) ...
# 150| getPattern(0): [TypedPattern] ... as ...
# 150| getSubPattern(): [NamedPattern] obj
# 150| getTypeRepr(): [TypeRepr] AnyObject
# 151| getElement(3): [IfStmt] if ... then { ... }
# 151| getCondition(): [StmtCondition] StmtCondition
# 151| getElement(0): [ConditionElement] obj
# 151| getBoolean(): [DeclRefExpr] obj
# 151| getBoolean().getFullyConverted(): [IsExpr] ... is ...
# 151| getSubExpr(): [LoadExpr] (AnyObject) ...
# 151| getThen(): [BraceStmt] { ... }
# 152| getElement(0): [ReturnStmt] return ...
# 152| getResult(): [BooleanLiteralExpr] true
# 155| getElement(4): [PatternBindingDecl] var ... = ...
# 155| getInit(0): [DeclRefExpr] x
# 155| getInit(0).getFullyConverted(): [InjectIntoOptionalExpr] (Int?) ...
# 155| getPattern(0): [TypedPattern] ... as ...
# 155| getSubPattern(): [NamedPattern] xOptional
# 155| getTypeRepr(): [TypeRepr] Int?
# 156| getElement(5): [IfStmt] if ... then { ... } else { ... }
# 156| getCondition(): [StmtCondition] StmtCondition
# 156| getElement(0): [ConditionElement] .some(...) = ...
# 156| getPattern(): [EnumElementPattern] .some(...)
# 156| getSubPattern(): [NamedPattern] x
# 156| getSubPattern().getFullyUnresolved(): [ParenPattern] (...)
# 156| getSubPattern(): [BindingPattern] let ...
# 156| getInitializer(): [DeclRefExpr] xOptional
# 156| getThen(): [BraceStmt] { ... }
# 157| getElement(0): [ReturnStmt] return ...
# 157| getResult(): [BinaryExpr] ... .==(_:_:) ...
# 157| getFunction(): [MethodLookupExpr] .==(_:_:)
# 157| getBase(): [TypeExpr] Int.Type
# 157| getTypeRepr(): [TypeRepr] Int
# 157| getMethodRef(): [DeclRefExpr] ==(_:_:)
# 157| getArgument(0): [Argument] : x
# 157| getExpr(): [DeclRefExpr] x
# 157| getArgument(1): [Argument] : 0
# 157| getExpr(): [IntegerLiteralExpr] 0
# 158| getElse(): [BraceStmt] { ... }
# 159| getElement(0): [ReturnStmt] return ...
# 159| getResult(): [BooleanLiteralExpr] false
# 141| [ConcreteVarDecl] $match
# 141| Type = Int
# 141| [ConcreteVarDecl] $match
# 141| Type = Int
# 144| [ConcreteVarDecl] $match
# 144| Type = Int
# 156| [ConcreteVarDecl] x
# 156| Type = Int
# 163| [NamedFunction] testDefer(x:)
# 163| InterfaceType = (inout Int) -> ()
# 163| getParam(0): [ParamDecl] x
# 163| Type = Int
# 163| getBody(): [BraceStmt] { ... }
# 165| getElement(0): [DeferStmt] defer { ... }
# 165| getBody(): [BraceStmt] { ... }
# 166| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 166| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 166| getArgument(0): [Argument] : [...]
# 166| getExpr(): [VarargExpansionExpr] [...]
# 166| getSubExpr(): [ArrayExpr] [...]
# 166| getElement(0): [StringLiteralExpr] 4
# 166| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 166| getArgument(1): [Argument] separator: default separator
# 166| getExpr(): [DefaultArgumentExpr] default separator
# 166| getArgument(2): [Argument] terminator: default terminator
# 166| getExpr(): [DefaultArgumentExpr] default terminator
# 169| getElement(1): [DeferStmt] defer { ... }
# 169| getBody(): [BraceStmt] { ... }
# 170| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 170| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 170| getArgument(0): [Argument] : [...]
# 170| getExpr(): [VarargExpansionExpr] [...]
# 170| getSubExpr(): [ArrayExpr] [...]
# 170| getElement(0): [StringLiteralExpr] 3
# 170| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 170| getArgument(1): [Argument] separator: default separator
# 170| getExpr(): [DefaultArgumentExpr] default separator
# 170| getArgument(2): [Argument] terminator: default terminator
# 170| getExpr(): [DefaultArgumentExpr] default terminator
# 173| getElement(2): [DeferStmt] defer { ... }
# 173| getBody(): [BraceStmt] { ... }
# 174| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 174| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 174| getArgument(0): [Argument] : [...]
# 174| getExpr(): [VarargExpansionExpr] [...]
# 174| getSubExpr(): [ArrayExpr] [...]
# 174| getElement(0): [StringLiteralExpr] 1
# 174| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 174| getArgument(1): [Argument] separator: default separator
# 174| getExpr(): [DefaultArgumentExpr] default separator
# 174| getArgument(2): [Argument] terminator: default terminator
# 174| getExpr(): [DefaultArgumentExpr] default terminator
# 175| getElement(1): [DeferStmt] defer { ... }
# 175| getBody(): [BraceStmt] { ... }
# 176| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 176| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 176| getArgument(0): [Argument] : [...]
# 176| getExpr(): [VarargExpansionExpr] [...]
# 176| getSubExpr(): [ArrayExpr] [...]
# 176| getElement(0): [StringLiteralExpr] 2
# 176| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 176| getArgument(1): [Argument] separator: default separator
# 176| getExpr(): [DefaultArgumentExpr] default separator
# 176| getArgument(2): [Argument] terminator: default terminator
# 176| getExpr(): [DefaultArgumentExpr] default terminator
# 164| [Comment] // Will print 1, 2, 3, 4
# 164|
# 181| [NamedFunction] m1(x:)
# 181| InterfaceType = (Int) -> ()
# 181| getParam(0): [ParamDecl] x
# 181| Type = Int
# 181| getBody(): [BraceStmt] { ... }
# 182| getElement(0): [IfStmt] if ... then { ... } else { ... }
# 182| getCondition(): [StmtCondition] StmtCondition
# 182| getElement(0): [ConditionElement] ... .>(_:_:) ...
# 182| getBoolean(): [BinaryExpr] ... .>(_:_:) ...
# 182| getFunction(): [MethodLookupExpr] .>(_:_:)
# 182| getBase(): [TypeExpr] Int.Type
# 182| getTypeRepr(): [TypeRepr] Int
# 182| getMethodRef(): [DeclRefExpr] >(_:_:)
# 182| getArgument(0): [Argument] : x
# 182| getExpr(): [DeclRefExpr] x
# 182| getArgument(1): [Argument] : 2
# 182| getExpr(): [IntegerLiteralExpr] 2
# 182| getThen(): [BraceStmt] { ... }
# 183| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 183| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 183| getArgument(0): [Argument] : [...]
# 183| getExpr(): [VarargExpansionExpr] [...]
# 183| getSubExpr(): [ArrayExpr] [...]
# 183| getElement(0): [StringLiteralExpr] x is greater than 2
# 183| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 183| getArgument(1): [Argument] separator: default separator
# 183| getExpr(): [DefaultArgumentExpr] default separator
# 183| getArgument(2): [Argument] terminator: default terminator
# 183| getExpr(): [DefaultArgumentExpr] default terminator
# 185| getElse(): [IfStmt] if ... then { ... } else { ... }
# 185| getCondition(): [StmtCondition] StmtCondition
# 185| getElement(0): [ConditionElement] ... .&&(_:_:) ...
# 185| getBoolean(): [BinaryExpr] ... .&&(_:_:) ...
# 185| getFunction(): [MethodLookupExpr] .&&(_:_:)
# 185| getBase(): [TypeExpr] Bool.Type
# 185| getTypeRepr(): [TypeRepr] Bool
# 185| getMethodRef(): [DeclRefExpr] &&(_:_:)
# 185| getArgument(0): [Argument] : ... .&&(_:_:) ...
# 185| getExpr(): [BinaryExpr] ... .&&(_:_:) ...
# 185| getFunction(): [MethodLookupExpr] .&&(_:_:)
# 185| getBase(): [TypeExpr] Bool.Type
# 185| getTypeRepr(): [TypeRepr] Bool
# 185| getMethodRef(): [DeclRefExpr] &&(_:_:)
# 185| getArgument(0): [Argument] : ... .<=(_:_:) ...
# 185| getExpr(): [BinaryExpr] ... .<=(_:_:) ...
# 185| getFunction(): [MethodLookupExpr] .<=(_:_:)
# 185| getBase(): [TypeExpr] Int.Type
# 185| getTypeRepr(): [TypeRepr] Int
# 185| getMethodRef(): [DeclRefExpr] <=(_:_:)
# 185| getArgument(0): [Argument] : x
# 185| getExpr(): [DeclRefExpr] x
# 185| getArgument(1): [Argument] : 2
# 185| getExpr(): [IntegerLiteralExpr] 2
# 185| getArgument(1): [Argument] : { ... }
# 185| getExpr(): [AutoClosureExpr] { ... }
# 185| getBody(): [BraceStmt] { ... }
# 185| getElement(0): [ReturnStmt] return ...
# 185| getResult(): [BinaryExpr] ... .>(_:_:) ...
# 185| getFunction(): [MethodLookupExpr] .>(_:_:)
# 185| getBase(): [TypeExpr] Int.Type
# 185| getTypeRepr(): [TypeRepr] Int
# 185| getMethodRef(): [DeclRefExpr] >(_:_:)
# 185| getArgument(0): [Argument] : x
# 185| getExpr(): [DeclRefExpr] x
# 185| getArgument(1): [Argument] : 0
# 185| getExpr(): [IntegerLiteralExpr] 0
# 185| getCapture(0): [CapturedDecl] x
# 185| getArgument(1): [Argument] : { ... }
# 185| getExpr(): [AutoClosureExpr] { ... }
# 185| getBody(): [BraceStmt] { ... }
# 185| getElement(0): [ReturnStmt] return ...
# 185| getResult(): [PrefixUnaryExpr] call to !(_:)
# 185| getFunction(): [MethodLookupExpr] .!(_:)
# 185| getBase(): [TypeExpr] Bool.Type
# 185| getTypeRepr(): [TypeRepr] Bool
# 185| getMethodRef(): [DeclRefExpr] !(_:)
# 185| getArgument(0): [Argument] : ... .==(_:_:) ...
# 185| getExpr(): [BinaryExpr] ... .==(_:_:) ...
# 185| getFunction(): [MethodLookupExpr] .==(_:_:)
# 185| getBase(): [TypeExpr] Int.Type
# 185| getTypeRepr(): [TypeRepr] Int
# 185| getMethodRef(): [DeclRefExpr] ==(_:_:)
# 185| getArgument(0): [Argument] : x
# 185| getExpr(): [DeclRefExpr] x
# 185| getArgument(1): [Argument] : 5
# 185| getExpr(): [IntegerLiteralExpr] 5
# 185| getExpr().getFullyConverted(): [ParenExpr] (...)
# 185| getCapture(0): [CapturedDecl] x
# 185| getThen(): [BraceStmt] { ... }
# 186| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 186| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 186| getArgument(0): [Argument] : [...]
# 186| getExpr(): [VarargExpansionExpr] [...]
# 186| getSubExpr(): [ArrayExpr] [...]
# 186| getElement(0): [StringLiteralExpr] x is 1
# 186| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 186| getArgument(1): [Argument] separator: default separator
# 186| getExpr(): [DefaultArgumentExpr] default separator
# 186| getArgument(2): [Argument] terminator: default terminator
# 186| getExpr(): [DefaultArgumentExpr] default terminator
# 188| getElse(): [BraceStmt] { ... }
# 189| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 189| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 189| getArgument(0): [Argument] : [...]
# 189| getExpr(): [VarargExpansionExpr] [...]
# 189| getSubExpr(): [ArrayExpr] [...]
# 189| getElement(0): [StringLiteralExpr] I can't guess the number
# 189| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 189| getArgument(1): [Argument] separator: default separator
# 189| getExpr(): [DefaultArgumentExpr] default separator
# 189| getArgument(2): [Argument] terminator: default terminator
# 189| getExpr(): [DefaultArgumentExpr] default terminator
# 193| [NamedFunction] m2(b:)
# 193| InterfaceType = (Bool) -> Int
# 193| getParam(0): [ParamDecl] b
# 193| Type = Bool
# 193| getBody(): [BraceStmt] { ... }
# 194| getElement(0): [IfStmt] if ... then { ... }
# 194| getCondition(): [StmtCondition] StmtCondition
# 194| getElement(0): [ConditionElement] b
# 194| getBoolean(): [DeclRefExpr] b
# 194| getThen(): [BraceStmt] { ... }
# 195| getElement(0): [ReturnStmt] return ...
# 195| getResult(): [IntegerLiteralExpr] 0
# 197| getElement(1): [ReturnStmt] return ...
# 197| getResult(): [IntegerLiteralExpr] 1
# 200| [NamedFunction] m3(x:)
# 200| InterfaceType = (inout Int) -> Int
# 200| getParam(0): [ParamDecl] x
# 200| Type = Int
# 200| getBody(): [BraceStmt] { ... }
# 201| getElement(0): [IfStmt] if ... then { ... }
# 201| getCondition(): [StmtCondition] StmtCondition
# 201| getElement(0): [ConditionElement] ... .<(_:_:) ...
# 201| getBoolean(): [BinaryExpr] ... .<(_:_:) ...
# 201| getFunction(): [MethodLookupExpr] .<(_:_:)
# 201| getBase(): [TypeExpr] Int.Type
# 201| getTypeRepr(): [TypeRepr] Int
# 201| getMethodRef(): [DeclRefExpr] <(_:_:)
# 201| getArgument(0): [Argument] : x
# 201| getExpr(): [DeclRefExpr] x
# 201| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 201| getArgument(1): [Argument] : 0
# 201| getExpr(): [IntegerLiteralExpr] 0
# 201| getThen(): [BraceStmt] { ... }
# 202| getElement(0): [AssignExpr] ... = ...
# 202| getDest(): [DeclRefExpr] x
# 202| getSource(): [PrefixUnaryExpr] call to -(_:)
# 202| getFunction(): [MethodLookupExpr] .-(_:)
# 202| getBase(): [TypeExpr] Int.Type
# 202| getTypeRepr(): [TypeRepr] Int
# 202| getMethodRef(): [DeclRefExpr] -(_:)
# 202| getArgument(0): [Argument] : x
# 202| getExpr(): [DeclRefExpr] x
# 202| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 203| getElement(1): [IfStmt] if ... then { ... }
# 203| getCondition(): [StmtCondition] StmtCondition
# 203| getElement(0): [ConditionElement] ... .>(_:_:) ...
# 203| getBoolean(): [BinaryExpr] ... .>(_:_:) ...
# 203| getFunction(): [MethodLookupExpr] .>(_:_:)
# 203| getBase(): [TypeExpr] Int.Type
# 203| getTypeRepr(): [TypeRepr] Int
# 203| getMethodRef(): [DeclRefExpr] >(_:_:)
# 203| getArgument(0): [Argument] : x
# 203| getExpr(): [DeclRefExpr] x
# 203| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 203| getArgument(1): [Argument] : 10
# 203| getExpr(): [IntegerLiteralExpr] 10
# 203| getThen(): [BraceStmt] { ... }
# 204| getElement(0): [AssignExpr] ... = ...
# 204| getDest(): [DeclRefExpr] x
# 204| getSource(): [BinaryExpr] ... .-(_:_:) ...
# 204| getFunction(): [MethodLookupExpr] .-(_:_:)
# 204| getBase(): [TypeExpr] Int.Type
# 204| getTypeRepr(): [TypeRepr] Int
# 204| getMethodRef(): [DeclRefExpr] -(_:_:)
# 204| getArgument(0): [Argument] : x
# 204| getExpr(): [DeclRefExpr] x
# 204| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 204| getArgument(1): [Argument] : 1
# 204| getExpr(): [IntegerLiteralExpr] 1
# 207| getElement(1): [ReturnStmt] return ...
# 207| getResult(): [DeclRefExpr] x
# 207| getResult().getFullyConverted(): [LoadExpr] (Int) ...
# 210| [NamedFunction] m4(b1:b2:b3:)
# 210| InterfaceType = (Bool, Bool, Bool) -> String
# 210| getParam(0): [ParamDecl] b1
# 210| Type = Bool
# 210| getParam(1): [ParamDecl] b2
# 210| Type = Bool
# 210| getParam(2): [ParamDecl] b3
# 210| Type = Bool
# 210| getBody(): [BraceStmt] { ... }
# 211| getElement(0): [ReturnStmt] return ...
# 211| getResult(): [IfExpr] ... ? ... : ...
# 211| getCondition(): [IfExpr] ... ? ... : ...
# 211| getCondition(): [DeclRefExpr] b1
# 211| getThenExpr(): [DeclRefExpr] b2
# 211| getElseExpr(): [DeclRefExpr] b3
# 211| getCondition().getFullyConverted(): [ParenExpr] (...)
# 211| getThenExpr(): [StringLiteralExpr] b2 || b3
# 211| getElseExpr(): [StringLiteralExpr] !b2 || !b3
# 214| [NamedFunction] conversionsInSplitEntry(b:)
# 214| InterfaceType = (Bool) -> String
# 214| getParam(0): [ParamDecl] b
# 214| Type = Bool
# 214| getBody(): [BraceStmt] { ... }
# 215| getElement(0): [IfStmt] if ... then { ... } else { ... }
# 215| getCondition(): [StmtCondition] StmtCondition
# 215| getElement(0): [ConditionElement] ... ? ... : ...
# 215| getBoolean(): [IfExpr] ... ? ... : ...
# 215| getCondition(): [DeclRefExpr] b
# 215| getThenExpr(): [BooleanLiteralExpr] true
# 215| getThenExpr().getFullyConverted(): [ParenExpr] (...)
# 215| getElseExpr(): [BooleanLiteralExpr] false
# 215| getElseExpr().getFullyConverted(): [CoerceExpr] (Bool) ...
# 215| getThen(): [BraceStmt] { ... }
# 216| getElement(0): [ReturnStmt] return ...
# 216| getResult(): [StringLiteralExpr] b
# 218| getElse(): [BraceStmt] { ... }
# 219| getElement(0): [ReturnStmt] return ...
# 219| getResult(): [StringLiteralExpr] !b
# 223| [NamedFunction] constant_condition()
# 223| InterfaceType = () -> ()
# 223| getBody(): [BraceStmt] { ... }
# 224| getElement(0): [IfStmt] if ... then { ... }
# 224| getCondition(): [StmtCondition] StmtCondition
# 224| getElement(0): [ConditionElement] call to !(_:)
# 224| getBoolean(): [PrefixUnaryExpr] call to !(_:)
# 224| getFunction(): [MethodLookupExpr] .!(_:)
# 224| getBase(): [TypeExpr] Bool.Type
# 224| getTypeRepr(): [TypeRepr] Bool
# 224| getMethodRef(): [DeclRefExpr] !(_:)
# 224| getArgument(0): [Argument] : true
# 224| getExpr(): [BooleanLiteralExpr] true
# 224| getThen(): [BraceStmt] { ... }
# 225| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 225| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 225| getArgument(0): [Argument] : [...]
# 225| getExpr(): [VarargExpansionExpr] [...]
# 225| getSubExpr(): [ArrayExpr] [...]
# 225| getElement(0): [StringLiteralExpr] Impossible
# 225| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 225| getArgument(1): [Argument] separator: default separator
# 225| getExpr(): [DefaultArgumentExpr] default separator
# 225| getArgument(2): [Argument] terminator: default terminator
# 225| getExpr(): [DefaultArgumentExpr] default terminator
# 229| [NamedFunction] empty_else(b:)
# 229| InterfaceType = (Bool) -> ()
# 229| getParam(0): [ParamDecl] b
# 229| Type = Bool
# 229| getBody(): [BraceStmt] { ... }
# 230| getElement(0): [IfStmt] if ... then { ... } else { ... }
# 230| getCondition(): [StmtCondition] StmtCondition
# 230| getElement(0): [ConditionElement] b
# 230| getBoolean(): [DeclRefExpr] b
# 230| getThen(): [BraceStmt] { ... }
# 231| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 231| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 231| getArgument(0): [Argument] : [...]
# 231| getExpr(): [VarargExpansionExpr] [...]
# 231| getSubExpr(): [ArrayExpr] [...]
# 231| getElement(0): [StringLiteralExpr] true
# 231| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 231| getArgument(1): [Argument] separator: default separator
# 231| getExpr(): [DefaultArgumentExpr] default separator
# 231| getArgument(2): [Argument] terminator: default terminator
# 231| getExpr(): [DefaultArgumentExpr] default terminator
# 233| getElse(): [BraceStmt] { ... }
# 234| getElement(1): [CallExpr] call to print(_:separator:terminator:)
# 234| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 234| getArgument(0): [Argument] : [...]
# 234| getExpr(): [VarargExpansionExpr] [...]
# 234| getSubExpr(): [ArrayExpr] [...]
# 234| getElement(0): [StringLiteralExpr] done
# 234| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 234| getArgument(1): [Argument] separator: default separator
# 234| getExpr(): [DefaultArgumentExpr] default separator
# 234| getArgument(2): [Argument] terminator: default terminator
# 234| getExpr(): [DefaultArgumentExpr] default terminator
# 237| [NamedFunction] disjunct(b1:b2:)
# 237| InterfaceType = (Bool, Bool) -> ()
# 237| getParam(0): [ParamDecl] b1
# 237| Type = Bool
# 237| getParam(1): [ParamDecl] b2
# 237| Type = Bool
# 237| getBody(): [BraceStmt] { ... }
# 238| getElement(0): [IfStmt] if ... then { ... }
# 238| getCondition(): [StmtCondition] StmtCondition
# 238| getElement(0): [ConditionElement] ... .||(_:_:) ...
# 238| getBoolean(): [BinaryExpr] ... .||(_:_:) ...
# 238| getFunction(): [MethodLookupExpr] .||(_:_:)
# 238| getBase(): [TypeExpr] Bool.Type
# 238| getTypeRepr(): [TypeRepr] Bool
# 238| getMethodRef(): [DeclRefExpr] ||(_:_:)
# 238| getArgument(0): [Argument] : b1
# 238| getExpr(): [DeclRefExpr] b1
# 238| getArgument(1): [Argument] : { ... }
# 238| getExpr(): [AutoClosureExpr] { ... }
# 238| getBody(): [BraceStmt] { ... }
# 238| getElement(0): [ReturnStmt] return ...
# 238| getResult(): [DeclRefExpr] b2
# 238| getCapture(0): [CapturedDecl] b2
# 238| getBoolean().getFullyConverted(): [ParenExpr] (...)
# 238| getThen(): [BraceStmt] { ... }
# 239| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 239| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 239| getArgument(0): [Argument] : [...]
# 239| getExpr(): [VarargExpansionExpr] [...]
# 239| getSubExpr(): [ArrayExpr] [...]
# 239| getElement(0): [StringLiteralExpr] b1 or b2
# 239| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 239| getArgument(1): [Argument] separator: default separator
# 239| getExpr(): [DefaultArgumentExpr] default separator
# 239| getArgument(2): [Argument] terminator: default terminator
# 239| getExpr(): [DefaultArgumentExpr] default terminator
# 243| [NamedFunction] binaryExprs(a:b:)
# 243| InterfaceType = (Int, Int) -> ()
# 243| getParam(0): [ParamDecl] a
# 243| Type = Int
# 243| getParam(1): [ParamDecl] b
# 243| Type = Int
# 243| getBody(): [BraceStmt] { ... }
# 244| getVariable(0): [ConcreteVarDecl] c
# 244| Type = Int
# 245| getVariable(1): [ConcreteVarDecl] d
# 245| Type = Int
# 246| getVariable(2): [ConcreteVarDecl] e
# 246| Type = Int
# 247| getVariable(3): [ConcreteVarDecl] f
# 247| Type = Int
# 248| getVariable(4): [ConcreteVarDecl] g
# 248| Type = Int
# 249| getVariable(5): [ConcreteVarDecl] h
# 249| Type = Int
# 250| getVariable(6): [ConcreteVarDecl] i
# 250| Type = Int
# 251| getVariable(7): [ConcreteVarDecl] j
# 251| Type = Int
# 252| getVariable(8): [ConcreteVarDecl] k
# 252| Type = Int
# 253| getVariable(9): [ConcreteVarDecl] l
# 253| Type = Int
# 254| getVariable(10): [ConcreteVarDecl] o
# 254| Type = Bool
# 255| getVariable(11): [ConcreteVarDecl] p
# 255| Type = Bool
# 256| getVariable(12): [ConcreteVarDecl] q
# 256| Type = Bool
# 257| getVariable(13): [ConcreteVarDecl] r
# 257| Type = Bool
# 258| getVariable(14): [ConcreteVarDecl] s
# 258| Type = Bool
# 259| getVariable(15): [ConcreteVarDecl] t
# 259| Type = Bool
# 244| getElement(0): [PatternBindingDecl] var ... = ...
# 244| getInit(0): [BinaryExpr] ... .+(_:_:) ...
# 244| getFunction(): [MethodLookupExpr] .+(_:_:)
# 244| getBase(): [TypeExpr] Int.Type
# 244| getTypeRepr(): [TypeRepr] Int
# 244| getMethodRef(): [DeclRefExpr] +(_:_:)
# 244| getArgument(0): [Argument] : a
# 244| getExpr(): [DeclRefExpr] a
# 244| getArgument(1): [Argument] : b
# 244| getExpr(): [DeclRefExpr] b
# 244| getPattern(0): [NamedPattern] c
# 245| getElement(1): [PatternBindingDecl] var ... = ...
# 245| getInit(0): [BinaryExpr] ... .-(_:_:) ...
# 245| getFunction(): [MethodLookupExpr] .-(_:_:)
# 245| getBase(): [TypeExpr] Int.Type
# 245| getTypeRepr(): [TypeRepr] Int
# 245| getMethodRef(): [DeclRefExpr] -(_:_:)
# 245| getArgument(0): [Argument] : a
# 245| getExpr(): [DeclRefExpr] a
# 245| getArgument(1): [Argument] : b
# 245| getExpr(): [DeclRefExpr] b
# 245| getPattern(0): [NamedPattern] d
# 246| getElement(2): [PatternBindingDecl] var ... = ...
# 246| getInit(0): [BinaryExpr] ... .*(_:_:) ...
# 246| getFunction(): [MethodLookupExpr] .*(_:_:)
# 246| getBase(): [TypeExpr] Int.Type
# 246| getTypeRepr(): [TypeRepr] Int
# 246| getMethodRef(): [DeclRefExpr] *(_:_:)
# 246| getArgument(0): [Argument] : a
# 246| getExpr(): [DeclRefExpr] a
# 246| getArgument(1): [Argument] : b
# 246| getExpr(): [DeclRefExpr] b
# 246| getPattern(0): [NamedPattern] e
# 247| getElement(3): [PatternBindingDecl] var ... = ...
# 247| getInit(0): [BinaryExpr] ... ./(_:_:) ...
# 247| getFunction(): [MethodLookupExpr] ./(_:_:)
# 247| getBase(): [TypeExpr] Int.Type
# 247| getTypeRepr(): [TypeRepr] Int
# 247| getMethodRef(): [DeclRefExpr] /(_:_:)
# 247| getArgument(0): [Argument] : a
# 247| getExpr(): [DeclRefExpr] a
# 247| getArgument(1): [Argument] : b
# 247| getExpr(): [DeclRefExpr] b
# 247| getPattern(0): [NamedPattern] f
# 248| getElement(4): [PatternBindingDecl] var ... = ...
# 248| getInit(0): [BinaryExpr] ... .%(_:_:) ...
# 248| getFunction(): [MethodLookupExpr] .%(_:_:)
# 248| getBase(): [TypeExpr] Int.Type
# 248| getTypeRepr(): [TypeRepr] Int
# 248| getMethodRef(): [DeclRefExpr] %(_:_:)
# 248| getArgument(0): [Argument] : a
# 248| getExpr(): [DeclRefExpr] a
# 248| getArgument(1): [Argument] : b
# 248| getExpr(): [DeclRefExpr] b
# 248| getPattern(0): [NamedPattern] g
# 249| getElement(5): [PatternBindingDecl] var ... = ...
# 249| getInit(0): [BinaryExpr] ... .&(_:_:) ...
# 249| getFunction(): [MethodLookupExpr] .&(_:_:)
# 249| getBase(): [TypeExpr] Int.Type
# 249| getTypeRepr(): [TypeRepr] Int
# 249| getMethodRef(): [DeclRefExpr] &(_:_:)
# 249| getArgument(0): [Argument] : a
# 249| getExpr(): [DeclRefExpr] a
# 249| getArgument(1): [Argument] : b
# 249| getExpr(): [DeclRefExpr] b
# 249| getPattern(0): [NamedPattern] h
# 250| getElement(6): [PatternBindingDecl] var ... = ...
# 250| getInit(0): [BinaryExpr] ... .|(_:_:) ...
# 250| getFunction(): [MethodLookupExpr] .|(_:_:)
# 250| getBase(): [TypeExpr] Int.Type
# 250| getTypeRepr(): [TypeRepr] Int
# 250| getMethodRef(): [DeclRefExpr] |(_:_:)
# 250| getArgument(0): [Argument] : a
# 250| getExpr(): [DeclRefExpr] a
# 250| getArgument(1): [Argument] : b
# 250| getExpr(): [DeclRefExpr] b
# 250| getPattern(0): [NamedPattern] i
# 251| getElement(7): [PatternBindingDecl] var ... = ...
# 251| getInit(0): [BinaryExpr] ... .^(_:_:) ...
# 251| getFunction(): [MethodLookupExpr] .^(_:_:)
# 251| getBase(): [TypeExpr] Int.Type
# 251| getTypeRepr(): [TypeRepr] Int
# 251| getMethodRef(): [DeclRefExpr] ^(_:_:)
# 251| getArgument(0): [Argument] : a
# 251| getExpr(): [DeclRefExpr] a
# 251| getArgument(1): [Argument] : b
# 251| getExpr(): [DeclRefExpr] b
# 251| getPattern(0): [NamedPattern] j
# 252| getElement(8): [PatternBindingDecl] var ... = ...
# 252| getInit(0): [BinaryExpr] ... .<<(_:_:) ...
# 252| getFunction(): [MethodLookupExpr] .<<(_:_:)
# 252| getBase(): [TypeExpr] Int.Type
# 252| getTypeRepr(): [TypeRepr] Int
# 252| getMethodRef(): [DeclRefExpr] <<(_:_:)
# 252| getArgument(0): [Argument] : a
# 252| getExpr(): [DeclRefExpr] a
# 252| getArgument(1): [Argument] : b
# 252| getExpr(): [DeclRefExpr] b
# 252| getPattern(0): [NamedPattern] k
# 253| getElement(9): [PatternBindingDecl] var ... = ...
# 253| getInit(0): [BinaryExpr] ... .>>(_:_:) ...
# 253| getFunction(): [MethodLookupExpr] .>>(_:_:)
# 253| getBase(): [TypeExpr] Int.Type
# 253| getTypeRepr(): [TypeRepr] Int
# 253| getMethodRef(): [DeclRefExpr] >>(_:_:)
# 253| getArgument(0): [Argument] : a
# 253| getExpr(): [DeclRefExpr] a
# 253| getArgument(1): [Argument] : b
# 253| getExpr(): [DeclRefExpr] b
# 253| getPattern(0): [NamedPattern] l
# 254| getElement(10): [PatternBindingDecl] var ... = ...
# 254| getInit(0): [BinaryExpr] ... .==(_:_:) ...
# 254| getFunction(): [MethodLookupExpr] .==(_:_:)
# 254| getBase(): [TypeExpr] Int.Type
# 254| getTypeRepr(): [TypeRepr] Int
# 254| getMethodRef(): [DeclRefExpr] ==(_:_:)
# 254| getArgument(0): [Argument] : a
# 254| getExpr(): [DeclRefExpr] a
# 254| getArgument(1): [Argument] : b
# 254| getExpr(): [DeclRefExpr] b
# 254| getPattern(0): [NamedPattern] o
# 255| getElement(11): [PatternBindingDecl] var ... = ...
# 255| getInit(0): [BinaryExpr] ... .!=(_:_:) ...
# 255| getFunction(): [MethodLookupExpr] .!=(_:_:)
# 255| getBase(): [TypeExpr] Int.Type
# 255| getTypeRepr(): [TypeRepr] Int
# 255| getMethodRef(): [DeclRefExpr] !=(_:_:)
# 255| getArgument(0): [Argument] : a
# 255| getExpr(): [DeclRefExpr] a
# 255| getArgument(1): [Argument] : b
# 255| getExpr(): [DeclRefExpr] b
# 255| getPattern(0): [NamedPattern] p
# 256| getElement(12): [PatternBindingDecl] var ... = ...
# 256| getInit(0): [BinaryExpr] ... .<(_:_:) ...
# 256| getFunction(): [MethodLookupExpr] .<(_:_:)
# 256| getBase(): [TypeExpr] Int.Type
# 256| getTypeRepr(): [TypeRepr] Int
# 256| getMethodRef(): [DeclRefExpr] <(_:_:)
# 256| getArgument(0): [Argument] : a
# 256| getExpr(): [DeclRefExpr] a
# 256| getArgument(1): [Argument] : b
# 256| getExpr(): [DeclRefExpr] b
# 256| getPattern(0): [NamedPattern] q
# 257| getElement(13): [PatternBindingDecl] var ... = ...
# 257| getInit(0): [BinaryExpr] ... .<=(_:_:) ...
# 257| getFunction(): [MethodLookupExpr] .<=(_:_:)
# 257| getBase(): [TypeExpr] Int.Type
# 257| getTypeRepr(): [TypeRepr] Int
# 257| getMethodRef(): [DeclRefExpr] <=(_:_:)
# 257| getArgument(0): [Argument] : a
# 257| getExpr(): [DeclRefExpr] a
# 257| getArgument(1): [Argument] : b
# 257| getExpr(): [DeclRefExpr] b
# 257| getPattern(0): [NamedPattern] r
# 258| getElement(14): [PatternBindingDecl] var ... = ...
# 258| getInit(0): [BinaryExpr] ... .>(_:_:) ...
# 258| getFunction(): [MethodLookupExpr] .>(_:_:)
# 258| getBase(): [TypeExpr] Int.Type
# 258| getTypeRepr(): [TypeRepr] Int
# 258| getMethodRef(): [DeclRefExpr] >(_:_:)
# 258| getArgument(0): [Argument] : a
# 258| getExpr(): [DeclRefExpr] a
# 258| getArgument(1): [Argument] : b
# 258| getExpr(): [DeclRefExpr] b
# 258| getPattern(0): [NamedPattern] s
# 259| getElement(15): [PatternBindingDecl] var ... = ...
# 259| getInit(0): [BinaryExpr] ... .>=(_:_:) ...
# 259| getFunction(): [MethodLookupExpr] .>=(_:_:)
# 259| getBase(): [TypeExpr] Int.Type
# 259| getTypeRepr(): [TypeRepr] Int
# 259| getMethodRef(): [DeclRefExpr] >=(_:_:)
# 259| getArgument(0): [Argument] : a
# 259| getExpr(): [DeclRefExpr] a
# 259| getArgument(1): [Argument] : b
# 259| getExpr(): [DeclRefExpr] b
# 259| getPattern(0): [NamedPattern] t
# 262| [NamedFunction] interpolatedString(x:y:)
# 262| InterfaceType = (Int, Int) -> String
# 262| getParam(0): [ParamDecl] x
# 262| Type = Int
# 262| getParam(1): [ParamDecl] y
# 262| Type = Int
# 262| getBody(): [BraceStmt] { ... }
# 263| getElement(0): [ReturnStmt] return ...
# 263| getResult(): [InterpolatedStringLiteralExpr] "..."
# 263| getAppendingExpr(): [TapExpr] TapExpr
# 263| getSubExpr(): [OpaqueValueExpr] OpaqueValueExpr
# 263| getBody(): [BraceStmt] { ... }
#-----| getVariable(0): [ConcreteVarDecl] $interpolation
#-----| Type = DefaultStringInterpolation
# 263| getElement(0): [CallExpr] call to appendLiteral(_:)
# 263| getFunction(): [MethodLookupExpr] .appendLiteral(_:)
# 263| getBase(): [DeclRefExpr] $interpolation
# 263| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:)
# 263| getArgument(0): [Argument] :
# 263| getExpr(): [StringLiteralExpr]
# 263| getElement(1): [CallExpr] call to appendInterpolation(_:)
# 263| getFunction(): [MethodLookupExpr] .appendInterpolation(_:)
# 263| getBase(): [DeclRefExpr] $interpolation
# 263| getBase().getFullyConverted(): [InOutExpr] &...
# 263| getMethodRef(): [DeclRefExpr] appendInterpolation(_:)
# 263| getArgument(0): [Argument] : x
# 263| getExpr(): [DeclRefExpr] x
# 263| getElement(2): [CallExpr] call to appendLiteral(_:)
# 263| getFunction(): [MethodLookupExpr] .appendLiteral(_:)
# 263| getBase(): [DeclRefExpr] $interpolation
# 263| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:)
# 263| getArgument(0): [Argument] : +
# 263| getExpr(): [StringLiteralExpr] +
# 263| getElement(3): [CallExpr] call to appendInterpolation(_:)
# 263| getFunction(): [MethodLookupExpr] .appendInterpolation(_:)
# 263| getBase(): [DeclRefExpr] $interpolation
# 263| getBase().getFullyConverted(): [InOutExpr] &...
# 263| getMethodRef(): [DeclRefExpr] appendInterpolation(_:)
# 263| getArgument(0): [Argument] : y
# 263| getExpr(): [DeclRefExpr] y
# 263| getElement(4): [CallExpr] call to appendLiteral(_:)
# 263| getFunction(): [MethodLookupExpr] .appendLiteral(_:)
# 263| getBase(): [DeclRefExpr] $interpolation
# 263| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:)
# 263| getArgument(0): [Argument] : is equal to
# 263| getExpr(): [StringLiteralExpr] is equal to
# 263| getElement(5): [CallExpr] call to appendInterpolation(_:)
# 263| getFunction(): [MethodLookupExpr] .appendInterpolation(_:)
# 263| getBase(): [DeclRefExpr] $interpolation
# 263| getBase().getFullyConverted(): [InOutExpr] &...
# 263| getMethodRef(): [DeclRefExpr] appendInterpolation(_:)
# 263| getArgument(0): [Argument] : ... .+(_:_:) ...
# 263| getExpr(): [BinaryExpr] ... .+(_:_:) ...
# 263| getFunction(): [MethodLookupExpr] .+(_:_:)
# 263| getBase(): [TypeExpr] Int.Type
# 263| getTypeRepr(): [TypeRepr] Int
# 263| getMethodRef(): [DeclRefExpr] +(_:_:)
# 263| getArgument(0): [Argument] : x
# 263| getExpr(): [DeclRefExpr] x
# 263| getArgument(1): [Argument] : y
# 263| getExpr(): [DeclRefExpr] y
# 263| getElement(6): [CallExpr] call to appendLiteral(_:)
# 263| getFunction(): [MethodLookupExpr] .appendLiteral(_:)
# 263| getBase(): [DeclRefExpr] $interpolation
# 263| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:)
# 263| getArgument(0): [Argument] : and here is a zero:
# 263| getExpr(): [StringLiteralExpr] and here is a zero:
# 263| getElement(7): [CallExpr] call to appendInterpolation(_:)
# 263| getFunction(): [MethodLookupExpr] .appendInterpolation(_:)
# 263| getBase(): [DeclRefExpr] $interpolation
# 263| getBase().getFullyConverted(): [InOutExpr] &...
# 263| getMethodRef(): [DeclRefExpr] appendInterpolation(_:)
# 263| getArgument(0): [Argument] : call to returnZero()
# 263| getExpr(): [CallExpr] call to returnZero()
# 263| getFunction(): [DeclRefExpr] returnZero()
# 263| getElement(8): [CallExpr] call to appendLiteral(_:)
# 263| getFunction(): [MethodLookupExpr] .appendLiteral(_:)
# 263| getBase(): [DeclRefExpr] $interpolation
# 263| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:)
# 263| getArgument(0): [Argument] :
# 263| getExpr(): [StringLiteralExpr]
# 266| [NamedFunction] testSubscriptExpr()
# 266| InterfaceType = () -> (Int, Int, Int, Int, Int)
# 266| getBody(): [BraceStmt] { ... }
# 267| getVariable(0): [ConcreteVarDecl] a
# 267| Type = [Int]
# 280| getVariable(1): [ConcreteVarDecl] tupleWithA
# 280| Type = (Int, Int, Int, Int, Int)
# 282| getVariable(2): [ConcreteVarDecl] b
# 282| Type = [Int]
# 295| getVariable(3): [ConcreteVarDecl] a1
# 295| Type = Int
# 295| getVariable(4): [ConcreteVarDecl] a2
# 295| Type = Int
# 295| getVariable(5): [ConcreteVarDecl] a3
# 295| Type = Int
# 295| getVariable(6): [ConcreteVarDecl] a4
# 295| Type = Int
# 295| getVariable(7): [ConcreteVarDecl] a5
# 295| Type = Int
# 267| getElement(0): [PatternBindingDecl] var ... = ...
# 267| getInit(0): [ArrayExpr] [...]
# 267| getElement(0): [IntegerLiteralExpr] 0
# 267| getElement(1): [IntegerLiteralExpr] 1
# 267| getElement(2): [IntegerLiteralExpr] 2
# 267| getElement(3): [IntegerLiteralExpr] 3
# 267| getElement(4): [IntegerLiteralExpr] 4
# 267| getElement(5): [IntegerLiteralExpr] 5
# 267| getElement(6): [IntegerLiteralExpr] 6
# 267| getElement(7): [IntegerLiteralExpr] 7
# 267| getElement(8): [IntegerLiteralExpr] 8
# 267| getElement(9): [IntegerLiteralExpr] 9
# 267| getElement(10): [IntegerLiteralExpr] 10
# 267| getPattern(0): [NamedPattern] a
# 268| getElement(1): [AssignExpr] ... = ...
# 268| getDest(): [SubscriptExpr] ...[...]
# 268| getBase(): [DeclRefExpr] a
# 268| getBase().getFullyConverted(): [InOutExpr] &...
# 268| getArgument(0): [Argument] : 0
# 268| getExpr(): [IntegerLiteralExpr] 0
# 268| getSource(): [IntegerLiteralExpr] 0
# 269| getElement(2): [BinaryExpr] ... .+=(_:_:) ...
# 269| getFunction(): [MethodLookupExpr] .+=(_:_:)
# 269| getBase(): [TypeExpr] Int.Type
# 269| getTypeRepr(): [TypeRepr] Int
# 269| getMethodRef(): [DeclRefExpr] +=(_:_:)
# 269| getArgument(0): [Argument] : ...[...]
# 269| getExpr(): [SubscriptExpr] ...[...]
# 269| getBase(): [DeclRefExpr] a
# 269| getBase().getFullyConverted(): [InOutExpr] &...
# 269| getArgument(0): [Argument] : 1
# 269| getExpr(): [IntegerLiteralExpr] 1
# 269| getExpr().getFullyConverted(): [InOutExpr] &...
# 269| getArgument(1): [Argument] : 1
# 269| getExpr(): [IntegerLiteralExpr] 1
# 270| getElement(3): [BinaryExpr] ... .-=(_:_:) ...
# 270| getFunction(): [MethodLookupExpr] .-=(_:_:)
# 270| getBase(): [TypeExpr] Int.Type
# 270| getTypeRepr(): [TypeRepr] Int
# 270| getMethodRef(): [DeclRefExpr] -=(_:_:)
# 270| getArgument(0): [Argument] : ...[...]
# 270| getExpr(): [SubscriptExpr] ...[...]
# 270| getBase(): [DeclRefExpr] a
# 270| getBase().getFullyConverted(): [InOutExpr] &...
# 270| getArgument(0): [Argument] : 2
# 270| getExpr(): [IntegerLiteralExpr] 2
# 270| getExpr().getFullyConverted(): [InOutExpr] &...
# 270| getArgument(1): [Argument] : 1
# 270| getExpr(): [IntegerLiteralExpr] 1
# 271| getElement(4): [BinaryExpr] ... .*=(_:_:) ...
# 271| getFunction(): [MethodLookupExpr] .*=(_:_:)
# 271| getBase(): [TypeExpr] Int.Type
# 271| getTypeRepr(): [TypeRepr] Int
# 271| getMethodRef(): [DeclRefExpr] *=(_:_:)
# 271| getArgument(0): [Argument] : ...[...]
# 271| getExpr(): [SubscriptExpr] ...[...]
# 271| getBase(): [DeclRefExpr] a
# 271| getBase().getFullyConverted(): [InOutExpr] &...
# 271| getArgument(0): [Argument] : 3
# 271| getExpr(): [IntegerLiteralExpr] 3
# 271| getExpr().getFullyConverted(): [InOutExpr] &...
# 271| getArgument(1): [Argument] : 1
# 271| getExpr(): [IntegerLiteralExpr] 1
# 272| getElement(5): [BinaryExpr] ... ./=(_:_:) ...
# 272| getFunction(): [MethodLookupExpr] ./=(_:_:)
# 272| getBase(): [TypeExpr] Int.Type
# 272| getTypeRepr(): [TypeRepr] Int
# 272| getMethodRef(): [DeclRefExpr] /=(_:_:)
# 272| getArgument(0): [Argument] : ...[...]
# 272| getExpr(): [SubscriptExpr] ...[...]
# 272| getBase(): [DeclRefExpr] a
# 272| getBase().getFullyConverted(): [InOutExpr] &...
# 272| getArgument(0): [Argument] : 4
# 272| getExpr(): [IntegerLiteralExpr] 4
# 272| getExpr().getFullyConverted(): [InOutExpr] &...
# 272| getArgument(1): [Argument] : 1
# 272| getExpr(): [IntegerLiteralExpr] 1
# 273| getElement(6): [BinaryExpr] ... .%=(_:_:) ...
# 273| getFunction(): [MethodLookupExpr] .%=(_:_:)
# 273| getBase(): [TypeExpr] Int.Type
# 273| getTypeRepr(): [TypeRepr] Int
# 273| getMethodRef(): [DeclRefExpr] %=(_:_:)
# 273| getArgument(0): [Argument] : ...[...]
# 273| getExpr(): [SubscriptExpr] ...[...]
# 273| getBase(): [DeclRefExpr] a
# 273| getBase().getFullyConverted(): [InOutExpr] &...
# 273| getArgument(0): [Argument] : 5
# 273| getExpr(): [IntegerLiteralExpr] 5
# 273| getExpr().getFullyConverted(): [InOutExpr] &...
# 273| getArgument(1): [Argument] : 1
# 273| getExpr(): [IntegerLiteralExpr] 1
# 274| getElement(7): [BinaryExpr] ... .&=(_:_:) ...
# 274| getFunction(): [MethodLookupExpr] .&=(_:_:)
# 274| getBase(): [TypeExpr] Int.Type
# 274| getTypeRepr(): [TypeRepr] Int
# 274| getMethodRef(): [DeclRefExpr] &=(_:_:)
# 274| getArgument(0): [Argument] : ...[...]
# 274| getExpr(): [SubscriptExpr] ...[...]
# 274| getBase(): [DeclRefExpr] a
# 274| getBase().getFullyConverted(): [InOutExpr] &...
# 274| getArgument(0): [Argument] : 6
# 274| getExpr(): [IntegerLiteralExpr] 6
# 274| getExpr().getFullyConverted(): [InOutExpr] &...
# 274| getArgument(1): [Argument] : 1
# 274| getExpr(): [IntegerLiteralExpr] 1
# 275| getElement(8): [BinaryExpr] ... .|=(_:_:) ...
# 275| getFunction(): [MethodLookupExpr] .|=(_:_:)
# 275| getBase(): [TypeExpr] Int.Type
# 275| getTypeRepr(): [TypeRepr] Int
# 275| getMethodRef(): [DeclRefExpr] |=(_:_:)
# 275| getArgument(0): [Argument] : ...[...]
# 275| getExpr(): [SubscriptExpr] ...[...]
# 275| getBase(): [DeclRefExpr] a
# 275| getBase().getFullyConverted(): [InOutExpr] &...
# 275| getArgument(0): [Argument] : 7
# 275| getExpr(): [IntegerLiteralExpr] 7
# 275| getExpr().getFullyConverted(): [InOutExpr] &...
# 275| getArgument(1): [Argument] : 1
# 275| getExpr(): [IntegerLiteralExpr] 1
# 276| getElement(9): [BinaryExpr] ... .^=(_:_:) ...
# 276| getFunction(): [MethodLookupExpr] .^=(_:_:)
# 276| getBase(): [TypeExpr] Int.Type
# 276| getTypeRepr(): [TypeRepr] Int
# 276| getMethodRef(): [DeclRefExpr] ^=(_:_:)
# 276| getArgument(0): [Argument] : ...[...]
# 276| getExpr(): [SubscriptExpr] ...[...]
# 276| getBase(): [DeclRefExpr] a
# 276| getBase().getFullyConverted(): [InOutExpr] &...
# 276| getArgument(0): [Argument] : 8
# 276| getExpr(): [IntegerLiteralExpr] 8
# 276| getExpr().getFullyConverted(): [InOutExpr] &...
# 276| getArgument(1): [Argument] : 1
# 276| getExpr(): [IntegerLiteralExpr] 1
# 277| getElement(10): [BinaryExpr] ... .<<=(_:_:) ...
# 277| getFunction(): [MethodLookupExpr] .<<=(_:_:)
# 277| getBase(): [TypeExpr] Int.Type
# 277| getTypeRepr(): [TypeRepr] Int
# 277| getMethodRef(): [DeclRefExpr] <<=(_:_:)
# 277| getArgument(0): [Argument] : ...[...]
# 277| getExpr(): [SubscriptExpr] ...[...]
# 277| getBase(): [DeclRefExpr] a
# 277| getBase().getFullyConverted(): [InOutExpr] &...
# 277| getArgument(0): [Argument] : 9
# 277| getExpr(): [IntegerLiteralExpr] 9
# 277| getExpr().getFullyConverted(): [InOutExpr] &...
# 277| getArgument(1): [Argument] : 1
# 277| getExpr(): [IntegerLiteralExpr] 1
# 278| getElement(11): [BinaryExpr] ... .>>=(_:_:) ...
# 278| getFunction(): [MethodLookupExpr] .>>=(_:_:)
# 278| getBase(): [TypeExpr] Int.Type
# 278| getTypeRepr(): [TypeRepr] Int
# 278| getMethodRef(): [DeclRefExpr] >>=(_:_:)
# 278| getArgument(0): [Argument] : ...[...]
# 278| getExpr(): [SubscriptExpr] ...[...]
# 278| getBase(): [DeclRefExpr] a
# 278| getBase().getFullyConverted(): [InOutExpr] &...
# 278| getArgument(0): [Argument] : 10
# 278| getExpr(): [IntegerLiteralExpr] 10
# 278| getExpr().getFullyConverted(): [InOutExpr] &...
# 278| getArgument(1): [Argument] : 1
# 278| getExpr(): [IntegerLiteralExpr] 1
# 280| getElement(12): [PatternBindingDecl] var ... = ...
# 280| getInit(0): [TupleExpr] (...)
# 280| getElement(0): [SubscriptExpr] ...[...]
# 280| getBase(): [DeclRefExpr] a
# 280| getBase().getFullyConverted(): [InOutExpr] &...
# 280| getArgument(0): [Argument] : 0
# 280| getExpr(): [IntegerLiteralExpr] 0
# 280| getElement(0).getFullyConverted(): [LoadExpr] (Int) ...
# 280| getElement(1): [SubscriptExpr] ...[...]
# 280| getBase(): [DeclRefExpr] a
# 280| getBase().getFullyConverted(): [InOutExpr] &...
# 280| getArgument(0): [Argument] : 1
# 280| getExpr(): [IntegerLiteralExpr] 1
# 280| getElement(1).getFullyConverted(): [LoadExpr] (Int) ...
# 280| getElement(2): [SubscriptExpr] ...[...]
# 280| getBase(): [DeclRefExpr] a
# 280| getBase().getFullyConverted(): [InOutExpr] &...
# 280| getArgument(0): [Argument] : 2
# 280| getExpr(): [IntegerLiteralExpr] 2
# 280| getElement(2).getFullyConverted(): [LoadExpr] (Int) ...
# 280| getElement(3): [SubscriptExpr] ...[...]
# 280| getBase(): [DeclRefExpr] a
# 280| getBase().getFullyConverted(): [InOutExpr] &...
# 280| getArgument(0): [Argument] : 3
# 280| getExpr(): [IntegerLiteralExpr] 3
# 280| getElement(3).getFullyConverted(): [LoadExpr] (Int) ...
# 280| getElement(4): [SubscriptExpr] ...[...]
# 280| getBase(): [DeclRefExpr] a
# 280| getBase().getFullyConverted(): [InOutExpr] &...
# 280| getArgument(0): [Argument] : 4
# 280| getExpr(): [IntegerLiteralExpr] 4
# 280| getElement(4).getFullyConverted(): [LoadExpr] (Int) ...
# 280| getPattern(0): [NamedPattern] tupleWithA
# 282| getElement(13): [PatternBindingDecl] var ... = ...
# 282| getInit(0): [ArrayExpr] [...]
# 282| getElement(0): [IntegerLiteralExpr] 0
# 282| getElement(1): [IntegerLiteralExpr] 1
# 282| getElement(2): [IntegerLiteralExpr] 2
# 282| getElement(3): [IntegerLiteralExpr] 3
# 282| getElement(4): [IntegerLiteralExpr] 4
# 282| getElement(5): [IntegerLiteralExpr] 5
# 282| getElement(6): [IntegerLiteralExpr] 6
# 282| getElement(7): [IntegerLiteralExpr] 7
# 282| getElement(8): [IntegerLiteralExpr] 8
# 282| getElement(9): [IntegerLiteralExpr] 9
# 282| getElement(10): [IntegerLiteralExpr] 10
# 282| getElement(11): [IntegerLiteralExpr] 11
# 282| getPattern(0): [NamedPattern] b
# 283| getElement(14): [AssignExpr] ... = ...
# 283| getDest(): [SubscriptExpr] ...[...]
# 283| getBase(): [DeclRefExpr] b
# 283| getBase().getFullyConverted(): [InOutExpr] &...
# 283| getArgument(0): [Argument] : 0
# 283| getExpr(): [IntegerLiteralExpr] 0
# 283| getSource(): [SubscriptExpr] ...[...]
# 283| getBase(): [DeclRefExpr] a
# 283| getBase().getFullyConverted(): [InOutExpr] &...
# 283| getArgument(0): [Argument] : 10
# 283| getExpr(): [IntegerLiteralExpr] 10
# 283| getSource().getFullyConverted(): [LoadExpr] (Int) ...
# 284| getElement(15): [AssignExpr] ... = ...
# 284| getDest(): [SubscriptExpr] ...[...]
# 284| getBase(): [DeclRefExpr] b
# 284| getBase().getFullyConverted(): [InOutExpr] &...
# 284| getArgument(0): [Argument] : 1
# 284| getExpr(): [IntegerLiteralExpr] 1
# 284| getSource(): [BinaryExpr] ... .+(_:_:) ...
# 284| getFunction(): [MethodLookupExpr] .+(_:_:)
# 284| getBase(): [TypeExpr] Int.Type
# 284| getTypeRepr(): [TypeRepr] Int
# 284| getMethodRef(): [DeclRefExpr] +(_:_:)
# 284| getArgument(0): [Argument] : ...[...]
# 284| getExpr(): [SubscriptExpr] ...[...]
# 284| getBase(): [DeclRefExpr] b
# 284| getBase().getFullyConverted(): [InOutExpr] &...
# 284| getArgument(0): [Argument] : 0
# 284| getExpr(): [IntegerLiteralExpr] 0
# 284| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 284| getArgument(1): [Argument] : 1
# 284| getExpr(): [IntegerLiteralExpr] 1
# 285| getElement(16): [AssignExpr] ... = ...
# 285| getDest(): [SubscriptExpr] ...[...]
# 285| getBase(): [DeclRefExpr] b
# 285| getBase().getFullyConverted(): [InOutExpr] &...
# 285| getArgument(0): [Argument] : 2
# 285| getExpr(): [IntegerLiteralExpr] 2
# 285| getSource(): [BinaryExpr] ... .-(_:_:) ...
# 285| getFunction(): [MethodLookupExpr] .-(_:_:)
# 285| getBase(): [TypeExpr] Int.Type
# 285| getTypeRepr(): [TypeRepr] Int
# 285| getMethodRef(): [DeclRefExpr] -(_:_:)
# 285| getArgument(0): [Argument] : ...[...]
# 285| getExpr(): [SubscriptExpr] ...[...]
# 285| getBase(): [DeclRefExpr] b
# 285| getBase().getFullyConverted(): [InOutExpr] &...
# 285| getArgument(0): [Argument] : 1
# 285| getExpr(): [IntegerLiteralExpr] 1
# 285| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 285| getArgument(1): [Argument] : 1
# 285| getExpr(): [IntegerLiteralExpr] 1
# 286| getElement(17): [AssignExpr] ... = ...
# 286| getDest(): [SubscriptExpr] ...[...]
# 286| getBase(): [DeclRefExpr] b
# 286| getBase().getFullyConverted(): [InOutExpr] &...
# 286| getArgument(0): [Argument] : 3
# 286| getExpr(): [IntegerLiteralExpr] 3
# 286| getSource(): [BinaryExpr] ... .*(_:_:) ...
# 286| getFunction(): [MethodLookupExpr] .*(_:_:)
# 286| getBase(): [TypeExpr] Int.Type
# 286| getTypeRepr(): [TypeRepr] Int
# 286| getMethodRef(): [DeclRefExpr] *(_:_:)
# 286| getArgument(0): [Argument] : ...[...]
# 286| getExpr(): [SubscriptExpr] ...[...]
# 286| getBase(): [DeclRefExpr] b
# 286| getBase().getFullyConverted(): [InOutExpr] &...
# 286| getArgument(0): [Argument] : 2
# 286| getExpr(): [IntegerLiteralExpr] 2
# 286| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 286| getArgument(1): [Argument] : 1
# 286| getExpr(): [IntegerLiteralExpr] 1
# 287| getElement(18): [AssignExpr] ... = ...
# 287| getDest(): [SubscriptExpr] ...[...]
# 287| getBase(): [DeclRefExpr] b
# 287| getBase().getFullyConverted(): [InOutExpr] &...
# 287| getArgument(0): [Argument] : 4
# 287| getExpr(): [IntegerLiteralExpr] 4
# 287| getSource(): [BinaryExpr] ... ./(_:_:) ...
# 287| getFunction(): [MethodLookupExpr] ./(_:_:)
# 287| getBase(): [TypeExpr] Int.Type
# 287| getTypeRepr(): [TypeRepr] Int
# 287| getMethodRef(): [DeclRefExpr] /(_:_:)
# 287| getArgument(0): [Argument] : ...[...]
# 287| getExpr(): [SubscriptExpr] ...[...]
# 287| getBase(): [DeclRefExpr] b
# 287| getBase().getFullyConverted(): [InOutExpr] &...
# 287| getArgument(0): [Argument] : 3
# 287| getExpr(): [IntegerLiteralExpr] 3
# 287| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 287| getArgument(1): [Argument] : 1
# 287| getExpr(): [IntegerLiteralExpr] 1
# 288| getElement(19): [AssignExpr] ... = ...
# 288| getDest(): [SubscriptExpr] ...[...]
# 288| getBase(): [DeclRefExpr] b
# 288| getBase().getFullyConverted(): [InOutExpr] &...
# 288| getArgument(0): [Argument] : 5
# 288| getExpr(): [IntegerLiteralExpr] 5
# 288| getSource(): [BinaryExpr] ... .%(_:_:) ...
# 288| getFunction(): [MethodLookupExpr] .%(_:_:)
# 288| getBase(): [TypeExpr] Int.Type
# 288| getTypeRepr(): [TypeRepr] Int
# 288| getMethodRef(): [DeclRefExpr] %(_:_:)
# 288| getArgument(0): [Argument] : ...[...]
# 288| getExpr(): [SubscriptExpr] ...[...]
# 288| getBase(): [DeclRefExpr] b
# 288| getBase().getFullyConverted(): [InOutExpr] &...
# 288| getArgument(0): [Argument] : 4
# 288| getExpr(): [IntegerLiteralExpr] 4
# 288| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 288| getArgument(1): [Argument] : 1
# 288| getExpr(): [IntegerLiteralExpr] 1
# 289| getElement(20): [AssignExpr] ... = ...
# 289| getDest(): [SubscriptExpr] ...[...]
# 289| getBase(): [DeclRefExpr] b
# 289| getBase().getFullyConverted(): [InOutExpr] &...
# 289| getArgument(0): [Argument] : 6
# 289| getExpr(): [IntegerLiteralExpr] 6
# 289| getSource(): [BinaryExpr] ... .&(_:_:) ...
# 289| getFunction(): [MethodLookupExpr] .&(_:_:)
# 289| getBase(): [TypeExpr] Int.Type
# 289| getTypeRepr(): [TypeRepr] Int
# 289| getMethodRef(): [DeclRefExpr] &(_:_:)
# 289| getArgument(0): [Argument] : ...[...]
# 289| getExpr(): [SubscriptExpr] ...[...]
# 289| getBase(): [DeclRefExpr] b
# 289| getBase().getFullyConverted(): [InOutExpr] &...
# 289| getArgument(0): [Argument] : 5
# 289| getExpr(): [IntegerLiteralExpr] 5
# 289| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 289| getArgument(1): [Argument] : 1
# 289| getExpr(): [IntegerLiteralExpr] 1
# 290| getElement(21): [AssignExpr] ... = ...
# 290| getDest(): [SubscriptExpr] ...[...]
# 290| getBase(): [DeclRefExpr] b
# 290| getBase().getFullyConverted(): [InOutExpr] &...
# 290| getArgument(0): [Argument] : 7
# 290| getExpr(): [IntegerLiteralExpr] 7
# 290| getSource(): [BinaryExpr] ... .|(_:_:) ...
# 290| getFunction(): [MethodLookupExpr] .|(_:_:)
# 290| getBase(): [TypeExpr] Int.Type
# 290| getTypeRepr(): [TypeRepr] Int
# 290| getMethodRef(): [DeclRefExpr] |(_:_:)
# 290| getArgument(0): [Argument] : ...[...]
# 290| getExpr(): [SubscriptExpr] ...[...]
# 290| getBase(): [DeclRefExpr] b
# 290| getBase().getFullyConverted(): [InOutExpr] &...
# 290| getArgument(0): [Argument] : 6
# 290| getExpr(): [IntegerLiteralExpr] 6
# 290| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 290| getArgument(1): [Argument] : 1
# 290| getExpr(): [IntegerLiteralExpr] 1
# 291| getElement(22): [AssignExpr] ... = ...
# 291| getDest(): [SubscriptExpr] ...[...]
# 291| getBase(): [DeclRefExpr] b
# 291| getBase().getFullyConverted(): [InOutExpr] &...
# 291| getArgument(0): [Argument] : 8
# 291| getExpr(): [IntegerLiteralExpr] 8
# 291| getSource(): [BinaryExpr] ... .^(_:_:) ...
# 291| getFunction(): [MethodLookupExpr] .^(_:_:)
# 291| getBase(): [TypeExpr] Int.Type
# 291| getTypeRepr(): [TypeRepr] Int
# 291| getMethodRef(): [DeclRefExpr] ^(_:_:)
# 291| getArgument(0): [Argument] : ...[...]
# 291| getExpr(): [SubscriptExpr] ...[...]
# 291| getBase(): [DeclRefExpr] b
# 291| getBase().getFullyConverted(): [InOutExpr] &...
# 291| getArgument(0): [Argument] : 7
# 291| getExpr(): [IntegerLiteralExpr] 7
# 291| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 291| getArgument(1): [Argument] : 1
# 291| getExpr(): [IntegerLiteralExpr] 1
# 292| getElement(23): [AssignExpr] ... = ...
# 292| getDest(): [SubscriptExpr] ...[...]
# 292| getBase(): [DeclRefExpr] b
# 292| getBase().getFullyConverted(): [InOutExpr] &...
# 292| getArgument(0): [Argument] : 9
# 292| getExpr(): [IntegerLiteralExpr] 9
# 292| getSource(): [BinaryExpr] ... .<<(_:_:) ...
# 292| getFunction(): [MethodLookupExpr] .<<(_:_:)
# 292| getBase(): [TypeExpr] Int.Type
# 292| getTypeRepr(): [TypeRepr] Int
# 292| getMethodRef(): [DeclRefExpr] <<(_:_:)
# 292| getArgument(0): [Argument] : ...[...]
# 292| getExpr(): [SubscriptExpr] ...[...]
# 292| getBase(): [DeclRefExpr] b
# 292| getBase().getFullyConverted(): [InOutExpr] &...
# 292| getArgument(0): [Argument] : 8
# 292| getExpr(): [IntegerLiteralExpr] 8
# 292| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 292| getArgument(1): [Argument] : 1
# 292| getExpr(): [IntegerLiteralExpr] 1
# 293| getElement(24): [AssignExpr] ... = ...
# 293| getDest(): [SubscriptExpr] ...[...]
# 293| getBase(): [DeclRefExpr] b
# 293| getBase().getFullyConverted(): [InOutExpr] &...
# 293| getArgument(0): [Argument] : 10
# 293| getExpr(): [IntegerLiteralExpr] 10
# 293| getSource(): [BinaryExpr] ... .>>(_:_:) ...
# 293| getFunction(): [MethodLookupExpr] .>>(_:_:)
# 293| getBase(): [TypeExpr] Int.Type
# 293| getTypeRepr(): [TypeRepr] Int
# 293| getMethodRef(): [DeclRefExpr] >>(_:_:)
# 293| getArgument(0): [Argument] : ...[...]
# 293| getExpr(): [SubscriptExpr] ...[...]
# 293| getBase(): [DeclRefExpr] b
# 293| getBase().getFullyConverted(): [InOutExpr] &...
# 293| getArgument(0): [Argument] : 9
# 293| getExpr(): [IntegerLiteralExpr] 9
# 293| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 293| getArgument(1): [Argument] : 1
# 293| getExpr(): [IntegerLiteralExpr] 1
# 295| getElement(25): [PatternBindingDecl] var ... = ...
# 295| getInit(0): [DeclRefExpr] tupleWithA
# 295| getInit(0).getFullyConverted(): [LoadExpr] ((Int, Int, Int, Int, Int)) ...
# 295| getPattern(0): [TuplePattern] (...)
# 295| getElement(0): [NamedPattern] a1
# 295| getElement(1): [NamedPattern] a2
# 295| getElement(2): [NamedPattern] a3
# 295| getElement(3): [NamedPattern] a4
# 295| getElement(4): [NamedPattern] a5
# 296| getElement(26): [ReturnStmt] return ...
# 296| getResult(): [TupleExpr] (...)
# 296| getElement(0): [BinaryExpr] ... .+(_:_:) ...
# 296| getFunction(): [MethodLookupExpr] .+(_:_:)
# 296| getBase(): [TypeExpr] Int.Type
# 296| getTypeRepr(): [TypeRepr] Int
# 296| getMethodRef(): [DeclRefExpr] +(_:_:)
# 296| getArgument(0): [Argument] : a1
# 296| getExpr(): [DeclRefExpr] a1
# 296| getArgument(1): [Argument] : ...[...]
# 296| getExpr(): [SubscriptExpr] ...[...]
# 296| getBase(): [DeclRefExpr] b
# 296| getBase().getFullyConverted(): [InOutExpr] &...
# 296| getArgument(0): [Argument] : 0
# 296| getExpr(): [IntegerLiteralExpr] 0
# 296| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 296| getElement(1): [BinaryExpr] ... .+(_:_:) ...
# 296| getFunction(): [MethodLookupExpr] .+(_:_:)
# 296| getBase(): [TypeExpr] Int.Type
# 296| getTypeRepr(): [TypeRepr] Int
# 296| getMethodRef(): [DeclRefExpr] +(_:_:)
# 296| getArgument(0): [Argument] : a2
# 296| getExpr(): [DeclRefExpr] a2
# 296| getArgument(1): [Argument] : ...[...]
# 296| getExpr(): [SubscriptExpr] ...[...]
# 296| getBase(): [DeclRefExpr] b
# 296| getBase().getFullyConverted(): [InOutExpr] &...
# 296| getArgument(0): [Argument] : 1
# 296| getExpr(): [IntegerLiteralExpr] 1
# 296| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 296| getElement(2): [BinaryExpr] ... .+(_:_:) ...
# 296| getFunction(): [MethodLookupExpr] .+(_:_:)
# 296| getBase(): [TypeExpr] Int.Type
# 296| getTypeRepr(): [TypeRepr] Int
# 296| getMethodRef(): [DeclRefExpr] +(_:_:)
# 296| getArgument(0): [Argument] : a3
# 296| getExpr(): [DeclRefExpr] a3
# 296| getArgument(1): [Argument] : ...[...]
# 296| getExpr(): [SubscriptExpr] ...[...]
# 296| getBase(): [DeclRefExpr] b
# 296| getBase().getFullyConverted(): [InOutExpr] &...
# 296| getArgument(0): [Argument] : 2
# 296| getExpr(): [IntegerLiteralExpr] 2
# 296| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 296| getElement(3): [BinaryExpr] ... .+(_:_:) ...
# 296| getFunction(): [MethodLookupExpr] .+(_:_:)
# 296| getBase(): [TypeExpr] Int.Type
# 296| getTypeRepr(): [TypeRepr] Int
# 296| getMethodRef(): [DeclRefExpr] +(_:_:)
# 296| getArgument(0): [Argument] : a4
# 296| getExpr(): [DeclRefExpr] a4
# 296| getArgument(1): [Argument] : ...[...]
# 296| getExpr(): [SubscriptExpr] ...[...]
# 296| getBase(): [DeclRefExpr] b
# 296| getBase().getFullyConverted(): [InOutExpr] &...
# 296| getArgument(0): [Argument] : 3
# 296| getExpr(): [IntegerLiteralExpr] 3
# 296| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 296| getElement(4): [BinaryExpr] ... .+(_:_:) ...
# 296| getFunction(): [MethodLookupExpr] .+(_:_:)
# 296| getBase(): [TypeExpr] Int.Type
# 296| getTypeRepr(): [TypeRepr] Int
# 296| getMethodRef(): [DeclRefExpr] +(_:_:)
# 296| getArgument(0): [Argument] : a5
# 296| getExpr(): [DeclRefExpr] a5
# 296| getArgument(1): [Argument] : ...[...]
# 296| getExpr(): [SubscriptExpr] ...[...]
# 296| getBase(): [DeclRefExpr] b
# 296| getBase().getFullyConverted(): [InOutExpr] &...
# 296| getArgument(0): [Argument] : 4
# 296| getExpr(): [IntegerLiteralExpr] 4
# 296| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 299| [NamedFunction] loop1(x:)
# 299| InterfaceType = (inout Int) -> ()
# 299| getParam(0): [ParamDecl] x
# 299| Type = Int
# 299| getBody(): [BraceStmt] { ... }
# 300| getElement(0): [WhileStmt] while ... { ... }
# 300| getCondition(): [StmtCondition] StmtCondition
# 300| getElement(0): [ConditionElement] ... .>=(_:_:) ...
# 300| getBoolean(): [BinaryExpr] ... .>=(_:_:) ...
# 300| getFunction(): [MethodLookupExpr] .>=(_:_:)
# 300| getBase(): [TypeExpr] Int.Type
# 300| getTypeRepr(): [TypeRepr] Int
# 300| getMethodRef(): [DeclRefExpr] >=(_:_:)
# 300| getArgument(0): [Argument] : x
# 300| getExpr(): [DeclRefExpr] x
# 300| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 300| getArgument(1): [Argument] : 0
# 300| getExpr(): [IntegerLiteralExpr] 0
# 300| getBody(): [BraceStmt] { ... }
# 301| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 301| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 301| getArgument(0): [Argument] : [...]
# 301| getExpr(): [VarargExpansionExpr] [...]
# 301| getSubExpr(): [ArrayExpr] [...]
# 301| getElement(0): [DeclRefExpr] x
# 301| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 301| getSubExpr(): [LoadExpr] (Int) ...
# 301| getArgument(1): [Argument] separator: default separator
# 301| getExpr(): [DefaultArgumentExpr] default separator
# 301| getArgument(2): [Argument] terminator: default terminator
# 301| getExpr(): [DefaultArgumentExpr] default terminator
# 302| getElement(1): [BinaryExpr] ... .-=(_:_:) ...
# 302| getFunction(): [MethodLookupExpr] .-=(_:_:)
# 302| getBase(): [TypeExpr] Int.Type
# 302| getTypeRepr(): [TypeRepr] Int
# 302| getMethodRef(): [DeclRefExpr] -=(_:_:)
# 302| getArgument(0): [Argument] : x
# 302| getExpr(): [DeclRefExpr] x
# 302| getExpr().getFullyConverted(): [InOutExpr] &...
# 302| getArgument(1): [Argument] : 1
# 302| getExpr(): [IntegerLiteralExpr] 1
# 306| [NamedFunction] loop2(x:)
# 306| InterfaceType = (inout Int) -> ()
# 306| getParam(0): [ParamDecl] x
# 306| Type = Int
# 306| getBody(): [BraceStmt] { ... }
# 307| getElement(0): [WhileStmt] while ... { ... }
# 307| getCondition(): [StmtCondition] StmtCondition
# 307| getElement(0): [ConditionElement] ... .>=(_:_:) ...
# 307| getBoolean(): [BinaryExpr] ... .>=(_:_:) ...
# 307| getFunction(): [MethodLookupExpr] .>=(_:_:)
# 307| getBase(): [TypeExpr] Int.Type
# 307| getTypeRepr(): [TypeRepr] Int
# 307| getMethodRef(): [DeclRefExpr] >=(_:_:)
# 307| getArgument(0): [Argument] : x
# 307| getExpr(): [DeclRefExpr] x
# 307| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 307| getArgument(1): [Argument] : 0
# 307| getExpr(): [IntegerLiteralExpr] 0
# 307| getBody(): [BraceStmt] { ... }
# 308| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 308| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 308| getArgument(0): [Argument] : [...]
# 308| getExpr(): [VarargExpansionExpr] [...]
# 308| getSubExpr(): [ArrayExpr] [...]
# 308| getElement(0): [DeclRefExpr] x
# 308| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 308| getSubExpr(): [LoadExpr] (Int) ...
# 308| getArgument(1): [Argument] separator: default separator
# 308| getExpr(): [DefaultArgumentExpr] default separator
# 308| getArgument(2): [Argument] terminator: default terminator
# 308| getExpr(): [DefaultArgumentExpr] default terminator
# 309| getElement(1): [BinaryExpr] ... .-=(_:_:) ...
# 309| getFunction(): [MethodLookupExpr] .-=(_:_:)
# 309| getBase(): [TypeExpr] Int.Type
# 309| getTypeRepr(): [TypeRepr] Int
# 309| getMethodRef(): [DeclRefExpr] -=(_:_:)
# 309| getArgument(0): [Argument] : x
# 309| getExpr(): [DeclRefExpr] x
# 309| getExpr().getFullyConverted(): [InOutExpr] &...
# 309| getArgument(1): [Argument] : 1
# 309| getExpr(): [IntegerLiteralExpr] 1
# 310| getElement(2): [IfStmt] if ... then { ... } else { ... }
# 310| getCondition(): [StmtCondition] StmtCondition
# 310| getElement(0): [ConditionElement] ... .>(_:_:) ...
# 310| getBoolean(): [BinaryExpr] ... .>(_:_:) ...
# 310| getFunction(): [MethodLookupExpr] .>(_:_:)
# 310| getBase(): [TypeExpr] Int.Type
# 310| getTypeRepr(): [TypeRepr] Int
# 310| getMethodRef(): [DeclRefExpr] >(_:_:)
# 310| getArgument(0): [Argument] : x
# 310| getExpr(): [DeclRefExpr] x
# 310| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 310| getArgument(1): [Argument] : 100
# 310| getExpr(): [IntegerLiteralExpr] 100
# 310| getThen(): [BraceStmt] { ... }
# 311| getElement(0): [BreakStmt] break
# 313| getElse(): [IfStmt] if ... then { ... }
# 313| getCondition(): [StmtCondition] StmtCondition
# 313| getElement(0): [ConditionElement] ... .>(_:_:) ...
# 313| getBoolean(): [BinaryExpr] ... .>(_:_:) ...
# 313| getFunction(): [MethodLookupExpr] .>(_:_:)
# 313| getBase(): [TypeExpr] Int.Type
# 313| getTypeRepr(): [TypeRepr] Int
# 313| getMethodRef(): [DeclRefExpr] >(_:_:)
# 313| getArgument(0): [Argument] : x
# 313| getExpr(): [DeclRefExpr] x
# 313| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 313| getArgument(1): [Argument] : 50
# 313| getExpr(): [IntegerLiteralExpr] 50
# 313| getThen(): [BraceStmt] { ... }
# 314| getElement(0): [ContinueStmt] continue
# 316| getElement(3): [CallExpr] call to print(_:separator:terminator:)
# 316| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 316| getArgument(0): [Argument] : [...]
# 316| getExpr(): [VarargExpansionExpr] [...]
# 316| getSubExpr(): [ArrayExpr] [...]
# 316| getElement(0): [StringLiteralExpr] Iter
# 316| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 316| getArgument(1): [Argument] separator: default separator
# 316| getExpr(): [DefaultArgumentExpr] default separator
# 316| getArgument(2): [Argument] terminator: default terminator
# 316| getExpr(): [DefaultArgumentExpr] default terminator
# 318| getElement(1): [CallExpr] call to print(_:separator:terminator:)
# 318| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 318| getArgument(0): [Argument] : [...]
# 318| getExpr(): [VarargExpansionExpr] [...]
# 318| getSubExpr(): [ArrayExpr] [...]
# 318| getElement(0): [StringLiteralExpr] Done
# 318| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 318| getArgument(1): [Argument] separator: default separator
# 318| getExpr(): [DefaultArgumentExpr] default separator
# 318| getArgument(2): [Argument] terminator: default terminator
# 318| getExpr(): [DefaultArgumentExpr] default terminator
# 321| [NamedFunction] labeledLoop(x:)
# 321| InterfaceType = (inout Int) -> ()
# 321| getParam(0): [ParamDecl] x
# 321| Type = Int
# 321| getBody(): [BraceStmt] { ... }
# 322| getElement(0): [WhileStmt] while ... { ... }
# 322| getCondition(): [StmtCondition] StmtCondition
# 322| getElement(0): [ConditionElement] ... .>=(_:_:) ...
# 322| getBoolean(): [BinaryExpr] ... .>=(_:_:) ...
# 322| getFunction(): [MethodLookupExpr] .>=(_:_:)
# 322| getBase(): [TypeExpr] Int.Type
# 322| getTypeRepr(): [TypeRepr] Int
# 322| getMethodRef(): [DeclRefExpr] >=(_:_:)
# 322| getArgument(0): [Argument] : x
# 322| getExpr(): [DeclRefExpr] x
# 322| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 322| getArgument(1): [Argument] : 0
# 322| getExpr(): [IntegerLiteralExpr] 0
# 322| getBody(): [BraceStmt] { ... }
# 323| getElement(0): [WhileStmt] while ... { ... }
# 323| getCondition(): [StmtCondition] StmtCondition
# 323| getElement(0): [ConditionElement] ... .>=(_:_:) ...
# 323| getBoolean(): [BinaryExpr] ... .>=(_:_:) ...
# 323| getFunction(): [MethodLookupExpr] .>=(_:_:)
# 323| getBase(): [TypeExpr] Int.Type
# 323| getTypeRepr(): [TypeRepr] Int
# 323| getMethodRef(): [DeclRefExpr] >=(_:_:)
# 323| getArgument(0): [Argument] : x
# 323| getExpr(): [DeclRefExpr] x
# 323| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 323| getArgument(1): [Argument] : 0
# 323| getExpr(): [IntegerLiteralExpr] 0
# 323| getBody(): [BraceStmt] { ... }
# 324| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 324| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 324| getArgument(0): [Argument] : [...]
# 324| getExpr(): [VarargExpansionExpr] [...]
# 324| getSubExpr(): [ArrayExpr] [...]
# 324| getElement(0): [DeclRefExpr] x
# 324| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 324| getSubExpr(): [LoadExpr] (Int) ...
# 324| getArgument(1): [Argument] separator: default separator
# 324| getExpr(): [DefaultArgumentExpr] default separator
# 324| getArgument(2): [Argument] terminator: default terminator
# 324| getExpr(): [DefaultArgumentExpr] default terminator
# 325| getElement(1): [BinaryExpr] ... .-=(_:_:) ...
# 325| getFunction(): [MethodLookupExpr] .-=(_:_:)
# 325| getBase(): [TypeExpr] Int.Type
# 325| getTypeRepr(): [TypeRepr] Int
# 325| getMethodRef(): [DeclRefExpr] -=(_:_:)
# 325| getArgument(0): [Argument] : x
# 325| getExpr(): [DeclRefExpr] x
# 325| getExpr().getFullyConverted(): [InOutExpr] &...
# 325| getArgument(1): [Argument] : 1
# 325| getExpr(): [IntegerLiteralExpr] 1
# 326| getElement(2): [IfStmt] if ... then { ... } else { ... }
# 326| getCondition(): [StmtCondition] StmtCondition
# 326| getElement(0): [ConditionElement] ... .>(_:_:) ...
# 326| getBoolean(): [BinaryExpr] ... .>(_:_:) ...
# 326| getFunction(): [MethodLookupExpr] .>(_:_:)
# 326| getBase(): [TypeExpr] Int.Type
# 326| getTypeRepr(): [TypeRepr] Int
# 326| getMethodRef(): [DeclRefExpr] >(_:_:)
# 326| getArgument(0): [Argument] : x
# 326| getExpr(): [DeclRefExpr] x
# 326| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 326| getArgument(1): [Argument] : 100
# 326| getExpr(): [IntegerLiteralExpr] 100
# 326| getThen(): [BraceStmt] { ... }
# 327| getElement(0): [BreakStmt] break outer
# 329| getElse(): [IfStmt] if ... then { ... }
# 329| getCondition(): [StmtCondition] StmtCondition
# 329| getElement(0): [ConditionElement] ... .>(_:_:) ...
# 329| getBoolean(): [BinaryExpr] ... .>(_:_:) ...
# 329| getFunction(): [MethodLookupExpr] .>(_:_:)
# 329| getBase(): [TypeExpr] Int.Type
# 329| getTypeRepr(): [TypeRepr] Int
# 329| getMethodRef(): [DeclRefExpr] >(_:_:)
# 329| getArgument(0): [Argument] : x
# 329| getExpr(): [DeclRefExpr] x
# 329| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 329| getArgument(1): [Argument] : 50
# 329| getExpr(): [IntegerLiteralExpr] 50
# 329| getThen(): [BraceStmt] { ... }
# 330| getElement(0): [ContinueStmt] continue inner
# 332| getElement(3): [CallExpr] call to print(_:separator:terminator:)
# 332| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 332| getArgument(0): [Argument] : [...]
# 332| getExpr(): [VarargExpansionExpr] [...]
# 332| getSubExpr(): [ArrayExpr] [...]
# 332| getElement(0): [StringLiteralExpr] Iter
# 332| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 332| getArgument(1): [Argument] separator: default separator
# 332| getExpr(): [DefaultArgumentExpr] default separator
# 332| getArgument(2): [Argument] terminator: default terminator
# 332| getExpr(): [DefaultArgumentExpr] default terminator
# 334| getElement(1): [CallExpr] call to print(_:separator:terminator:)
# 334| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 334| getArgument(0): [Argument] : [...]
# 334| getExpr(): [VarargExpansionExpr] [...]
# 334| getSubExpr(): [ArrayExpr] [...]
# 334| getElement(0): [StringLiteralExpr] Done
# 334| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 334| getArgument(1): [Argument] separator: default separator
# 334| getExpr(): [DefaultArgumentExpr] default separator
# 334| getArgument(2): [Argument] terminator: default terminator
# 334| getExpr(): [DefaultArgumentExpr] default terminator
# 338| [NamedFunction] testRepeat(x:)
# 338| InterfaceType = (inout Int) -> ()
# 338| getParam(0): [ParamDecl] x
# 338| Type = Int
# 338| getBody(): [BraceStmt] { ... }
# 339| getElement(0): [RepeatWhileStmt] repeat { ... } while ...
# 342| getCondition(): [BinaryExpr] ... .>=(_:_:) ...
# 342| getFunction(): [MethodLookupExpr] .>=(_:_:)
# 342| getBase(): [TypeExpr] Int.Type
# 342| getTypeRepr(): [TypeRepr] Int
# 342| getMethodRef(): [DeclRefExpr] >=(_:_:)
# 342| getArgument(0): [Argument] : x
# 342| getExpr(): [DeclRefExpr] x
# 342| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 342| getArgument(1): [Argument] : 0
# 342| getExpr(): [IntegerLiteralExpr] 0
# 339| getBody(): [BraceStmt] { ... }
# 340| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 340| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 340| getArgument(0): [Argument] : [...]
# 340| getExpr(): [VarargExpansionExpr] [...]
# 340| getSubExpr(): [ArrayExpr] [...]
# 340| getElement(0): [DeclRefExpr] x
# 340| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 340| getSubExpr(): [LoadExpr] (Int) ...
# 340| getArgument(1): [Argument] separator: default separator
# 340| getExpr(): [DefaultArgumentExpr] default separator
# 340| getArgument(2): [Argument] terminator: default terminator
# 340| getExpr(): [DefaultArgumentExpr] default terminator
# 341| getElement(1): [BinaryExpr] ... .-=(_:_:) ...
# 341| getFunction(): [MethodLookupExpr] .-=(_:_:)
# 341| getBase(): [TypeExpr] Int.Type
# 341| getTypeRepr(): [TypeRepr] Int
# 341| getMethodRef(): [DeclRefExpr] -=(_:_:)
# 341| getArgument(0): [Argument] : x
# 341| getExpr(): [DeclRefExpr] x
# 341| getExpr().getFullyConverted(): [InOutExpr] &...
# 341| getArgument(1): [Argument] : 1
# 341| getExpr(): [IntegerLiteralExpr] 1
# 345| [NamedFunction] loop_with_identity_expr()
# 345| InterfaceType = () -> ()
# 345| getBody(): [BraceStmt] { ... }
# 346| getVariable(0): [ConcreteVarDecl] x
# 346| Type = Int
# 346| getElement(0): [PatternBindingDecl] var ... = ...
# 346| getInit(0): [IntegerLiteralExpr] 0
# 346| getPattern(0): [NamedPattern] x
# 347| getElement(1): [WhileStmt] while ... { ... }
# 347| getCondition(): [StmtCondition] StmtCondition
# 347| getElement(0): [ConditionElement] ... .<(_:_:) ...
# 347| getBoolean(): [BinaryExpr] ... .<(_:_:) ...
# 347| getFunction(): [MethodLookupExpr] .<(_:_:)
# 347| getBase(): [TypeExpr] Int.Type
# 347| getTypeRepr(): [TypeRepr] Int
# 347| getMethodRef(): [DeclRefExpr] <(_:_:)
# 347| getArgument(0): [Argument] : x
# 347| getExpr(): [DeclRefExpr] x
# 347| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 347| getArgument(1): [Argument] : 10
# 347| getExpr(): [IntegerLiteralExpr] 10
# 347| getBoolean().getFullyConverted(): [ParenExpr] (...)
# 347| getBody(): [BraceStmt] { ... }
# 348| getElement(0): [BinaryExpr] ... .+=(_:_:) ...
# 348| getFunction(): [MethodLookupExpr] .+=(_:_:)
# 348| getBase(): [TypeExpr] Int.Type
# 348| getTypeRepr(): [TypeRepr] Int
# 348| getMethodRef(): [DeclRefExpr] +=(_:_:)
# 348| getArgument(0): [Argument] : x
# 348| getExpr(): [DeclRefExpr] x
# 348| getExpr().getFullyConverted(): [InOutExpr] &...
# 348| getArgument(1): [Argument] : 1
# 348| getExpr(): [IntegerLiteralExpr] 1
# 352| [ClassDecl] OptionalC
# 353| getMember(0): [PatternBindingDecl] var ... = ...
# 353| getPattern(0): [TypedPattern] ... as ...
# 353| getSubPattern(): [NamedPattern] c
# 353| getTypeRepr(): [TypeRepr] C?
# 353| getMember(1): [ConcreteVarDecl] c
# 353| Type = C?
# 353| getAccessor(0): [Accessor] get
# 353| InterfaceType = (OptionalC) -> () -> C?
# 353| getSelfParam(): [ParamDecl] self
# 353| Type = OptionalC
# 353| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .c
#-----| getBase(): [DeclRefExpr] self
# 354| getMember(2): [Initializer] OptionalC.init(arg:)
# 354| InterfaceType = (OptionalC.Type) -> (C?) -> OptionalC
# 354| getSelfParam(): [ParamDecl] self
# 354| Type = OptionalC
# 354| getParam(0): [ParamDecl] arg
# 354| Type = C?
# 354| getBody(): [BraceStmt] { ... }
# 355| getElement(0): [AssignExpr] ... = ...
# 355| getDest(): [MemberRefExpr] .c
# 355| getBase(): [DeclRefExpr] self
# 355| getSource(): [DeclRefExpr] arg
# 356| getElement(1): [ReturnStmt] return
# 358| getMember(3): [NamedFunction] getOptional()
# 358| InterfaceType = (OptionalC) -> () -> C?
# 358| getSelfParam(): [ParamDecl] self
# 358| Type = OptionalC
# 358| getBody(): [BraceStmt] { ... }
# 359| getElement(0): [ReturnStmt] return ...
# 359| getResult(): [MemberRefExpr] .c
# 359| getBase(): [DeclRefExpr] self
# 352| getMember(4): [Deinitializer] OptionalC.deinit()
# 352| InterfaceType = (OptionalC) -> () -> ()
# 352| getSelfParam(): [ParamDecl] self
# 352| Type = OptionalC
# 352| getBody(): [BraceStmt] { ... }
# 363| [NamedFunction] testOptional(c:)
# 363| InterfaceType = (OptionalC?) -> Int?
# 363| getParam(0): [ParamDecl] c
# 363| Type = OptionalC?
# 363| getBody(): [BraceStmt] { ... }
# 364| getElement(0): [ReturnStmt] return ...
# 364| getResult(): [OptionalEvaluationExpr] OptionalEvaluationExpr
# 364| getSubExpr(): [CallExpr] call to getMyInt()
# 364| getFunction(): [MethodLookupExpr] .getMyInt()
# 364| getBase(): [BindOptionalExpr] ...?
# 364| getSubExpr(): [CallExpr] call to getOptional()
# 364| getFunction(): [MethodLookupExpr] .getOptional()
# 364| getBase(): [BindOptionalExpr] ...?
# 364| getSubExpr(): [DeclRefExpr] c
# 364| getMethodRef(): [DeclRefExpr] getOptional()
# 364| getMethodRef(): [DeclRefExpr] getMyInt()
# 364| getSubExpr().getFullyConverted(): [InjectIntoOptionalExpr] (Int?) ...
# 367| [NamedFunction] testCapture(x:y:)
# 367| InterfaceType = (Int, Int) -> () -> Int
# 367| getParam(0): [ParamDecl] x
# 367| Type = Int
# 367| getParam(1): [ParamDecl] y
# 367| Type = Int
# 367| getBody(): [BraceStmt] { ... }
# 368| getElement(0): [ReturnStmt] return ...
# 368| getResult(): [CaptureListExpr] { ... }
# 368| getBindingDecl(0): [PatternBindingDecl] var ... = ...
# 368| getInit(0): [BinaryExpr] ... .+(_:_:) ...
# 368| getFunction(): [MethodLookupExpr] .+(_:_:)
# 368| getBase(): [TypeExpr] Int.Type
# 368| getTypeRepr(): [TypeRepr] Int
# 368| getMethodRef(): [DeclRefExpr] +(_:_:)
# 368| getArgument(0): [Argument] : x
# 368| getExpr(): [DeclRefExpr] x
# 368| getArgument(1): [Argument] : y
# 368| getExpr(): [DeclRefExpr] y
# 368| getPattern(0): [NamedPattern] z
# 368| getBindingDecl(1): [PatternBindingDecl] var ... = ...
# 368| getInit(0): [StringLiteralExpr] literal
# 368| getPattern(0): [NamedPattern] t
# 368| getVariable(0): [ConcreteVarDecl] z
# 368| Type = Int
# 368| getVariable(1): [ConcreteVarDecl] t
# 368| Type = String
# 368| getClosureBody(): [ExplicitClosureExpr] { ... }
# 368| getBody(): [BraceStmt] { ... }
# 369| getElement(0): [ReturnStmt] return ...
# 369| getResult(): [DeclRefExpr] z
# 369| getCapture(0): [CapturedDecl] z
# 373| [NamedFunction] testTupleElement(t:)
# 373| InterfaceType = ((a: Int, Int, c: Int)) -> Int
# 373| getParam(0): [ParamDecl] t
# 373| Type = (a: Int, Int, c: Int)
# 373| getBody(): [BraceStmt] { ... }
# 374| getElement(0): [ReturnStmt] return ...
# 374| getResult(): [BinaryExpr] ... .+(_:_:) ...
# 374| getFunction(): [MethodLookupExpr] .+(_:_:)
# 374| getBase(): [TypeExpr] Int.Type
# 374| getTypeRepr(): [TypeRepr] Int
# 374| getMethodRef(): [DeclRefExpr] +(_:_:)
# 374| getArgument(0): [Argument] : ... .+(_:_:) ...
# 374| getExpr(): [BinaryExpr] ... .+(_:_:) ...
# 374| getFunction(): [MethodLookupExpr] .+(_:_:)
# 374| getBase(): [TypeExpr] Int.Type
# 374| getTypeRepr(): [TypeRepr] Int
# 374| getMethodRef(): [DeclRefExpr] +(_:_:)
# 374| getArgument(0): [Argument] : ... .+(_:_:) ...
# 374| getExpr(): [BinaryExpr] ... .+(_:_:) ...
# 374| getFunction(): [MethodLookupExpr] .+(_:_:)
# 374| getBase(): [TypeExpr] Int.Type
# 374| getTypeRepr(): [TypeRepr] Int
# 374| getMethodRef(): [DeclRefExpr] +(_:_:)
# 374| getArgument(0): [Argument] : .0
# 374| getExpr(): [TupleElementExpr] .0
# 374| getSubExpr(): [DeclRefExpr] t
# 374| getArgument(1): [Argument] : .1
# 374| getExpr(): [TupleElementExpr] .1
# 374| getSubExpr(): [DeclRefExpr] t
# 374| getArgument(1): [Argument] : .2
# 374| getExpr(): [TupleElementExpr] .2
# 374| getSubExpr(): [DeclRefExpr] t
# 374| getArgument(1): [Argument] : .0
# 374| getExpr(): [TupleElementExpr] .0
# 374| getSubExpr(): [TupleExpr] (...)
# 374| getElement(0): [IntegerLiteralExpr] 1
# 374| getElement(1): [IntegerLiteralExpr] 2
# 374| getElement(2): [IntegerLiteralExpr] 3
# 377| [ClassDecl] Derived
# 378| getMember(0): [Initializer] Derived.init()
# 378| InterfaceType = (Derived.Type) -> () -> Derived
# 378| getSelfParam(): [ParamDecl] self
# 378| Type = Derived
# 378| getBody(): [BraceStmt] { ... }
# 379| getElement(0): [RebindSelfInInitializerExpr] self = ...
# 379| getSubExpr(): [CallExpr] call to C.init(n:)
# 379| getFunction(): [MethodLookupExpr] C.init(n:)
# 379| getBase(): [SuperRefExpr] super
# 379| getMethodRef(): [OtherInitializerRefExpr] C.init(n:)
# 379| getArgument(0): [Argument] n: 0
# 379| getExpr(): [IntegerLiteralExpr] 0
# 380| getElement(1): [ReturnStmt] return
# 377| getMember(1): [Deinitializer] Derived.deinit()
# 377| InterfaceType = (Derived) -> () -> ()
# 377| getSelfParam(): [ParamDecl] self
# 377| Type = Derived
# 377| getBody(): [BraceStmt] { ... }
# 377| getMember(2): [Initializer] Derived.init(n:)
# 377| InterfaceType = (Derived.Type) -> (Int) -> Derived
# 377| getSelfParam(): [ParamDecl] self
# 377| Type = Derived
#-----| getParam(0): [ParamDecl] n
#-----| Type = Int
# 377| getBody(): [BraceStmt] { ... }
# 377| getElement(0): [CallExpr] call to _unimplementedInitializer(className:initName:file:line:column:)
# 377| getFunction(): [DeclRefExpr] _unimplementedInitializer(className:initName:file:line:column:)
# 377| getArgument(0): [Argument] : cfg.Derived
# 377| getExpr(): [StringLiteralExpr] cfg.Derived
# 377| getArgument(1): [Argument] : #...
# 377| getExpr(): [MagicIdentifierLiteralExpr] #...
# 377| getArgument(2): [Argument] : #...
# 377| getExpr(): [MagicIdentifierLiteralExpr] #...
# 377| getArgument(3): [Argument] : #...
# 377| getExpr(): [MagicIdentifierLiteralExpr] #...
# 377| getArgument(4): [Argument] : #...
# 377| getExpr(): [MagicIdentifierLiteralExpr] #...
#-----| getElement(1): [ReturnStmt] return
# 383| [NamedFunction] doWithoutCatch(x:)
# 383| InterfaceType = (Int) throws -> Int
# 383| getParam(0): [ParamDecl] x
# 383| Type = Int
# 383| getBody(): [BraceStmt] { ... }
# 384| getElement(0): [DoStmt] do { ... }
# 384| getBody(): [BraceStmt] { ... }
# 385| getElement(0): [TryExpr] try ...
# 385| getSubExpr(): [CallExpr] call to mightThrow(x:)
# 385| getFunction(): [DeclRefExpr] mightThrow(x:)
# 385| getArgument(0): [Argument] x: 0
# 385| getExpr(): [IntegerLiteralExpr] 0
# 386| getElement(1): [CallExpr] call to print(_:separator:terminator:)
# 386| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 386| getArgument(0): [Argument] : [...]
# 386| getExpr(): [VarargExpansionExpr] [...]
# 386| getSubExpr(): [ArrayExpr] [...]
# 386| getElement(0): [StringLiteralExpr] Did not throw.
# 386| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 386| getArgument(1): [Argument] separator: default separator
# 386| getExpr(): [DefaultArgumentExpr] default separator
# 386| getArgument(2): [Argument] terminator: default terminator
# 386| getExpr(): [DefaultArgumentExpr] default terminator
# 387| getElement(2): [ForceTryExpr] try! ...
# 387| getSubExpr(): [CallExpr] call to mightThrow(x:)
# 387| getFunction(): [DeclRefExpr] mightThrow(x:)
# 387| getArgument(0): [Argument] x: 0
# 387| getExpr(): [IntegerLiteralExpr] 0
# 388| getElement(3): [CallExpr] call to print(_:separator:terminator:)
# 388| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 388| getArgument(0): [Argument] : [...]
# 388| getExpr(): [VarargExpansionExpr] [...]
# 388| getSubExpr(): [ArrayExpr] [...]
# 388| getElement(0): [StringLiteralExpr] Still did not throw.
# 388| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 388| getArgument(1): [Argument] separator: default separator
# 388| getExpr(): [DefaultArgumentExpr] default separator
# 388| getArgument(2): [Argument] terminator: default terminator
# 388| getExpr(): [DefaultArgumentExpr] default terminator
# 390| getElement(1): [ReturnStmt] return ...
# 390| getResult(): [IntegerLiteralExpr] 0
# 393| [ClassDecl] Structors
# 394| getMember(0): [PatternBindingDecl] var ... = ...
# 394| getPattern(0): [TypedPattern] ... as ...
# 394| getSubPattern(): [NamedPattern] field
# 394| getTypeRepr(): [TypeRepr] Int
# 394| getMember(1): [ConcreteVarDecl] field
# 394| Type = Int
# 394| getAccessor(0): [Accessor] get
# 394| InterfaceType = (Structors) -> () -> Int
# 394| getSelfParam(): [ParamDecl] self
# 394| Type = Structors
# 394| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .field
#-----| getBase(): [DeclRefExpr] self
# 394| getAccessor(1): [Accessor] set
# 394| InterfaceType = (Structors) -> (Int) -> ()
# 394| getSelfParam(): [ParamDecl] self
# 394| Type = Structors
# 394| getParam(0): [ParamDecl] value
# 394| Type = Int
# 394| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .field
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 394| getAccessor(2): [Accessor] _modify
# 394| InterfaceType = (Structors) -> () -> ()
# 394| getSelfParam(): [ParamDecl] self
# 394| Type = Structors
# 394| getBody(): [BraceStmt] { ... }
# 394| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .field
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 395| getMember(2): [Initializer] Structors.init()
# 395| InterfaceType = (Structors.Type) -> () -> Structors
# 395| getSelfParam(): [ParamDecl] self
# 395| Type = Structors
# 395| getBody(): [BraceStmt] { ... }
# 396| getElement(0): [AssignExpr] ... = ...
# 396| getDest(): [MemberRefExpr] .field
# 396| getBase(): [DeclRefExpr] self
# 396| getSource(): [IntegerLiteralExpr] 10
# 397| getElement(1): [ReturnStmt] return
# 399| getMember(3): [Deinitializer] Structors.deinit()
# 399| InterfaceType = (Structors) -> () -> ()
# 399| getSelfParam(): [ParamDecl] self
# 399| Type = Structors
# 399| getBody(): [BraceStmt] { ... }
# 400| getElement(0): [AssignExpr] ... = ...
# 400| getDest(): [MemberRefExpr] .field
# 400| getBase(): [DeclRefExpr] self
# 400| getSource(): [IntegerLiteralExpr] 0
# 404| [NamedFunction] dictionaryLiteral(x:y:)
# 404| InterfaceType = (Int, Int) -> [String : Int]
# 404| getParam(0): [ParamDecl] x
# 404| Type = Int
# 404| getParam(1): [ParamDecl] y
# 404| Type = Int
# 404| getBody(): [BraceStmt] { ... }
# 405| getElement(0): [ReturnStmt] return ...
# 405| getResult(): [DictionaryExpr] [...]
# 405| getElement(0): [TupleExpr] (...)
# 405| getElement(0): [StringLiteralExpr] x
# 405| getElement(1): [DeclRefExpr] x
# 405| getElement(1): [TupleExpr] (...)
# 405| getElement(0): [StringLiteralExpr] y
# 405| getElement(1): [DeclRefExpr] y
# 408| [NamedFunction] localDeclarations()
# 408| InterfaceType = () -> Int
# 408| getBody(): [BraceStmt] { ... }
# 428| getVariable(0): [ConcreteVarDecl] myLocalVar
# 428| Type = Int
# 409| getElement(0): [ClassDecl] MyLocalClass
# 410| getMember(0): [PatternBindingDecl] var ... = ...
# 410| getPattern(0): [TypedPattern] ... as ...
# 410| getSubPattern(): [NamedPattern] x
# 410| getTypeRepr(): [TypeRepr] Int
# 410| getMember(1): [ConcreteVarDecl] x
# 410| Type = Int
# 410| getAccessor(0): [Accessor] get
# 410| InterfaceType = (MyLocalClass) -> () -> Int
# 410| getSelfParam(): [ParamDecl] self
# 410| Type = MyLocalClass
# 410| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
# 410| getAccessor(1): [Accessor] set
# 410| InterfaceType = (MyLocalClass) -> (Int) -> ()
# 410| getSelfParam(): [ParamDecl] self
# 410| Type = MyLocalClass
# 410| getParam(0): [ParamDecl] value
# 410| Type = Int
# 410| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 410| getAccessor(2): [Accessor] _modify
# 410| InterfaceType = (MyLocalClass) -> () -> ()
# 410| getSelfParam(): [ParamDecl] self
# 410| Type = MyLocalClass
# 410| getBody(): [BraceStmt] { ... }
# 410| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 411| getMember(2): [Initializer] MyLocalClass.init()
# 411| InterfaceType = (MyLocalClass.Type) -> () -> MyLocalClass
# 411| getSelfParam(): [ParamDecl] self
# 411| Type = MyLocalClass
# 411| getBody(): [BraceStmt] { ... }
# 412| getElement(0): [AssignExpr] ... = ...
# 412| getDest(): [MemberRefExpr] .x
# 412| getBase(): [DeclRefExpr] self
# 412| getSource(): [IntegerLiteralExpr] 10
# 413| getElement(1): [ReturnStmt] return
# 409| getMember(3): [Deinitializer] MyLocalClass.deinit()
# 409| InterfaceType = (MyLocalClass) -> () -> ()
# 409| getSelfParam(): [ParamDecl] self
# 409| Type = MyLocalClass
# 409| getBody(): [BraceStmt] { ... }
# 416| getElement(1): [StructDecl] MyLocalStruct
# 417| getMember(0): [PatternBindingDecl] var ... = ...
# 417| getPattern(0): [TypedPattern] ... as ...
# 417| getSubPattern(): [NamedPattern] x
# 417| getTypeRepr(): [TypeRepr] Int
# 417| getMember(1): [ConcreteVarDecl] x
# 417| Type = Int
# 417| getAccessor(0): [Accessor] get
# 417| InterfaceType = (MyLocalStruct) -> () -> Int
# 417| getSelfParam(): [ParamDecl] self
# 417| Type = MyLocalStruct
# 417| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
# 417| getAccessor(1): [Accessor] set
# 417| InterfaceType = (inout MyLocalStruct) -> (Int) -> ()
# 417| getSelfParam(): [ParamDecl] self
# 417| Type = MyLocalStruct
# 417| getParam(0): [ParamDecl] value
# 417| Type = Int
# 417| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 417| getAccessor(2): [Accessor] _modify
# 417| InterfaceType = (inout MyLocalStruct) -> () -> ()
# 417| getSelfParam(): [ParamDecl] self
# 417| Type = MyLocalStruct
# 417| getBody(): [BraceStmt] { ... }
# 417| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 418| getMember(2): [Initializer] MyLocalStruct.init()
# 418| InterfaceType = (MyLocalStruct.Type) -> () -> MyLocalStruct
# 418| getSelfParam(): [ParamDecl] self
# 418| Type = MyLocalStruct
# 418| getBody(): [BraceStmt] { ... }
# 419| getElement(0): [AssignExpr] ... = ...
# 419| getDest(): [MemberRefExpr] .x
# 419| getBase(): [DeclRefExpr] self
# 419| getSource(): [IntegerLiteralExpr] 10
# 420| getElement(1): [ReturnStmt] return
# 423| getElement(2): [EnumDecl] MyLocalEnum
# 424| getMember(0): [EnumCaseDecl] case ...
# 424| getMember(1): [EnumElementDecl] A
# 425| getMember(2): [EnumCaseDecl] case ...
# 425| getMember(3): [EnumElementDecl] B
#-----| getMember(4): [NamedFunction] __derived_enum_equals(_:_:)
#-----| InterfaceType = (MyLocalEnum.Type) -> (MyLocalEnum, MyLocalEnum) -> Bool
#-----| getSelfParam(): [ParamDecl] self
#-----| Type = MyLocalEnum.Type
#-----| getParam(0): [ParamDecl] a
#-----| Type = MyLocalEnum
#-----| getParam(1): [ParamDecl] b
#-----| Type = MyLocalEnum
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] index_a
#-----| getElement(1): [SwitchStmt] switch a { ... }
#-----| getExpr(): [DeclRefExpr] a
#-----| getCase(0): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .A
#-----| getPattern(): [EnumElementPattern] .A
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_a
#-----| getSource(): [IntegerLiteralExpr] 0
#-----| getCase(1): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .B
#-----| getPattern(): [EnumElementPattern] .B
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_a
#-----| getSource(): [IntegerLiteralExpr] 1
#-----| getElement(2): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] index_b
#-----| getElement(3): [SwitchStmt] switch b { ... }
#-----| getExpr(): [DeclRefExpr] b
#-----| getCase(0): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .A
#-----| getPattern(): [EnumElementPattern] .A
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_b
#-----| getSource(): [IntegerLiteralExpr] 0
#-----| getCase(1): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .B
#-----| getPattern(): [EnumElementPattern] .B
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_b
#-----| getSource(): [IntegerLiteralExpr] 1
#-----| getElement(4): [ReturnStmt] return ...
#-----| getResult(): [BinaryExpr] ... .==(_:_:) ...
#-----| getFunction(): [MethodLookupExpr] .==(_:_:)
#-----| getBase(): [TypeExpr] Int.Type
#-----| getMethodRef(): [DeclRefExpr] ==(_:_:)
#-----| getArgument(0): [Argument] : index_a
#-----| getExpr(): [DeclRefExpr] index_a
#-----| getArgument(1): [Argument] : index_b
#-----| getExpr(): [DeclRefExpr] index_b
#-----| getMember(5): [ConcreteVarDecl] hashValue
#-----| Type = Int
#-----| getAccessor(0): [Accessor] get
#-----| InterfaceType = (MyLocalEnum) -> () -> Int
#-----| getSelfParam(): [ParamDecl] self
#-----| Type = MyLocalEnum
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [CallExpr] call to _hashValue(for:)
#-----| getFunction(): [DeclRefExpr] _hashValue(for:)
#-----| getArgument(0): [Argument] for: self
#-----| getExpr(): [DeclRefExpr] self
#-----| getMember(6): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] hashValue
#-----| getMember(7): [NamedFunction] hash(into:)
#-----| InterfaceType = (MyLocalEnum) -> (inout Hasher) -> ()
#-----| getSelfParam(): [ParamDecl] self
#-----| Type = MyLocalEnum
#-----| getParam(0): [ParamDecl] hasher
#-----| Type = Hasher
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] discriminator
#-----| getElement(1): [SwitchStmt] switch self { ... }
#-----| getExpr(): [DeclRefExpr] self
#-----| getCase(0): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .A
#-----| getPattern(): [EnumElementPattern] .A
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] discriminator
#-----| getSource(): [IntegerLiteralExpr] 0
#-----| getCase(1): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .B
#-----| getPattern(): [EnumElementPattern] .B
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] discriminator
#-----| getSource(): [IntegerLiteralExpr] 1
#-----| getElement(2): [CallExpr] call to combine(_:)
#-----| getFunction(): [MethodLookupExpr] .combine(_:)
#-----| getBase(): [DeclRefExpr] hasher
#-----| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] combine(_:)
#-----| getArgument(0): [Argument] : discriminator
#-----| getExpr(): [DeclRefExpr] discriminator
#-----| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 428| getElement(3): [PatternBindingDecl] var ... = ...
# 428| getPattern(0): [TypedPattern] ... as ...
# 428| getSubPattern(): [NamedPattern] myLocalVar
# 428| getTypeRepr(): [TypeRepr] Int
# 442| getElement(4): [ReturnStmt] return ...
# 442| getResult(): [IntegerLiteralExpr] 0
# 430| [Comment] // Error: declaration is only valid at file scope
# 430|
# 431| [Comment] // extension Int {
# 431|
# 432| [Comment] // func myExtensionMethod() -> Int {
# 432|
# 433| [Comment] // return self
# 433|
# 434| [Comment] // }
# 434|
# 435| [Comment] // }
# 435|
# 437| [Comment] // protocol 'MyProtocol' cannot be nested inside another declaration
# 437|
# 438| [Comment] // protocol MyProtocol {
# 438|
# 439| [Comment] // func myMethod()
# 439|
# 440| [Comment] // }
# 440|
# 445| [StructDecl] B
# 446| getMember(0): [PatternBindingDecl] var ... = ...
# 446| getPattern(0): [TypedPattern] ... as ...
# 446| getSubPattern(): [NamedPattern] x
# 446| getTypeRepr(): [TypeRepr] Int
# 446| getMember(1): [ConcreteVarDecl] x
# 446| Type = Int
# 446| getAccessor(0): [Accessor] get
# 446| InterfaceType = (B) -> () -> Int
# 446| getSelfParam(): [ParamDecl] self
# 446| Type = B
# 446| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
# 446| getAccessor(1): [Accessor] set
# 446| InterfaceType = (inout B) -> (Int) -> ()
# 446| getSelfParam(): [ParamDecl] self
# 446| Type = B
# 446| getParam(0): [ParamDecl] value
# 446| Type = Int
# 446| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 446| getAccessor(2): [Accessor] _modify
# 446| InterfaceType = (inout B) -> () -> ()
# 446| getSelfParam(): [ParamDecl] self
# 446| Type = B
# 446| getBody(): [BraceStmt] { ... }
# 446| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 445| getMember(2): [Initializer] B.init(x:)
# 445| InterfaceType = (B.Type) -> (Int) -> B
# 445| getSelfParam(): [ParamDecl] self
# 445| Type = B
# 445| getParam(0): [ParamDecl] x
# 445| Type = Int
# 449| [StructDecl] A
# 450| getMember(0): [PatternBindingDecl] var ... = ...
# 450| getPattern(0): [TypedPattern] ... as ...
# 450| getSubPattern(): [NamedPattern] b
# 450| getTypeRepr(): [TypeRepr] B
# 450| getMember(1): [ConcreteVarDecl] b
# 450| Type = B
# 450| getAccessor(0): [Accessor] get
# 450| InterfaceType = (A) -> () -> B
# 450| getSelfParam(): [ParamDecl] self
# 450| Type = A
# 450| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .b
#-----| getBase(): [DeclRefExpr] self
# 450| getAccessor(1): [Accessor] set
# 450| InterfaceType = (inout A) -> (B) -> ()
# 450| getSelfParam(): [ParamDecl] self
# 450| Type = A
# 450| getParam(0): [ParamDecl] value
# 450| Type = B
# 450| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .b
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 450| getAccessor(2): [Accessor] _modify
# 450| InterfaceType = (inout A) -> () -> ()
# 450| getSelfParam(): [ParamDecl] self
# 450| Type = A
# 450| getBody(): [BraceStmt] { ... }
# 450| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .b
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 451| getMember(2): [PatternBindingDecl] var ... = ...
# 451| getPattern(0): [TypedPattern] ... as ...
# 451| getSubPattern(): [NamedPattern] bs
# 451| getTypeRepr(): [TypeRepr] [B]
# 451| getMember(3): [ConcreteVarDecl] bs
# 451| Type = [B]
# 451| getAccessor(0): [Accessor] get
# 451| InterfaceType = (A) -> () -> [B]
# 451| getSelfParam(): [ParamDecl] self
# 451| Type = A
# 451| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .bs
#-----| getBase(): [DeclRefExpr] self
# 451| getAccessor(1): [Accessor] set
# 451| InterfaceType = (inout A) -> ([B]) -> ()
# 451| getSelfParam(): [ParamDecl] self
# 451| Type = A
# 451| getParam(0): [ParamDecl] value
# 451| Type = [B]
# 451| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .bs
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 451| getAccessor(2): [Accessor] _modify
# 451| InterfaceType = (inout A) -> () -> ()
# 451| getSelfParam(): [ParamDecl] self
# 451| Type = A
# 451| getBody(): [BraceStmt] { ... }
# 451| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .bs
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 452| getMember(4): [PatternBindingDecl] var ... = ...
#-----| getInit(0): [NilLiteralExpr] nil
# 452| getPattern(0): [TypedPattern] ... as ...
# 452| getSubPattern(): [NamedPattern] mayB
# 452| getTypeRepr(): [TypeRepr] B?
# 452| getMember(5): [ConcreteVarDecl] mayB
# 452| Type = B?
# 452| getAccessor(0): [Accessor] get
# 452| InterfaceType = (A) -> () -> B?
# 452| getSelfParam(): [ParamDecl] self
# 452| Type = A
# 452| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .mayB
#-----| getBase(): [DeclRefExpr] self
# 452| getAccessor(1): [Accessor] set
# 452| InterfaceType = (inout A) -> (B?) -> ()
# 452| getSelfParam(): [ParamDecl] self
# 452| Type = A
# 452| getParam(0): [ParamDecl] value
# 452| Type = B?
# 452| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .mayB
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 452| getAccessor(2): [Accessor] _modify
# 452| InterfaceType = (inout A) -> () -> ()
# 452| getSelfParam(): [ParamDecl] self
# 452| Type = A
# 452| getBody(): [BraceStmt] { ... }
# 452| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .mayB
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 449| getMember(6): [Initializer] A.init(b:bs:mayB:)
# 449| InterfaceType = (A.Type) -> (B, [B], B?) -> A
# 449| getSelfParam(): [ParamDecl] self
# 449| Type = A
# 449| getParam(0): [ParamDecl] b
# 449| Type = B
# 449| getParam(1): [ParamDecl] bs
# 449| Type = [B]
# 449| getParam(2): [ParamDecl] mayB
# 449| Type = B?
# 455| [NamedFunction] test(a:)
# 455| InterfaceType = (A) -> ()
# 455| getParam(0): [ParamDecl] a
# 455| Type = A
# 455| getBody(): [BraceStmt] { ... }
# 456| getVariable(0): [ConcreteVarDecl] kpGet_b_x
# 456| Type = WritableKeyPath<A, Int>
# 457| getVariable(1): [ConcreteVarDecl] kpGet_bs_0_x
# 457| Type = WritableKeyPath<A, Int>
# 458| getVariable(2): [ConcreteVarDecl] kpGet_mayB_force_x
# 458| Type = WritableKeyPath<A, Int>
# 459| getVariable(3): [ConcreteVarDecl] kpGet_mayB_x
# 459| Type = KeyPath<A, Int?>
# 461| getVariable(4): [ConcreteVarDecl] apply_kpGet_b_x
# 461| Type = Int
# 462| getVariable(5): [ConcreteVarDecl] apply_kpGet_bs_0_x
# 462| Type = Int
# 463| getVariable(6): [ConcreteVarDecl] apply_kpGet_mayB_force_x
# 463| Type = Int
# 464| getVariable(7): [ConcreteVarDecl] apply_kpGet_mayB_x
# 464| Type = Int?
# 456| getElement(0): [PatternBindingDecl] var ... = ...
# 456| getInit(0): [KeyPathExpr] #keyPath(...)
# 456| getRoot(): [TypeRepr] A
# 456| getComponent(0): [KeyPathComponent] KeyPathComponent
# 456| getComponent(1): [KeyPathComponent] KeyPathComponent
# 456| getPattern(0): [NamedPattern] kpGet_b_x
# 457| getElement(1): [PatternBindingDecl] var ... = ...
# 457| getInit(0): [KeyPathExpr] #keyPath(...)
# 457| getRoot(): [TypeRepr] A
# 457| getComponent(0): [KeyPathComponent] KeyPathComponent
# 457| getComponent(1): [KeyPathComponent] KeyPathComponent
# 457| getSubscriptArgument(0): [Argument] : 0
# 457| getExpr(): [IntegerLiteralExpr] 0
# 457| getComponent(2): [KeyPathComponent] KeyPathComponent
# 457| getPattern(0): [NamedPattern] kpGet_bs_0_x
# 458| getElement(2): [PatternBindingDecl] var ... = ...
# 458| getInit(0): [KeyPathExpr] #keyPath(...)
# 458| getRoot(): [TypeRepr] A
# 458| getComponent(0): [KeyPathComponent] KeyPathComponent
# 458| getComponent(1): [KeyPathComponent] KeyPathComponent
# 458| getComponent(2): [KeyPathComponent] KeyPathComponent
# 458| getPattern(0): [NamedPattern] kpGet_mayB_force_x
# 459| getElement(3): [PatternBindingDecl] var ... = ...
# 459| getInit(0): [KeyPathExpr] #keyPath(...)
# 459| getRoot(): [TypeRepr] A
# 459| getComponent(0): [KeyPathComponent] KeyPathComponent
# 459| getComponent(1): [KeyPathComponent] KeyPathComponent
# 459| getComponent(2): [KeyPathComponent] KeyPathComponent
#-----| getComponent(3): [KeyPathComponent] KeyPathComponent
# 459| getPattern(0): [NamedPattern] kpGet_mayB_x
# 461| getElement(4): [PatternBindingDecl] var ... = ...
# 461| getInit(0): [KeyPathApplicationExpr] \...[...]
# 461| getBase(): [DeclRefExpr] a
# 461| getKeyPath(): [DeclRefExpr] kpGet_b_x
# 461| getKeyPath().getFullyConverted(): [LoadExpr] (WritableKeyPath<A, Int>) ...
# 461| getPattern(0): [NamedPattern] apply_kpGet_b_x
# 462| getElement(5): [PatternBindingDecl] var ... = ...
# 462| getInit(0): [KeyPathApplicationExpr] \...[...]
# 462| getBase(): [DeclRefExpr] a
# 462| getKeyPath(): [DeclRefExpr] kpGet_bs_0_x
# 462| getKeyPath().getFullyConverted(): [LoadExpr] (WritableKeyPath<A, Int>) ...
# 462| getPattern(0): [NamedPattern] apply_kpGet_bs_0_x
# 463| getElement(6): [PatternBindingDecl] var ... = ...
# 463| getInit(0): [KeyPathApplicationExpr] \...[...]
# 463| getBase(): [DeclRefExpr] a
# 463| getKeyPath(): [DeclRefExpr] kpGet_mayB_force_x
# 463| getKeyPath().getFullyConverted(): [LoadExpr] (WritableKeyPath<A, Int>) ...
# 463| getPattern(0): [NamedPattern] apply_kpGet_mayB_force_x
# 464| getElement(7): [PatternBindingDecl] var ... = ...
# 464| getInit(0): [KeyPathApplicationExpr] \...[...]
# 464| getBase(): [DeclRefExpr] a
# 464| getKeyPath(): [DeclRefExpr] kpGet_mayB_x
# 464| getKeyPath().getFullyConverted(): [LoadExpr] (KeyPath<A, Int?>) ...
# 464| getPattern(0): [NamedPattern] apply_kpGet_mayB_x
# 467| [NamedFunction] testIfConfig()
# 467| InterfaceType = () -> ()
# 467| getBody(): [BraceStmt] { ... }
# 472| getElement(0): [IntegerLiteralExpr] 3
# 473| getElement(1): [IntegerLiteralExpr] 4
# 476| getElement(2): [IntegerLiteralExpr] 5
# 483| getElement(3): [IntegerLiteralExpr] 8
# 489| getElement(4): [IntegerLiteralExpr] 11
# 490| getElement(5): [IntegerLiteralExpr] 12
# 493| getElement(6): [IntegerLiteralExpr] 13
# 496| [NamedFunction] testAvailable()
# 496| InterfaceType = () -> Int
# 496| getBody(): [BraceStmt] { ... }
# 497| getVariable(0): [ConcreteVarDecl] x
# 497| Type = Int
# 497| getElement(0): [PatternBindingDecl] var ... = ...
# 497| getInit(0): [IntegerLiteralExpr] 0
# 497| getPattern(0): [NamedPattern] x
# 499| getElement(1): [IfStmt] if ... then { ... }
# 499| getCondition(): [StmtCondition] StmtCondition
# 499| getElement(0): [ConditionElement] #available
# 499| getAvailability(): [AvailabilityInfo] #available
# 499| getSpec(0): [PlatformVersionAvailabilitySpec] macOS 10
# 499| getSpec(1): [OtherAvailabilitySpec] *
# 499| getThen(): [BraceStmt] { ... }
# 500| getElement(0): [BinaryExpr] ... .+=(_:_:) ...
# 500| getFunction(): [MethodLookupExpr] .+=(_:_:)
# 500| getBase(): [TypeExpr] Int.Type
# 500| getTypeRepr(): [TypeRepr] Int
# 500| getMethodRef(): [DeclRefExpr] +=(_:_:)
# 500| getArgument(0): [Argument] : x
# 500| getExpr(): [DeclRefExpr] x
# 500| getExpr().getFullyConverted(): [InOutExpr] &...
# 500| getArgument(1): [Argument] : 1
# 500| getExpr(): [IntegerLiteralExpr] 1
# 503| getElement(2): [IfStmt] if ... then { ... }
# 503| getCondition(): [StmtCondition] StmtCondition
# 503| getElement(0): [ConditionElement] #available
# 503| getAvailability(): [AvailabilityInfo] #available
# 503| getSpec(0): [PlatformVersionAvailabilitySpec] macOS 10.13
# 503| getSpec(1): [OtherAvailabilitySpec] *
# 503| getThen(): [BraceStmt] { ... }
# 504| getElement(0): [BinaryExpr] ... .+=(_:_:) ...
# 504| getFunction(): [MethodLookupExpr] .+=(_:_:)
# 504| getBase(): [TypeExpr] Int.Type
# 504| getTypeRepr(): [TypeRepr] Int
# 504| getMethodRef(): [DeclRefExpr] +=(_:_:)
# 504| getArgument(0): [Argument] : x
# 504| getExpr(): [DeclRefExpr] x
# 504| getExpr().getFullyConverted(): [InOutExpr] &...
# 504| getArgument(1): [Argument] : 1
# 504| getExpr(): [IntegerLiteralExpr] 1
# 507| getElement(3): [IfStmt] if ... then { ... }
# 507| getCondition(): [StmtCondition] StmtCondition
# 507| getElement(0): [ConditionElement] #unavailable
# 507| getAvailability(): [AvailabilityInfo] #unavailable
# 507| getSpec(0): [PlatformVersionAvailabilitySpec] iOS 10
# 507| getSpec(1): [PlatformVersionAvailabilitySpec] watchOS 10
# 507| getSpec(2): [PlatformVersionAvailabilitySpec] macOS 10
# 507| getThen(): [BraceStmt] { ... }
# 508| getElement(0): [BinaryExpr] ... .+=(_:_:) ...
# 508| getFunction(): [MethodLookupExpr] .+=(_:_:)
# 508| getBase(): [TypeExpr] Int.Type
# 508| getTypeRepr(): [TypeRepr] Int
# 508| getMethodRef(): [DeclRefExpr] +=(_:_:)
# 508| getArgument(0): [Argument] : x
# 508| getExpr(): [DeclRefExpr] x
# 508| getExpr().getFullyConverted(): [InOutExpr] &...
# 508| getArgument(1): [Argument] : 1
# 508| getExpr(): [IntegerLiteralExpr] 1
# 511| getElement(4): [GuardStmt] guard ... else { ... }
# 511| getCondition(): [StmtCondition] StmtCondition
# 511| getElement(0): [ConditionElement] #available
# 511| getAvailability(): [AvailabilityInfo] #available
# 511| getSpec(0): [PlatformVersionAvailabilitySpec] macOS 12
# 511| getSpec(1): [OtherAvailabilitySpec] *
# 511| getBody(): [BraceStmt] { ... }
# 512| getElement(0): [BinaryExpr] ... .+=(_:_:) ...
# 512| getFunction(): [MethodLookupExpr] .+=(_:_:)
# 512| getBase(): [TypeExpr] Int.Type
# 512| getTypeRepr(): [TypeRepr] Int
# 512| getMethodRef(): [DeclRefExpr] +=(_:_:)
# 512| getArgument(0): [Argument] : x
# 512| getExpr(): [DeclRefExpr] x
# 512| getExpr().getFullyConverted(): [InOutExpr] &...
# 512| getArgument(1): [Argument] : 1
# 512| getExpr(): [IntegerLiteralExpr] 1
# 515| getElement(5): [IfStmt] if ... then { ... }
# 515| getCondition(): [StmtCondition] StmtCondition
# 515| getElement(0): [ConditionElement] #available
# 515| getAvailability(): [AvailabilityInfo] #available
# 515| getSpec(0): [PlatformVersionAvailabilitySpec] macOS 12
# 515| getSpec(1): [OtherAvailabilitySpec] *
# 515| getElement(1): [ConditionElement] #available
# 515| getAvailability(): [AvailabilityInfo] #available
# 515| getSpec(0): [PlatformVersionAvailabilitySpec] iOS 12
# 515| getSpec(1): [OtherAvailabilitySpec] *
# 515| getThen(): [BraceStmt] { ... }
# 516| getElement(0): [BinaryExpr] ... .+=(_:_:) ...
# 516| getFunction(): [MethodLookupExpr] .+=(_:_:)
# 516| getBase(): [TypeExpr] Int.Type
# 516| getTypeRepr(): [TypeRepr] Int
# 516| getMethodRef(): [DeclRefExpr] +=(_:_:)
# 516| getArgument(0): [Argument] : x
# 516| getExpr(): [DeclRefExpr] x
# 516| getExpr().getFullyConverted(): [InOutExpr] &...
# 516| getArgument(1): [Argument] : 1
# 516| getExpr(): [IntegerLiteralExpr] 1
# 519| getElement(6): [ReturnStmt] return ...
# 519| getResult(): [DeclRefExpr] x
# 519| getResult().getFullyConverted(): [LoadExpr] (Int) ...
# 522| [NamedFunction] testAsyncFor()
# 522| InterfaceType = () async -> ()
# 522| getBody(): [BraceStmt] { ... }
# 523| getVariable(0): [ConcreteVarDecl] stream
# 523| Type = AsyncStream<Int>
# 523| getElement(0): [PatternBindingDecl] var ... = ...
# 523| getInit(0): [CallExpr] call to AsyncStream<Element>.init(_:bufferingPolicy:_:)
# 523| getFunction(): [MethodLookupExpr] AsyncStream<Element>.init(_:bufferingPolicy:_:)
# 523| getBase(): [TypeExpr] AsyncStream<Int>.Type
# 523| getTypeRepr(): [TypeRepr] AsyncStream<Int>
# 523| getMethodRef(): [DeclRefExpr] AsyncStream<Element>.init(_:bufferingPolicy:_:)
# 523| getArgument(0): [Argument] : Int.Type
# 523| getExpr(): [TypeExpr] Int.Type
# 523| getTypeRepr(): [TypeRepr] Int
# 523| getExpr().getFullyConverted(): [DotSelfExpr] .self
# 523| getArgument(1): [Argument] bufferingPolicy: call to ...
# 523| getExpr(): [CallExpr] call to ...
# 523| getFunction(): [MethodLookupExpr] .bufferingNewest
# 523| getBase(): [TypeExpr] AsyncStream<Int>.Continuation.BufferingPolicy.Type
# 523| getTypeRepr(): [TypeRepr] AsyncStream<Int>.Continuation.BufferingPolicy
# 523| getMethodRef(): [DeclRefExpr] bufferingNewest
# 523| getArgument(0): [Argument] : 5
# 523| getExpr(): [IntegerLiteralExpr] 5
# 523| getArgument(2): [Argument] : { ... }
# 523| getExpr(): [ExplicitClosureExpr] { ... }
# 524| getParam(0): [ParamDecl] continuation
# 524| Type = AsyncStream<Int>.Continuation
# 523| getBody(): [BraceStmt] { ... }
# 525| getElement(0): [CallExpr] call to detached(priority:operation:)
# 525| getFunction(): [MethodLookupExpr] .detached(priority:operation:)
# 525| getBase(): [TypeExpr] Task<(), Never>.Type
# 525| getTypeRepr(): [TypeRepr] Task<(), Never>
# 525| getMethodRef(): [DeclRefExpr] detached(priority:operation:)
# 525| getArgument(0): [Argument] priority: default priority
# 525| getExpr(): [DefaultArgumentExpr] default priority
# 525| getArgument(1): [Argument] operation: { ... }
# 525| getExpr(): [ExplicitClosureExpr] { ... }
# 525| getBody(): [BraceStmt] { ... }
# 526| getElement(0): [ForEachStmt] for ... in ... { ... }
# 526| getVariable(0): [ConcreteVarDecl] i
# 526| Type = Int
# 526| getVariable(1): [ConcreteVarDecl] $i$generator
# 526| Type = IndexingIterator<ClosedRange<Int>>
# 526| getPattern(): [NamedPattern] i
#-----| getIteratorVar(): [PatternBindingDecl] var ... = ...
# 526| getInit(0): [CallExpr] call to makeIterator()
# 526| getFunction(): [MethodLookupExpr] .makeIterator()
# 526| getBase(): [BinaryExpr] ... ....(_:_:) ...
# 526| getFunction(): [MethodLookupExpr] ....(_:_:)
# 526| getBase(): [TypeExpr] Int.Type
# 526| getTypeRepr(): [TypeRepr] Int
# 526| getMethodRef(): [DeclRefExpr] ...(_:_:)
# 526| getArgument(0): [Argument] : 1
# 526| getExpr(): [IntegerLiteralExpr] 1
# 526| getArgument(1): [Argument] : 100
# 526| getExpr(): [IntegerLiteralExpr] 100
#-----| getMethodRef(): [DeclRefExpr] makeIterator()
# 526| getPattern(0): [NamedPattern] $i$generator
# 526| getNextCall(): [CallExpr] call to next()
# 526| getFunction(): [MethodLookupExpr] .next()
# 526| getBase(): [DeclRefExpr] $i$generator
# 526| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] next()
# 526| getBody(): [BraceStmt] { ... }
# 527| getElement(0): [CallExpr] call to yield(_:)
# 527| getFunction(): [MethodLookupExpr] .yield(_:)
# 527| getBase(): [DeclRefExpr] continuation
# 527| getMethodRef(): [DeclRefExpr] yield(_:)
# 527| getArgument(0): [Argument] : i
# 527| getExpr(): [DeclRefExpr] i
# 529| getElement(1): [CallExpr] call to finish()
# 529| getFunction(): [MethodLookupExpr] .finish()
# 529| getBase(): [DeclRefExpr] continuation
# 529| getMethodRef(): [DeclRefExpr] finish()
# 527| getCapture(0): [CapturedDecl] continuation
# 525| getExpr().getFullyConverted(): [FunctionConversionExpr] (@isolated(any) () async -> ()) ...
# 523| getPattern(0): [NamedPattern] stream
# 533| getElement(1): [ForEachStmt] for ... in ... { ... }
# 533| getVariable(0): [ConcreteVarDecl] i
# 533| Type = Int
# 533| getVariable(1): [ConcreteVarDecl] $i$generator
# 533| Type = AsyncStream<Int>.Iterator
# 533| getPattern(): [NamedPattern] i
#-----| getIteratorVar(): [PatternBindingDecl] var ... = ...
# 533| getInit(0): [CallExpr] call to makeAsyncIterator()
# 533| getFunction(): [MethodLookupExpr] .makeAsyncIterator()
# 533| getBase(): [DeclRefExpr] stream
# 533| getBase().getFullyConverted(): [LoadExpr] (AsyncStream<Int>) ...
#-----| getMethodRef(): [DeclRefExpr] makeAsyncIterator()
# 533| getPattern(0): [NamedPattern] $i$generator
# 533| getNextCall(): [CallExpr] call to next(isolation:)
# 533| getFunction(): [MethodLookupExpr] .next(isolation:)
# 533| getBase(): [DeclRefExpr] $i$generator
# 533| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] next(isolation:)
# 533| getArgument(0): [Argument] isolation: CurrentContextIsolationExpr
# 533| getExpr(): [CurrentContextIsolationExpr] CurrentContextIsolationExpr
# 533| getNextCall().getFullyConverted(): [AwaitExpr] await ...
# 533| getBody(): [BraceStmt] { ... }
# 534| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 534| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 534| getArgument(0): [Argument] : [...]
# 534| getExpr(): [VarargExpansionExpr] [...]
# 534| getSubExpr(): [ArrayExpr] [...]
# 534| getElement(0): [DeclRefExpr] i
# 534| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 534| getArgument(1): [Argument] separator: default separator
# 534| getExpr(): [DefaultArgumentExpr] default separator
# 534| getArgument(2): [Argument] terminator: default terminator
# 534| getExpr(): [DefaultArgumentExpr] default terminator
# 525| [NilLiteralExpr] nil
# 533| [NilLiteralExpr] nil
# 538| [NamedFunction] testNilCoalescing(x:)
# 538| InterfaceType = (Int?) -> Int
# 538| getParam(0): [ParamDecl] x
# 538| Type = Int?
# 538| getBody(): [BraceStmt] { ... }
# 539| getElement(0): [ReturnStmt] return ...
# 539| getResult(): [BinaryExpr] ... ??(_:_:) ...
# 539| getFunction(): [DeclRefExpr] ??(_:_:)
# 539| getArgument(0): [Argument] : x
# 539| getExpr(): [DeclRefExpr] x
# 539| getArgument(1): [Argument] : { ... }
# 539| getExpr(): [AutoClosureExpr] { ... }
# 539| getBody(): [BraceStmt] { ... }
# 539| getElement(0): [ReturnStmt] return ...
# 539| getResult(): [IntegerLiteralExpr] 0
# 542| [NamedFunction] testNilCoalescing2(x:)
# 542| InterfaceType = (Bool?) -> Int
# 542| getParam(0): [ParamDecl] x
# 542| Type = Bool?
# 542| getBody(): [BraceStmt] { ... }
# 543| getElement(0): [IfStmt] if ... then { ... } else { ... }
# 543| getCondition(): [StmtCondition] StmtCondition
# 543| getElement(0): [ConditionElement] ... ??(_:_:) ...
# 543| getBoolean(): [BinaryExpr] ... ??(_:_:) ...
# 543| getFunction(): [DeclRefExpr] ??(_:_:)
# 543| getArgument(0): [Argument] : x
# 543| getExpr(): [DeclRefExpr] x
# 543| getArgument(1): [Argument] : { ... }
# 543| getExpr(): [AutoClosureExpr] { ... }
# 543| getBody(): [BraceStmt] { ... }
# 543| getElement(0): [ReturnStmt] return ...
# 543| getResult(): [BooleanLiteralExpr] false
# 543| getThen(): [BraceStmt] { ... }
# 544| getElement(0): [ReturnStmt] return ...
# 544| getResult(): [IntegerLiteralExpr] 1
# 545| getElse(): [BraceStmt] { ... }
# 546| getElement(0): [ReturnStmt] return ...
# 546| getResult(): [IntegerLiteralExpr] 0
# 550| [NamedFunction] usesAutoclosure(_:)
# 550| InterfaceType = (@autoclosure () -> Int) -> Int
# 550| getParam(0): [ParamDecl] expr
# 550| Type = () -> Int
# 550| getBody(): [BraceStmt] { ... }
# 551| getElement(0): [ReturnStmt] return ...
# 551| getResult(): [CallExpr] call to ...
# 551| getFunction(): [DeclRefExpr] expr
# 554| [NamedFunction] autoclosureTest()
# 554| InterfaceType = () -> ()
# 554| getBody(): [BraceStmt] { ... }
# 555| getElement(0): [CallExpr] call to usesAutoclosure(_:)
# 555| getFunction(): [DeclRefExpr] usesAutoclosure(_:)
# 555| getArgument(0): [Argument] : { ... }
# 555| getExpr(): [AutoClosureExpr] { ... }
# 555| getBody(): [BraceStmt] { ... }
# 555| getElement(0): [ReturnStmt] return ...
# 555| getResult(): [IntegerLiteralExpr] 1
# 558| [Comment] // ---
# 558|
# 560| [ProtocolDecl] MyProtocol
#-----| getGenericTypeParam(0): [GenericTypeParamDecl] Self
# 561| getMember(0): [NamedFunction] source()
# 561| InterfaceType = <Self where Self : MyProtocol> (Self) -> () -> Int
# 561| getSelfParam(): [ParamDecl] self
# 561| Type = Self
# 564| [ClassDecl] MyProcotolImpl
# 565| getMember(0): [NamedFunction] source()
# 565| InterfaceType = (MyProcotolImpl) -> () -> Int
# 565| getSelfParam(): [ParamDecl] self
# 565| Type = MyProcotolImpl
# 565| getBody(): [BraceStmt] { ... }
# 565| getElement(0): [ReturnStmt] return ...
# 565| getResult(): [IntegerLiteralExpr] 0
# 564| getMember(1): [Deinitializer] MyProcotolImpl.deinit()
# 564| InterfaceType = (MyProcotolImpl) -> () -> ()
# 564| getSelfParam(): [ParamDecl] self
# 564| Type = MyProcotolImpl
# 564| getBody(): [BraceStmt] { ... }
# 564| getMember(2): [Initializer] MyProcotolImpl.init()
# 564| InterfaceType = (MyProcotolImpl.Type) -> () -> MyProcotolImpl
# 564| getSelfParam(): [ParamDecl] self
# 564| Type = MyProcotolImpl
# 564| getBody(): [BraceStmt] { ... }
# 564| getElement(0): [ReturnStmt] return
# 568| [NamedFunction] getMyProtocol()
# 568| InterfaceType = () -> any MyProtocol
# 568| getBody(): [BraceStmt] { ... }
# 568| getElement(0): [ReturnStmt] return ...
# 568| getResult(): [CallExpr] call to MyProcotolImpl.init()
# 568| getFunction(): [MethodLookupExpr] MyProcotolImpl.init()
# 568| getBase(): [TypeExpr] MyProcotolImpl.Type
# 568| getTypeRepr(): [TypeRepr] MyProcotolImpl
# 568| getMethodRef(): [DeclRefExpr] MyProcotolImpl.init()
# 568| getResult().getFullyConverted(): [ErasureExpr] (any MyProtocol) ...
# 569| [NamedFunction] getMyProtocolImpl()
# 569| InterfaceType = () -> MyProcotolImpl
# 569| getBody(): [BraceStmt] { ... }
# 569| getElement(0): [ReturnStmt] return ...
# 569| getResult(): [CallExpr] call to MyProcotolImpl.init()
# 569| getFunction(): [MethodLookupExpr] MyProcotolImpl.init()
# 569| getBase(): [TypeExpr] MyProcotolImpl.Type
# 569| getTypeRepr(): [TypeRepr] MyProcotolImpl
# 569| getMethodRef(): [DeclRefExpr] MyProcotolImpl.init()
# 571| [NamedFunction] sink(arg:)
# 571| InterfaceType = (Int) -> ()
# 571| getParam(0): [ParamDecl] arg
# 571| Type = Int
# 571| getBody(): [BraceStmt] { ... }
# 573| [NamedFunction] testOpenExistentialExpr(x:y:)
# 573| InterfaceType = (any MyProtocol, MyProcotolImpl) -> ()
# 573| getParam(0): [ParamDecl] x
# 573| Type = any MyProtocol
# 573| getParam(1): [ParamDecl] y
# 573| Type = MyProcotolImpl
# 573| getBody(): [BraceStmt] { ... }
# 574| getElement(0): [CallExpr] call to sink(arg:)
# 574| getFunction(): [DeclRefExpr] sink(arg:)
# 574| getArgument(0): [Argument] arg: OpenExistentialExpr
# 574| getExpr(): [OpenExistentialExpr] OpenExistentialExpr
# 574| getSubExpr(): [CallExpr] call to source()
# 574| getFunction(): [MethodLookupExpr] .source()
# 574| getBase(): [OpaqueValueExpr] OpaqueValueExpr
# 574| getMethodRef(): [DeclRefExpr] source()
# 574| getExistential(): [DeclRefExpr] x
# 575| getElement(1): [CallExpr] call to sink(arg:)
# 575| getFunction(): [DeclRefExpr] sink(arg:)
# 575| getArgument(0): [Argument] arg: call to source()
# 575| getExpr(): [CallExpr] call to source()
# 575| getFunction(): [MethodLookupExpr] .source()
# 575| getBase(): [DeclRefExpr] y
# 575| getMethodRef(): [DeclRefExpr] source()
# 576| getElement(2): [CallExpr] call to sink(arg:)
# 576| getFunction(): [DeclRefExpr] sink(arg:)
# 576| getArgument(0): [Argument] arg: OpenExistentialExpr
# 576| getExpr(): [OpenExistentialExpr] OpenExistentialExpr
# 576| getSubExpr(): [CallExpr] call to source()
# 576| getFunction(): [MethodLookupExpr] .source()
# 576| getBase(): [OpaqueValueExpr] OpaqueValueExpr
# 576| getMethodRef(): [DeclRefExpr] source()
# 576| getExistential(): [CallExpr] call to getMyProtocol()
# 576| getFunction(): [DeclRefExpr] getMyProtocol()
# 577| getElement(3): [CallExpr] call to sink(arg:)
# 577| getFunction(): [DeclRefExpr] sink(arg:)
# 577| getArgument(0): [Argument] arg: call to source()
# 577| getExpr(): [CallExpr] call to source()
# 577| getFunction(): [MethodLookupExpr] .source()
# 577| getBase(): [CallExpr] call to getMyProtocolImpl()
# 577| getFunction(): [DeclRefExpr] getMyProtocolImpl()
# 577| getMethodRef(): [DeclRefExpr] source()
# 580| [NamedFunction] singleStmtExpr(_:)
# 580| InterfaceType = (Int) -> ()
# 580| getParam(0): [ParamDecl] x
# 580| Type = Int
# 580| getBody(): [BraceStmt] { ... }
# 581| getVariable(0): [ConcreteVarDecl] a
# 581| Type = Int
# 585| getVariable(1): [ConcreteVarDecl] b
# 585| Type = Int
# 581| getElement(0): [PatternBindingDecl] var ... = ...
# 581| getInit(0): [SingleValueStmtExpr] SingleValueStmtExpr
# 581| getStmt(): [SwitchStmt] switch x { ... }
# 581| getExpr(): [DeclRefExpr] x
# 582| getCase(0): [CaseStmt] case ...
# 582| getLabel(0): [CaseLabelItem] =~ ...
# 582| getPattern(): [ExprPattern] =~ ...
# 582| getSubExpr(): [BinaryExpr] ... .~=(_:_:) ...
# 582| getFunction(): [MethodLookupExpr] .~=(_:_:)
# 582| getBase(): [TypeExpr] Range<Int>.Type
# 582| getTypeRepr(): [TypeRepr] Range<Int>
# 582| getMethodRef(): [DeclRefExpr] ~=(_:_:)
# 582| getArgument(0): [Argument] : ... ...<(_:_:) ...
# 582| getExpr(): [BinaryExpr] ... ...<(_:_:) ...
# 582| getFunction(): [MethodLookupExpr] ...<(_:_:)
# 582| getBase(): [TypeExpr] Int.Type
# 582| getTypeRepr(): [TypeRepr] Int
# 582| getMethodRef(): [DeclRefExpr] ..<(_:_:)
# 582| getArgument(0): [Argument] : 0
# 582| getExpr(): [IntegerLiteralExpr] 0
# 582| getArgument(1): [Argument] : 5
# 582| getExpr(): [IntegerLiteralExpr] 5
# 582| getArgument(1): [Argument] : $match
# 582| getExpr(): [DeclRefExpr] $match
# 582| getBody(): [BraceStmt] { ... }
# 582| getElement(0): [ThenStmt] ThenStmt
# 582| getResult(): [IntegerLiteralExpr] 1
# 583| getCase(1): [CaseStmt] case ...
# 583| getLabel(0): [CaseLabelItem] _
# 583| getPattern(): [AnyPattern] _
# 583| getBody(): [BraceStmt] { ... }
# 583| getElement(0): [ThenStmt] ThenStmt
# 583| getResult(): [IntegerLiteralExpr] 2
# 581| getPattern(0): [NamedPattern] a
# 585| getElement(1): [PatternBindingDecl] var ... = ...
# 585| getInit(0): [SingleValueStmtExpr] SingleValueStmtExpr
# 585| getStmt(): [IfStmt] if ... then { ... } else { ... }
# 585| getCondition(): [StmtCondition] StmtCondition
# 585| getElement(0): [ConditionElement] ... .<(_:_:) ...
# 585| getBoolean(): [BinaryExpr] ... .<(_:_:) ...
# 585| getFunction(): [MethodLookupExpr] .<(_:_:)
# 585| getBase(): [TypeExpr] Int.Type
# 585| getTypeRepr(): [TypeRepr] Int
# 585| getMethodRef(): [DeclRefExpr] <(_:_:)
# 585| getArgument(0): [Argument] : x
# 585| getExpr(): [DeclRefExpr] x
# 585| getArgument(1): [Argument] : 42
# 585| getExpr(): [IntegerLiteralExpr] 42
# 585| getBoolean().getFullyConverted(): [ParenExpr] (...)
# 585| getThen(): [BraceStmt] { ... }
# 585| getElement(0): [ThenStmt] ThenStmt
# 585| getResult(): [IntegerLiteralExpr] 1
# 585| getElse(): [BraceStmt] { ... }
# 585| getElement(0): [ThenStmt] ThenStmt
# 585| getResult(): [IntegerLiteralExpr] 2
# 585| getPattern(0): [NamedPattern] b
# 582| [ConcreteVarDecl] $match
# 582| Type = Int
# 587| [Comment] // ---
# 587|
# 589| [Comment] //codeql-extractor-options: -enable-experimental-feature ValueGenerics -disable-availability-checking
# 589|
# 590| [StructDecl] ValueGenericsStruct
# 590| getGenericTypeParam(0): [GenericTypeParamDecl] N
# 591| getMember(0): [PatternBindingDecl] var ... = ...
# 591| getInit(0): [TypeValueExpr] TypeValueExpr
# 591| getTypeRepr(): [TypeRepr] N
# 591| getPattern(0): [NamedPattern] x
# 591| getMember(1): [ConcreteVarDecl] x
# 591| Type = Int
# 591| getAccessor(0): [Accessor] get
# 591| InterfaceType = <let N : Int> (ValueGenericsStruct<N>) -> () -> Int
# 591| getSelfParam(): [ParamDecl] self
# 591| Type = ValueGenericsStruct<N>
# 591| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
# 591| getAccessor(1): [Accessor] set
# 591| InterfaceType = <let N : Int> (inout ValueGenericsStruct<N>) -> (Int) -> ()
# 591| getSelfParam(): [ParamDecl] self
# 591| Type = ValueGenericsStruct<N>
# 591| getParam(0): [ParamDecl] value
# 591| Type = Int
# 591| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 591| getAccessor(2): [Accessor] _modify
# 591| InterfaceType = <let N : Int> (inout ValueGenericsStruct<N>) -> () -> ()
# 591| getSelfParam(): [ParamDecl] self
# 591| Type = ValueGenericsStruct<N>
# 591| getBody(): [BraceStmt] { ... }
# 591| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 590| getMember(2): [Initializer] ValueGenericsStruct<N>.init(x:)
# 590| InterfaceType = <let N : Int> (ValueGenericsStruct<N>.Type) -> (Int) -> ValueGenericsStruct<N>
# 590| getSelfParam(): [ParamDecl] self
# 590| Type = ValueGenericsStruct<N>
# 590| getParam(0): [ParamDecl] x
# 590| Type = Int
# 590| getMember(3): [Initializer] ValueGenericsStruct<N>.init()
# 590| InterfaceType = <let N : Int> (ValueGenericsStruct<N>.Type) -> () -> ValueGenericsStruct<N>
# 590| getSelfParam(): [ParamDecl] self
# 590| Type = ValueGenericsStruct<N>
# 590| getBody(): [BraceStmt] { ... }
# 590| getElement(0): [ReturnStmt] return
# 594| [NamedFunction] valueGenericsFn(_:)
# 594| InterfaceType = <let N : Int> (ValueGenericsStruct<N>) -> ()
# 594| getGenericTypeParam(0): [GenericTypeParamDecl] N
# 594| getParam(0): [ParamDecl] value
# 594| Type = ValueGenericsStruct<N>
# 594| getBody(): [BraceStmt] { ... }
# 595| getVariable(0): [ConcreteVarDecl] x
# 595| Type = Int
# 595| getElement(0): [PatternBindingDecl] var ... = ...
# 595| getInit(0): [TypeValueExpr] TypeValueExpr
# 595| getTypeRepr(): [TypeRepr] N
# 595| getPattern(0): [NamedPattern] x
# 596| getElement(1): [CallExpr] call to print(_:separator:terminator:)
# 596| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 596| getArgument(0): [Argument] : [...]
# 596| getExpr(): [VarargExpansionExpr] [...]
# 596| getSubExpr(): [ArrayExpr] [...]
# 596| getElement(0): [DeclRefExpr] x
# 596| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 596| getSubExpr(): [LoadExpr] (Int) ...
# 596| getArgument(1): [Argument] separator: default separator
# 596| getExpr(): [DefaultArgumentExpr] default separator
# 596| getArgument(2): [Argument] terminator: default terminator
# 596| getExpr(): [DefaultArgumentExpr] default terminator
# 597| getElement(2): [AssignExpr] ... = ...
# 597| getDest(): [DiscardAssignmentExpr] _
# 597| getSource(): [DeclRefExpr] value
declarations.swift:
# 1| [StructDecl] Foo
# 2| getMember(0): [PatternBindingDecl] var ... = ...
# 2| getInit(0): [IntegerLiteralExpr] 11
# 2| getPattern(0): [NamedPattern] x
# 2| getMember(1): [ConcreteVarDecl] x
# 2| Type = Int
# 2| getAccessor(0): [Accessor] get
# 2| InterfaceType = (Foo) -> () -> Int
# 2| getSelfParam(): [ParamDecl] self
# 2| Type = Foo
# 2| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
# 2| getAccessor(1): [Accessor] set
# 2| InterfaceType = (inout Foo) -> (Int) -> ()
# 2| getSelfParam(): [ParamDecl] self
# 2| Type = Foo
# 2| getParam(0): [ParamDecl] value
# 2| Type = Int
# 2| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 2| getAccessor(2): [Accessor] _modify
# 2| InterfaceType = (inout Foo) -> () -> ()
# 2| getSelfParam(): [ParamDecl] self
# 2| Type = Foo
# 2| getBody(): [BraceStmt] { ... }
# 2| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 3| getMember(2): [PatternBindingDecl] var ... = ...
# 3| getPattern(0): [TypedPattern] ... as ...
# 3| getSubPattern(): [NamedPattern] next
# 3| getTypeRepr(): [TypeRepr] Int
# 3| getMember(3): [ConcreteVarDecl] next
# 3| Type = Int
# 4| getAccessor(0): [Accessor] get
# 4| InterfaceType = (Foo) -> () -> Int
# 4| getSelfParam(): [ParamDecl] self
# 4| Type = Foo
# 4| getBody(): [BraceStmt] { ... }
# 4| getElement(0): [ReturnStmt] return ...
# 4| getResult(): [BinaryExpr] ... .+(_:_:) ...
# 4| getFunction(): [MethodLookupExpr] .+(_:_:)
# 4| getBase(): [TypeExpr] Int.Type
# 4| getTypeRepr(): [TypeRepr] Int
# 4| getMethodRef(): [DeclRefExpr] +(_:_:)
# 4| getArgument(0): [Argument] : .x
# 4| getExpr(): [MemberRefExpr] .x
# 4| getBase(): [DeclRefExpr] self
# 4| getArgument(1): [Argument] : 1
# 4| getExpr(): [IntegerLiteralExpr] 1
# 5| getAccessor(1): [Accessor] set
# 5| InterfaceType = (inout Foo) -> (Int) -> ()
# 5| getSelfParam(): [ParamDecl] self
# 5| Type = Foo
# 5| getParam(0): [ParamDecl] newValue
# 5| Type = Int
# 5| getBody(): [BraceStmt] { ... }
# 5| getElement(0): [AssignExpr] ... = ...
# 5| getDest(): [MemberRefExpr] .x
# 5| getBase(): [DeclRefExpr] self
# 5| getSource(): [BinaryExpr] ... .-(_:_:) ...
# 5| getFunction(): [MethodLookupExpr] .-(_:_:)
# 5| getBase(): [TypeExpr] Int.Type
# 5| getTypeRepr(): [TypeRepr] Int
# 5| getMethodRef(): [DeclRefExpr] -(_:_:)
# 5| getArgument(0): [Argument] : newValue
# 5| getExpr(): [DeclRefExpr] newValue
# 5| getArgument(1): [Argument] : 1
# 5| getExpr(): [IntegerLiteralExpr] 1
# 3| getAccessor(2): [Accessor] _modify
# 3| InterfaceType = (inout Foo) -> () -> ()
# 3| getSelfParam(): [ParamDecl] self
# 3| Type = Foo
# 3| getBody(): [BraceStmt] { ... }
# 3| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .next
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 1| getMember(4): [Initializer] Foo.init(x:)
# 1| InterfaceType = (Foo.Type) -> (Int) -> Foo
# 1| getSelfParam(): [ParamDecl] self
# 1| Type = Foo
# 1| getParam(0): [ParamDecl] x
# 1| Type = Int
# 1| getMember(5): [Initializer] Foo.init()
# 1| InterfaceType = (Foo.Type) -> () -> Foo
# 1| getSelfParam(): [ParamDecl] self
# 1| Type = Foo
# 1| getBody(): [BraceStmt] { ... }
# 1| getElement(0): [ReturnStmt] return
# 9| [ClassDecl] Bar
# 9| getMember(0): [PatternBindingDecl] var ... = ...
# 9| getInit(0): [FloatLiteralExpr] 1.3
# 9| getPattern(0): [TypedPattern] ... as ...
# 9| getSubPattern(): [NamedPattern] x
# 9| getTypeRepr(): [TypeRepr] Double
# 9| getMember(1): [ConcreteVarDecl] x
# 9| Type = Double
# 9| getAccessor(0): [Accessor] get
# 9| InterfaceType = (Bar) -> () -> Double
# 9| getSelfParam(): [ParamDecl] self
# 9| Type = Bar
# 9| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
# 9| getAccessor(1): [Accessor] set
# 9| InterfaceType = (Bar) -> (Double) -> ()
# 9| getSelfParam(): [ParamDecl] self
# 9| Type = Bar
# 9| getParam(0): [ParamDecl] value
# 9| Type = Double
# 9| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 9| getAccessor(2): [Accessor] _modify
# 9| InterfaceType = (Bar) -> () -> ()
# 9| getSelfParam(): [ParamDecl] self
# 9| Type = Bar
# 9| getBody(): [BraceStmt] { ... }
# 9| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 9| getMember(2): [Deinitializer] Bar.deinit()
# 9| InterfaceType = (Bar) -> () -> ()
# 9| getSelfParam(): [ParamDecl] self
# 9| Type = Bar
# 9| getBody(): [BraceStmt] { ... }
# 9| getMember(3): [Initializer] Bar.init()
# 9| InterfaceType = (Bar.Type) -> () -> Bar
# 9| getSelfParam(): [ParamDecl] self
# 9| Type = Bar
# 9| getBody(): [BraceStmt] { ... }
# 9| getElement(0): [ReturnStmt] return
# 11| [EnumDecl] EnumValues
# 12| getMember(0): [EnumCaseDecl] case ...
# 12| getMember(1): [EnumElementDecl] value1
# 12| getMember(2): [EnumElementDecl] value2
# 13| getMember(3): [EnumCaseDecl] case ...
# 13| getMember(4): [EnumElementDecl] value3
# 13| getMember(5): [EnumElementDecl] value4
# 13| getMember(6): [EnumElementDecl] value5
#-----| getMember(7): [NamedFunction] __derived_enum_equals(_:_:)
#-----| InterfaceType = (EnumValues.Type) -> (EnumValues, EnumValues) -> Bool
#-----| getSelfParam(): [ParamDecl] self
#-----| Type = EnumValues.Type
#-----| getParam(0): [ParamDecl] a
#-----| Type = EnumValues
#-----| getParam(1): [ParamDecl] b
#-----| Type = EnumValues
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] index_a
#-----| getElement(1): [SwitchStmt] switch a { ... }
#-----| getExpr(): [DeclRefExpr] a
#-----| getCase(0): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value1
#-----| getPattern(): [EnumElementPattern] .value1
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_a
#-----| getSource(): [IntegerLiteralExpr] 0
#-----| getCase(1): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value2
#-----| getPattern(): [EnumElementPattern] .value2
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_a
#-----| getSource(): [IntegerLiteralExpr] 1
#-----| getCase(2): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value3
#-----| getPattern(): [EnumElementPattern] .value3
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_a
#-----| getSource(): [IntegerLiteralExpr] 2
#-----| getCase(3): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value4
#-----| getPattern(): [EnumElementPattern] .value4
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_a
#-----| getSource(): [IntegerLiteralExpr] 3
#-----| getCase(4): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value5
#-----| getPattern(): [EnumElementPattern] .value5
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_a
#-----| getSource(): [IntegerLiteralExpr] 4
#-----| getElement(2): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] index_b
#-----| getElement(3): [SwitchStmt] switch b { ... }
#-----| getExpr(): [DeclRefExpr] b
#-----| getCase(0): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value1
#-----| getPattern(): [EnumElementPattern] .value1
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_b
#-----| getSource(): [IntegerLiteralExpr] 0
#-----| getCase(1): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value2
#-----| getPattern(): [EnumElementPattern] .value2
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_b
#-----| getSource(): [IntegerLiteralExpr] 1
#-----| getCase(2): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value3
#-----| getPattern(): [EnumElementPattern] .value3
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_b
#-----| getSource(): [IntegerLiteralExpr] 2
#-----| getCase(3): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value4
#-----| getPattern(): [EnumElementPattern] .value4
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_b
#-----| getSource(): [IntegerLiteralExpr] 3
#-----| getCase(4): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value5
#-----| getPattern(): [EnumElementPattern] .value5
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_b
#-----| getSource(): [IntegerLiteralExpr] 4
#-----| getElement(4): [ReturnStmt] return ...
#-----| getResult(): [BinaryExpr] ... .==(_:_:) ...
#-----| getFunction(): [MethodLookupExpr] .==(_:_:)
#-----| getBase(): [TypeExpr] Int.Type
#-----| getMethodRef(): [DeclRefExpr] ==(_:_:)
#-----| getArgument(0): [Argument] : index_a
#-----| getExpr(): [DeclRefExpr] index_a
#-----| getArgument(1): [Argument] : index_b
#-----| getExpr(): [DeclRefExpr] index_b
#-----| getMember(8): [ConcreteVarDecl] hashValue
#-----| Type = Int
#-----| getAccessor(0): [Accessor] get
#-----| InterfaceType = (EnumValues) -> () -> Int
#-----| getSelfParam(): [ParamDecl] self
#-----| Type = EnumValues
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [CallExpr] call to _hashValue(for:)
#-----| getFunction(): [DeclRefExpr] _hashValue(for:)
#-----| getArgument(0): [Argument] for: self
#-----| getExpr(): [DeclRefExpr] self
#-----| getMember(9): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] hashValue
#-----| getMember(10): [NamedFunction] hash(into:)
#-----| InterfaceType = (EnumValues) -> (inout Hasher) -> ()
#-----| getSelfParam(): [ParamDecl] self
#-----| Type = EnumValues
#-----| getParam(0): [ParamDecl] hasher
#-----| Type = Hasher
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] discriminator
#-----| getElement(1): [SwitchStmt] switch self { ... }
#-----| getExpr(): [DeclRefExpr] self
#-----| getCase(0): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value1
#-----| getPattern(): [EnumElementPattern] .value1
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] discriminator
#-----| getSource(): [IntegerLiteralExpr] 0
#-----| getCase(1): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value2
#-----| getPattern(): [EnumElementPattern] .value2
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] discriminator
#-----| getSource(): [IntegerLiteralExpr] 1
#-----| getCase(2): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value3
#-----| getPattern(): [EnumElementPattern] .value3
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] discriminator
#-----| getSource(): [IntegerLiteralExpr] 2
#-----| getCase(3): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value4
#-----| getPattern(): [EnumElementPattern] .value4
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] discriminator
#-----| getSource(): [IntegerLiteralExpr] 3
#-----| getCase(4): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .value5
#-----| getPattern(): [EnumElementPattern] .value5
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] discriminator
#-----| getSource(): [IntegerLiteralExpr] 4
#-----| getElement(2): [CallExpr] call to combine(_:)
#-----| getFunction(): [MethodLookupExpr] .combine(_:)
#-----| getBase(): [DeclRefExpr] hasher
#-----| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] combine(_:)
#-----| getArgument(0): [Argument] : discriminator
#-----| getExpr(): [DeclRefExpr] discriminator
#-----| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 16| [EnumDecl] EnumWithParams
# 17| getMember(0): [EnumCaseDecl] case ...
# 17| getMember(1): [EnumElementDecl] nodata1
# 17| getParam(0): [ParamDecl] _
# 17| Type = Void
# 18| getMember(2): [EnumCaseDecl] case ...
# 18| getMember(3): [EnumElementDecl] intdata
# 18| getParam(0): [ParamDecl] _
# 18| Type = Int
# 19| getMember(4): [EnumCaseDecl] case ...
# 19| getMember(5): [EnumElementDecl] tuple
# 19| getParam(0): [ParamDecl] _
# 19| Type = Int
# 19| getParam(1): [ParamDecl] _
# 19| Type = String
# 19| getParam(2): [ParamDecl] _
# 19| Type = Double
# 22| [ProtocolDecl] MyProtocol
#-----| getGenericTypeParam(0): [GenericTypeParamDecl] Self
# 23| getMember(0): [PatternBindingDecl] var ... = ...
# 23| getPattern(0): [TypedPattern] ... as ...
# 23| getSubPattern(): [NamedPattern] mustBeSettable
# 23| getTypeRepr(): [TypeRepr] Int
# 23| getMember(1): [ConcreteVarDecl] mustBeSettable
# 23| Type = Int
# 23| getAccessor(0): [Accessor] get
# 23| InterfaceType = <Self where Self : MyProtocol> (Self) -> () -> Int
# 23| getSelfParam(): [ParamDecl] self
# 23| Type = Self
# 23| getAccessor(1): [Accessor] set
# 23| InterfaceType = <Self where Self : MyProtocol> (inout Self) -> (Int) -> ()
# 23| getSelfParam(): [ParamDecl] self
# 23| Type = Self
# 23| getParam(0): [ParamDecl] newValue
# 23| Type = Int
# 23| getAccessor(2): [Accessor] _modify
# 23| InterfaceType = <Self where Self : MyProtocol> (inout Self) -> () -> ()
# 23| getSelfParam(): [ParamDecl] self
# 23| Type = Self
# 24| getMember(2): [PatternBindingDecl] var ... = ...
# 24| getPattern(0): [TypedPattern] ... as ...
# 24| getSubPattern(): [NamedPattern] doesNotNeedToBeSettable
# 24| getTypeRepr(): [TypeRepr] Int
# 24| getMember(3): [ConcreteVarDecl] doesNotNeedToBeSettable
# 24| Type = Int
# 24| getAccessor(0): [Accessor] get
# 24| InterfaceType = <Self where Self : MyProtocol> (Self) -> () -> Int
# 24| getSelfParam(): [ParamDecl] self
# 24| Type = Self
# 25| getMember(4): [NamedFunction] random()
# 25| InterfaceType = <Self where Self : MyProtocol> (Self) -> () -> Double
# 25| getSelfParam(): [ParamDecl] self
# 25| Type = Self
# 28| [NamedFunction] a_function(a_parameter:)
# 28| InterfaceType = (Int) -> ()
# 28| getParam(0): [ParamDecl] a_parameter
# 28| Type = Int
# 28| getBody(): [BraceStmt] { ... }
# 30| [TopLevelCodeDecl] { ... }
# 30| getBody(): [BraceStmt] { ... }
# 30| getElement(0): [PatternBindingDecl] var ... = ...
# 30| getInit(0): [IntegerLiteralExpr] 42
# 30| getPattern(0): [NamedPattern] a_variable
# 30| [ConcreteVarDecl] a_variable
# 30| Type = Int
# 31| [TopLevelCodeDecl] { ... }
# 31| getBody(): [BraceStmt] { ... }
# 31| getElement(0): [PatternBindingDecl] var ... = ...
# 31| getPattern(0): [TypedPattern] ... as ...
# 31| getSubPattern(): [NamedPattern] a_property
# 31| getTypeRepr(): [TypeRepr] String
# 31| [ConcreteVarDecl] a_property
# 31| Type = String
# 32| getAccessor(0): [Accessor] get
# 32| InterfaceType = () -> String
# 32| getBody(): [BraceStmt] { ... }
# 33| getElement(0): [ReturnStmt] return ...
# 33| getResult(): [StringLiteralExpr] here
# 35| getAccessor(1): [Accessor] set
# 35| InterfaceType = (String) -> ()
# 35| getParam(0): [ParamDecl] newValue
# 35| Type = String
# 35| getBody(): [BraceStmt] { ... }
# 38| [TopLevelCodeDecl] { ... }
# 38| getBody(): [BraceStmt] { ... }
# 38| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 38| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 38| getArgument(0): [Argument] : [...]
# 38| getExpr(): [VarargExpansionExpr] [...]
# 38| getSubExpr(): [ArrayExpr] [...]
# 38| getElement(0): [StringLiteralExpr] some top level statement
# 38| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 38| getArgument(1): [Argument] separator: default separator
# 38| getExpr(): [DefaultArgumentExpr] default separator
# 38| getArgument(2): [Argument] terminator: default terminator
# 38| getExpr(): [DefaultArgumentExpr] default terminator
# 40| [ClassDecl] Baz
# 41| getMember(0): [PatternBindingDecl] var ... = ...
# 41| getPattern(0): [TypedPattern] ... as ...
# 41| getSubPattern(): [NamedPattern] field
# 41| getTypeRepr(): [TypeRepr] Int
# 41| getMember(1): [ConcreteVarDecl] field
# 41| Type = Int
# 41| getAccessor(0): [Accessor] get
# 41| InterfaceType = (Baz) -> () -> Int
# 41| getSelfParam(): [ParamDecl] self
# 41| Type = Baz
# 41| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .field
#-----| getBase(): [DeclRefExpr] self
# 41| getAccessor(1): [Accessor] set
# 41| InterfaceType = (Baz) -> (Int) -> ()
# 41| getSelfParam(): [ParamDecl] self
# 41| Type = Baz
# 41| getParam(0): [ParamDecl] value
# 41| Type = Int
# 41| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .field
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 41| getAccessor(2): [Accessor] _modify
# 41| InterfaceType = (Baz) -> () -> ()
# 41| getSelfParam(): [ParamDecl] self
# 41| Type = Baz
# 41| getBody(): [BraceStmt] { ... }
# 41| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .field
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 42| getMember(2): [Initializer] Baz.init()
# 42| InterfaceType = (Baz.Type) -> () -> Baz
# 42| getSelfParam(): [ParamDecl] self
# 42| Type = Baz
# 42| getBody(): [BraceStmt] { ... }
# 43| getElement(0): [AssignExpr] ... = ...
# 43| getDest(): [MemberRefExpr] .field
# 43| getBase(): [DeclRefExpr] self
# 43| getSource(): [IntegerLiteralExpr] 10
# 44| getElement(1): [ReturnStmt] return
# 46| getMember(3): [Deinitializer] Baz.deinit()
# 46| InterfaceType = (Baz) -> () -> ()
# 46| getSelfParam(): [ParamDecl] self
# 46| Type = Baz
# 46| getBody(): [BraceStmt] { ... }
# 47| getElement(0): [AssignExpr] ... = ...
# 47| getDest(): [MemberRefExpr] .field
# 47| getBase(): [DeclRefExpr] self
# 47| getSource(): [IntegerLiteralExpr] 0
# 50| getMember(4): [NamedFunction] +-(_:)
# 50| InterfaceType = (Baz.Type) -> (Baz) -> Baz
# 50| getSelfParam(): [ParamDecl] self
# 50| Type = Baz.Type
# 50| getParam(0): [ParamDecl] other
# 50| Type = Baz
# 50| getBody(): [BraceStmt] { ... }
# 51| getElement(0): [ReturnStmt] return ...
# 51| getResult(): [DeclRefExpr] other
# 55| [PrefixOperatorDecl] +-
# 57| [PrecedenceGroupDecl] precedencegroup ...
# 64| [InfixOperatorDecl] +++
# 66| [InfixOperatorDecl] ***
# 68| [StructDecl] ZeroWrapper
# 69| getMember(0): [PatternBindingDecl] var ... = ...
# 69| getPattern(0): [TypedPattern] ... as ...
# 69| getSubPattern(): [NamedPattern] wrappedValue
# 69| getTypeRepr(): [TypeRepr] Int
# 69| getMember(1): [ConcreteVarDecl] wrappedValue
# 69| Type = Int
# 70| getAccessor(0): [Accessor] get
# 70| InterfaceType = (ZeroWrapper) -> () -> Int
# 70| getSelfParam(): [ParamDecl] self
# 70| Type = ZeroWrapper
# 70| getBody(): [BraceStmt] { ... }
# 71| getElement(0): [ReturnStmt] return ...
# 71| getResult(): [IntegerLiteralExpr] 0
# 68| getMember(2): [Initializer] ZeroWrapper.init()
# 68| InterfaceType = (ZeroWrapper.Type) -> () -> ZeroWrapper
# 68| getSelfParam(): [ParamDecl] self
# 68| Type = ZeroWrapper
# 68| getBody(): [BraceStmt] { ... }
# 68| getElement(0): [ReturnStmt] return
# 76| [NamedFunction] foo()
# 76| InterfaceType = () -> Int
# 76| getBody(): [BraceStmt] { ... }
# 77| getVariable(0): [ConcreteVarDecl] x
# 77| Type = Int
# 77| getAccessor(0): [Accessor] get
# 77| InterfaceType = () -> Int
# 77| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .wrappedValue
#-----| getBase(): [DeclRefExpr] _x
#-----| getCapture(0): [CapturedDecl] _x
#-----| getPropertyWrapperBackingVarBinding(): [PatternBindingDecl] var ... = ...
# 77| getInit(0): [CallExpr] call to ZeroWrapper.init()
# 77| getFunction(): [MethodLookupExpr] ZeroWrapper.init()
# 77| getBase(): [TypeExpr] ZeroWrapper.Type
# 77| getTypeRepr(): [TypeRepr] ZeroWrapper
# 77| getMethodRef(): [DeclRefExpr] ZeroWrapper.init()
# 77| getPattern(0): [TypedPattern] ... as ...
# 77| getSubPattern(): [NamedPattern] _x
# 77| getPropertyWrapperBackingVar(): [ConcreteVarDecl] _x
# 77| Type = ZeroWrapper
# 77| getElement(0): [PatternBindingDecl] var ... = ...
# 77| getPattern(0): [TypedPattern] ... as ...
# 77| getSubPattern(): [NamedPattern] x
# 77| getTypeRepr(): [TypeRepr] Int
# 78| getElement(1): [ReturnStmt] return ...
# 78| getResult(): [DeclRefExpr] x
# 81| [StructDecl] HasPropertyAndObserver
# 82| getMember(0): [PatternBindingDecl] var ... = ...
# 82| getPattern(0): [TypedPattern] ... as ...
# 82| getSubPattern(): [NamedPattern] settableField
# 82| getTypeRepr(): [TypeRepr] Int
# 82| getMember(1): [ConcreteVarDecl] settableField
# 82| Type = Int
# 83| getAccessor(0): [Accessor] set
# 83| InterfaceType = (inout HasPropertyAndObserver) -> (Int) -> ()
# 83| getSelfParam(): [ParamDecl] self
# 83| Type = HasPropertyAndObserver
# 83| getParam(0): [ParamDecl] newValue
# 83| Type = Int
# 83| getBody(): [BraceStmt] { ... }
# 84| getAccessor(1): [Accessor] get
# 84| InterfaceType = (HasPropertyAndObserver) -> () -> Int
# 84| getSelfParam(): [ParamDecl] self
# 84| Type = HasPropertyAndObserver
# 84| getBody(): [BraceStmt] { ... }
# 85| getElement(0): [ReturnStmt] return ...
# 85| getResult(): [IntegerLiteralExpr] 0
# 82| getAccessor(2): [Accessor] _modify
# 82| InterfaceType = (inout HasPropertyAndObserver) -> () -> ()
# 82| getSelfParam(): [ParamDecl] self
# 82| Type = HasPropertyAndObserver
# 82| getBody(): [BraceStmt] { ... }
# 82| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .settableField
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 91| getMember(2): [PatternBindingDecl] var ... = ...
# 91| getPattern(0): [TypedPattern] ... as ...
# 91| getSubPattern(): [NamedPattern] readOnlyField1
# 91| getTypeRepr(): [TypeRepr] Int
# 91| getMember(3): [ConcreteVarDecl] readOnlyField1
# 91| Type = Int
# 91| getAccessor(0): [Accessor] get
# 91| InterfaceType = (HasPropertyAndObserver) -> () -> Int
# 91| getSelfParam(): [ParamDecl] self
# 91| Type = HasPropertyAndObserver
# 91| getBody(): [BraceStmt] { ... }
# 92| getElement(0): [ReturnStmt] return ...
# 92| getResult(): [IntegerLiteralExpr] 0
# 96| getMember(4): [PatternBindingDecl] var ... = ...
# 96| getPattern(0): [TypedPattern] ... as ...
# 96| getSubPattern(): [NamedPattern] readOnlyField2
# 96| getTypeRepr(): [TypeRepr] Int
# 96| getMember(5): [ConcreteVarDecl] readOnlyField2
# 96| Type = Int
# 97| getAccessor(0): [Accessor] get
# 97| InterfaceType = (HasPropertyAndObserver) -> () -> Int
# 97| getSelfParam(): [ParamDecl] self
# 97| Type = HasPropertyAndObserver
# 97| getBody(): [BraceStmt] { ... }
# 98| getElement(0): [ReturnStmt] return ...
# 98| getResult(): [IntegerLiteralExpr] 0
# 102| getMember(6): [PatternBindingDecl] var ... = ...
# 102| getPattern(0): [TypedPattern] ... as ...
# 102| getSubPattern(): [NamedPattern] normalField
# 102| getTypeRepr(): [TypeRepr] Int
# 102| getMember(7): [ConcreteVarDecl] normalField
# 102| Type = Int
# 102| getAccessor(0): [Accessor] get
# 102| InterfaceType = (HasPropertyAndObserver) -> () -> Int
# 102| getSelfParam(): [ParamDecl] self
# 102| Type = HasPropertyAndObserver
# 102| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .normalField
#-----| getBase(): [DeclRefExpr] self
# 102| getAccessor(1): [Accessor] set
# 102| InterfaceType = (inout HasPropertyAndObserver) -> (Int) -> ()
# 102| getSelfParam(): [ParamDecl] self
# 102| Type = HasPropertyAndObserver
# 102| getParam(0): [ParamDecl] value
# 102| Type = Int
# 102| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .normalField
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 102| getAccessor(2): [Accessor] _modify
# 102| InterfaceType = (inout HasPropertyAndObserver) -> () -> ()
# 102| getSelfParam(): [ParamDecl] self
# 102| Type = HasPropertyAndObserver
# 102| getBody(): [BraceStmt] { ... }
# 102| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .normalField
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 104| getMember(8): [SubscriptDecl] subscript ...
# 105| getAccessor(0): [Accessor] get
# 105| InterfaceType = (HasPropertyAndObserver) -> (Int) -> Int
# 105| getSelfParam(): [ParamDecl] self
# 105| Type = HasPropertyAndObserver
# 104| getParam(0): [ParamDecl] x
# 104| Type = Int
# 105| getBody(): [BraceStmt] { ... }
# 106| getElement(0): [ReturnStmt] return ...
# 106| getResult(): [IntegerLiteralExpr] 0
# 108| getAccessor(1): [Accessor] set
# 108| InterfaceType = (inout HasPropertyAndObserver) -> (Int, Int) -> ()
# 108| getSelfParam(): [ParamDecl] self
# 108| Type = HasPropertyAndObserver
# 108| getParam(0): [ParamDecl] newValue
# 108| Type = Int
# 104| getParam(1): [ParamDecl] x
# 104| Type = Int
# 108| getBody(): [BraceStmt] { ... }
# 104| getAccessor(2): [Accessor] _modify
# 104| InterfaceType = (inout HasPropertyAndObserver) -> (Int) -> ()
# 104| getSelfParam(): [ParamDecl] self
# 104| Type = HasPropertyAndObserver
#-----| getParam(0): [ParamDecl] x
#-----| Type = Int
# 104| getBody(): [BraceStmt] { ... }
# 104| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [SubscriptExpr] ...[...]
#-----| getBase(): [DeclRefExpr] self
#-----| getArgument(0): [Argument] : x
#-----| getExpr(): [DeclRefExpr] x
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 104| getParam(0): [ParamDecl] x
# 104| Type = Int
# 111| getMember(9): [SubscriptDecl] subscript ...
# 111| getAccessor(0): [Accessor] get
# 111| InterfaceType = (HasPropertyAndObserver) -> (Int, Int) -> Int
# 111| getSelfParam(): [ParamDecl] self
# 111| Type = HasPropertyAndObserver
# 111| getParam(0): [ParamDecl] x
# 111| Type = Int
# 111| getParam(1): [ParamDecl] y
# 111| Type = Int
# 111| getBody(): [BraceStmt] { ... }
# 112| getElement(0): [ReturnStmt] return ...
# 112| getResult(): [IntegerLiteralExpr] 0
# 111| getParam(0): [ParamDecl] x
# 111| Type = Int
# 111| getParam(1): [ParamDecl] y
# 111| Type = Int
# 115| getMember(10): [PatternBindingDecl] var ... = ...
# 115| getPattern(0): [TypedPattern] ... as ...
# 115| getSubPattern(): [NamedPattern] hasWillSet1
# 115| getTypeRepr(): [TypeRepr] Int
# 115| getMember(11): [ConcreteVarDecl] hasWillSet1
# 115| Type = Int
# 116| getAccessor(0): [Accessor] willSet
# 116| InterfaceType = (inout HasPropertyAndObserver) -> (Int) -> ()
# 116| getSelfParam(): [ParamDecl] self
# 116| Type = HasPropertyAndObserver
# 116| getParam(0): [ParamDecl] newValue
# 116| Type = Int
# 116| getBody(): [BraceStmt] { ... }
# 115| getAccessor(1): [Accessor] get
# 115| InterfaceType = (HasPropertyAndObserver) -> () -> Int
# 115| getSelfParam(): [ParamDecl] self
# 115| Type = HasPropertyAndObserver
# 115| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .hasWillSet1
#-----| getBase(): [DeclRefExpr] self
# 115| getAccessor(2): [Accessor] set
# 115| InterfaceType = (inout HasPropertyAndObserver) -> (Int) -> ()
# 115| getSelfParam(): [ParamDecl] self
# 115| Type = HasPropertyAndObserver
# 115| getParam(0): [ParamDecl] value
# 115| Type = Int
# 115| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [CallExpr] call to willSet
#-----| getFunction(): [MethodLookupExpr] .willSet
#-----| getBase(): [DeclRefExpr] self
#-----| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] willSet
#-----| getArgument(0): [Argument] : value
#-----| getExpr(): [DeclRefExpr] value
#-----| getElement(1): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .hasWillSet1
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 115| getAccessor(3): [Accessor] _modify
# 115| InterfaceType = (inout HasPropertyAndObserver) -> () -> ()
# 115| getSelfParam(): [ParamDecl] self
# 115| Type = HasPropertyAndObserver
# 115| getBody(): [BraceStmt] { ... }
# 115| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .hasWillSet1
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 119| getMember(12): [PatternBindingDecl] var ... = ...
# 119| getPattern(0): [TypedPattern] ... as ...
# 119| getSubPattern(): [NamedPattern] hasWillSet2
# 119| getTypeRepr(): [TypeRepr] Int
# 119| getMember(13): [ConcreteVarDecl] hasWillSet2
# 119| Type = Int
# 120| getAccessor(0): [Accessor] willSet
# 120| InterfaceType = (inout HasPropertyAndObserver) -> (Int) -> ()
# 120| getSelfParam(): [ParamDecl] self
# 120| Type = HasPropertyAndObserver
# 120| getParam(0): [ParamDecl] newValue
# 120| Type = Int
# 120| getBody(): [BraceStmt] { ... }
# 119| getAccessor(1): [Accessor] get
# 119| InterfaceType = (HasPropertyAndObserver) -> () -> Int
# 119| getSelfParam(): [ParamDecl] self
# 119| Type = HasPropertyAndObserver
# 119| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .hasWillSet2
#-----| getBase(): [DeclRefExpr] self
# 119| getAccessor(2): [Accessor] set
# 119| InterfaceType = (inout HasPropertyAndObserver) -> (Int) -> ()
# 119| getSelfParam(): [ParamDecl] self
# 119| Type = HasPropertyAndObserver
# 119| getParam(0): [ParamDecl] value
# 119| Type = Int
# 119| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [CallExpr] call to willSet
#-----| getFunction(): [MethodLookupExpr] .willSet
#-----| getBase(): [DeclRefExpr] self
#-----| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] willSet
#-----| getArgument(0): [Argument] : value
#-----| getExpr(): [DeclRefExpr] value
#-----| getElement(1): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .hasWillSet2
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 119| getAccessor(3): [Accessor] _modify
# 119| InterfaceType = (inout HasPropertyAndObserver) -> () -> ()
# 119| getSelfParam(): [ParamDecl] self
# 119| Type = HasPropertyAndObserver
# 119| getBody(): [BraceStmt] { ... }
# 119| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .hasWillSet2
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 123| getMember(14): [PatternBindingDecl] var ... = ...
# 123| getPattern(0): [TypedPattern] ... as ...
# 123| getSubPattern(): [NamedPattern] hasDidSet1
# 123| getTypeRepr(): [TypeRepr] Int
# 123| getMember(15): [ConcreteVarDecl] hasDidSet1
# 123| Type = Int
# 124| getAccessor(0): [Accessor] didSet
# 124| InterfaceType = (inout HasPropertyAndObserver) -> (Int) -> ()
# 124| getSelfParam(): [ParamDecl] self
# 124| Type = HasPropertyAndObserver
# 124| getParam(0): [ParamDecl] oldValue
# 124| Type = Int
# 124| getBody(): [BraceStmt] { ... }
# 123| getAccessor(1): [Accessor] get
# 123| InterfaceType = (HasPropertyAndObserver) -> () -> Int
# 123| getSelfParam(): [ParamDecl] self
# 123| Type = HasPropertyAndObserver
# 123| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .hasDidSet1
#-----| getBase(): [DeclRefExpr] self
# 123| getAccessor(2): [Accessor] set
# 123| InterfaceType = (inout HasPropertyAndObserver) -> (Int) -> ()
# 123| getSelfParam(): [ParamDecl] self
# 123| Type = HasPropertyAndObserver
# 123| getParam(0): [ParamDecl] value
# 123| Type = Int
# 123| getBody(): [BraceStmt] { ... }
#-----| getVariable(0): [ConcreteVarDecl] tmp
#-----| Type = Int
#-----| getElement(0): [PatternBindingDecl] var ... = ...
#-----| getInit(0): [MemberRefExpr] .hasDidSet1
#-----| getBase(): [DeclRefExpr] self
#-----| getInit(0).getFullyConverted(): [LoadExpr] (Int) ...
#-----| getPattern(0): [NamedPattern] tmp
#-----| getElement(1): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .hasDidSet1
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
#-----| getElement(2): [CallExpr] call to didSet
#-----| getFunction(): [MethodLookupExpr] .didSet
#-----| getBase(): [DeclRefExpr] self
#-----| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] didSet
#-----| getArgument(0): [Argument] : tmp
#-----| getExpr(): [DeclRefExpr] tmp
# 123| getAccessor(3): [Accessor] _modify
# 123| InterfaceType = (inout HasPropertyAndObserver) -> () -> ()
# 123| getSelfParam(): [ParamDecl] self
# 123| Type = HasPropertyAndObserver
# 123| getBody(): [BraceStmt] { ... }
# 123| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .hasDidSet1
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 127| getMember(16): [PatternBindingDecl] var ... = ...
# 127| getPattern(0): [TypedPattern] ... as ...
# 127| getSubPattern(): [NamedPattern] hasDidSet2
# 127| getTypeRepr(): [TypeRepr] Int
# 127| getMember(17): [ConcreteVarDecl] hasDidSet2
# 127| Type = Int
# 128| getAccessor(0): [Accessor] didSet
# 128| InterfaceType = (inout HasPropertyAndObserver) -> () -> ()
# 128| getSelfParam(): [ParamDecl] self
# 128| Type = HasPropertyAndObserver
# 128| getBody(): [BraceStmt] { ... }
# 127| getAccessor(1): [Accessor] get
# 127| InterfaceType = (HasPropertyAndObserver) -> () -> Int
# 127| getSelfParam(): [ParamDecl] self
# 127| Type = HasPropertyAndObserver
# 127| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .hasDidSet2
#-----| getBase(): [DeclRefExpr] self
# 127| getAccessor(2): [Accessor] set
# 127| InterfaceType = (inout HasPropertyAndObserver) -> (Int) -> ()
# 127| getSelfParam(): [ParamDecl] self
# 127| Type = HasPropertyAndObserver
# 127| getParam(0): [ParamDecl] value
# 127| Type = Int
# 127| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .hasDidSet2
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
#-----| getElement(1): [CallExpr] call to didSet
#-----| getFunction(): [MethodLookupExpr] .didSet
#-----| getBase(): [DeclRefExpr] self
#-----| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] didSet
# 127| getAccessor(3): [Accessor] _modify
# 127| InterfaceType = (inout HasPropertyAndObserver) -> () -> ()
# 127| getSelfParam(): [ParamDecl] self
# 127| Type = HasPropertyAndObserver
# 127| getBody(): [BraceStmt] { ... }
# 127| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .hasDidSet2
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
#-----| getElement(1): [CallExpr] call to didSet
#-----| getFunction(): [MethodLookupExpr] .didSet
#-----| getBase(): [DeclRefExpr] self
#-----| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] didSet
# 131| getMember(18): [PatternBindingDecl] var ... = ...
# 131| getPattern(0): [TypedPattern] ... as ...
# 131| getSubPattern(): [NamedPattern] hasBoth
# 131| getTypeRepr(): [TypeRepr] Int
# 131| getMember(19): [ConcreteVarDecl] hasBoth
# 131| Type = Int
# 132| getAccessor(0): [Accessor] willSet
# 132| InterfaceType = (inout HasPropertyAndObserver) -> (Int) -> ()
# 132| getSelfParam(): [ParamDecl] self
# 132| Type = HasPropertyAndObserver
# 132| getParam(0): [ParamDecl] newValue
# 132| Type = Int
# 132| getBody(): [BraceStmt] { ... }
# 134| getAccessor(1): [Accessor] didSet
# 134| InterfaceType = (inout HasPropertyAndObserver) -> () -> ()
# 134| getSelfParam(): [ParamDecl] self
# 134| Type = HasPropertyAndObserver
# 134| getBody(): [BraceStmt] { ... }
# 131| getAccessor(2): [Accessor] get
# 131| InterfaceType = (HasPropertyAndObserver) -> () -> Int
# 131| getSelfParam(): [ParamDecl] self
# 131| Type = HasPropertyAndObserver
# 131| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .hasBoth
#-----| getBase(): [DeclRefExpr] self
# 131| getAccessor(3): [Accessor] set
# 131| InterfaceType = (inout HasPropertyAndObserver) -> (Int) -> ()
# 131| getSelfParam(): [ParamDecl] self
# 131| Type = HasPropertyAndObserver
# 131| getParam(0): [ParamDecl] value
# 131| Type = Int
# 131| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [CallExpr] call to willSet
#-----| getFunction(): [MethodLookupExpr] .willSet
#-----| getBase(): [DeclRefExpr] self
#-----| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] willSet
#-----| getArgument(0): [Argument] : value
#-----| getExpr(): [DeclRefExpr] value
#-----| getElement(1): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .hasBoth
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
#-----| getElement(2): [CallExpr] call to didSet
#-----| getFunction(): [MethodLookupExpr] .didSet
#-----| getBase(): [DeclRefExpr] self
#-----| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] didSet
# 131| getAccessor(4): [Accessor] _modify
# 131| InterfaceType = (inout HasPropertyAndObserver) -> () -> ()
# 131| getSelfParam(): [ParamDecl] self
# 131| Type = HasPropertyAndObserver
# 131| getBody(): [BraceStmt] { ... }
# 131| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .hasBoth
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 81| getMember(20): [Initializer] HasPropertyAndObserver.init(normalField:hasWillSet1:hasWillSet2:hasDidSet1:hasDidSet2:hasBoth:)
# 81| InterfaceType = (HasPropertyAndObserver.Type) -> (Int, Int, Int, Int, Int, Int) -> HasPropertyAndObserver
# 81| getSelfParam(): [ParamDecl] self
# 81| Type = HasPropertyAndObserver
# 81| getParam(0): [ParamDecl] normalField
# 81| Type = Int
# 81| getParam(1): [ParamDecl] hasWillSet1
# 81| Type = Int
# 81| getParam(2): [ParamDecl] hasWillSet2
# 81| Type = Int
# 81| getParam(3): [ParamDecl] hasDidSet1
# 81| Type = Int
# 81| getParam(4): [ParamDecl] hasDidSet2
# 81| Type = Int
# 81| getParam(5): [ParamDecl] hasBoth
# 81| Type = Int
# 89| [Comment] // A field can be marked as read-only by dirctly implementing
# 89|
# 90| [Comment] // the getter between the braces.
# 90|
# 95| [Comment] // Or by adding an access declaration
# 95|
# 138| [ExtensionDecl] extension of Int
# 139| getMember(0): [NamedFunction] id()
# 139| InterfaceType = (Int) -> () -> Int
# 139| getSelfParam(): [ParamDecl] self
# 139| Type = Int
# 139| getBody(): [BraceStmt] { ... }
# 140| getElement(0): [ReturnStmt] return ...
# 140| getResult(): [DeclRefExpr] self
# 144| [TopLevelCodeDecl] { ... }
# 144| getBody(): [BraceStmt] { ... }
# 144| getElement(0): [CallExpr] call to id()
# 144| getFunction(): [MethodLookupExpr] .id()
# 144| getBase(): [IntegerLiteralExpr] 42
# 144| getMethodRef(): [DeclRefExpr] id()
# 146| [ClassDecl] GenericClass
# 146| getGenericTypeParam(0): [GenericTypeParamDecl] A
# 146| getGenericTypeParam(1): [GenericTypeParamDecl] B
# 146| getGenericTypeParam(2): [GenericTypeParamDecl] C
# 147| getMember(0): [NamedFunction] genericMethod(_:_:_:)
# 147| InterfaceType = <A, B, C where B : Baz, C : MyProtocol> (GenericClass<A, B, C>) -> (A, B, C) -> ()
# 147| getSelfParam(): [ParamDecl] self
# 147| Type = GenericClass<A, B, C>
# 147| getParam(0): [ParamDecl] _
# 147| Type = A
# 147| getParam(1): [ParamDecl] _
# 147| Type = B
# 147| getParam(2): [ParamDecl] _
# 147| Type = C
# 147| getBody(): [BraceStmt] { ... }
# 146| getMember(1): [Deinitializer] GenericClass<A, B, C>.deinit()
# 146| InterfaceType = <A, B, C where B : Baz, C : MyProtocol> (GenericClass<A, B, C>) -> () -> ()
# 146| getSelfParam(): [ParamDecl] self
# 146| Type = GenericClass<A, B, C>
# 146| getBody(): [BraceStmt] { ... }
# 146| getMember(2): [Initializer] GenericClass<A, B, C>.init()
# 146| InterfaceType = <A, B, C where B : Baz, C : MyProtocol> (GenericClass<A, B, C>.Type) -> () -> GenericClass<A, B, C>
# 146| getSelfParam(): [ParamDecl] self
# 146| Type = GenericClass<A, B, C>
# 146| getBody(): [BraceStmt] { ... }
# 146| getElement(0): [ReturnStmt] return
# 150| [NamedFunction] genericFunc(_:_:_:)
# 150| InterfaceType = <A, B, C where B : Baz, C : MyProtocol> (A, B, C) -> ()
# 150| getGenericTypeParam(0): [GenericTypeParamDecl] A
# 150| getGenericTypeParam(1): [GenericTypeParamDecl] B
# 150| getGenericTypeParam(2): [GenericTypeParamDecl] C
# 150| getParam(0): [ParamDecl] _
# 150| Type = A
# 150| getParam(1): [ParamDecl] _
# 150| Type = B
# 150| getParam(2): [ParamDecl] _
# 150| Type = C
# 150| getBody(): [BraceStmt] { ... }
# 152| [ClassDecl] Derived
# 152| getMember(0): [Deinitializer] Derived.deinit()
# 152| InterfaceType = (Derived) -> () -> ()
# 152| getSelfParam(): [ParamDecl] self
# 152| Type = Derived
# 152| getBody(): [BraceStmt] { ... }
# 152| getMember(1): [Initializer] Derived.init()
# 152| InterfaceType = (Derived.Type) -> () -> Derived
# 152| getSelfParam(): [ParamDecl] self
# 152| Type = Derived
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [RebindSelfInInitializerExpr] self = ...
#-----| getSubExpr(): [CallExpr] call to Baz.init()
#-----| getFunction(): [MethodLookupExpr] Baz.init()
#-----| getBase(): [SuperRefExpr] super
#-----| getMethodRef(): [OtherInitializerRefExpr] Baz.init()
#-----| getElement(1): [ReturnStmt] return
# 154| [Comment] // multiple conversions
# 154|
# 155| [TopLevelCodeDecl] { ... }
# 155| getBody(): [BraceStmt] { ... }
# 155| getElement(0): [PatternBindingDecl] var ... = ...
# 155| getInit(0): [CallExpr] call to Derived.init()
# 155| getFunction(): [MethodLookupExpr] Derived.init()
# 155| getBase(): [TypeExpr] Derived.Type
# 155| getTypeRepr(): [TypeRepr] Derived
# 155| getMethodRef(): [DeclRefExpr] Derived.init()
# 155| getInit(0).getFullyConverted(): [InjectIntoOptionalExpr] (Baz?) ...
# 155| getSubExpr(): [CoerceExpr] (Baz) ...
# 155| getSubExpr(): [DerivedToBaseExpr] (Baz) ...
# 155| getPattern(0): [TypedPattern] ... as ...
# 155| getSubPattern(): [NamedPattern] d
# 155| getTypeRepr(): [TypeRepr] Baz?
# 155| [ConcreteVarDecl] d
# 155| Type = Baz?
# 157| [NamedFunction] ifConfig()
# 157| InterfaceType = () -> ()
# 157| getBody(): [BraceStmt] { ... }
# 163| getElement(0): [IntegerLiteralExpr] 4
# 164| getElement(1): [IntegerLiteralExpr] 5
# 165| getElement(2): [IntegerLiteralExpr] 6
# 174| getElement(3): [IntegerLiteralExpr] 9
# 175| getElement(4): [IntegerLiteralExpr] 10
# 182| [ClassDecl] B
# 182| getMember(0): [Deinitializer] B.deinit()
# 182| InterfaceType = (B) -> () -> ()
# 182| getSelfParam(): [ParamDecl] self
# 182| Type = B
# 182| getBody(): [BraceStmt] { ... }
# 182| getMember(1): [Initializer] B.init()
# 182| InterfaceType = (B.Type) -> () -> B
# 182| getSelfParam(): [ParamDecl] self
# 182| Type = B
# 182| getBody(): [BraceStmt] { ... }
# 182| getElement(0): [ReturnStmt] return
# 183| [TypeAliasDecl] A
# 184| [TypeAliasDecl] C
# 186| [ClassDecl] S
# 187| getMember(0): [PatternBindingDecl] var ... = ...
# 187| getInit(0): [IntegerLiteralExpr] 0
# 187| getPattern(0): [NamedPattern] bf1
# 187| getMember(1): [ConcreteVarDecl] bf1
# 187| Type = Int
# 187| getAccessor(0): [Accessor] get
# 187| InterfaceType = (S) -> () -> Int
# 187| getSelfParam(): [ParamDecl] self
# 187| Type = S
# 187| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .bf1
#-----| getBase(): [DeclRefExpr] self
# 187| getAccessor(1): [Accessor] set
# 187| InterfaceType = (S) -> (Int) -> ()
# 187| getSelfParam(): [ParamDecl] self
# 187| Type = S
# 187| getParam(0): [ParamDecl] value
# 187| Type = Int
# 187| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .bf1
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 187| getAccessor(2): [Accessor] _modify
# 187| InterfaceType = (S) -> () -> ()
# 187| getSelfParam(): [ParamDecl] self
# 187| Type = S
# 187| getBody(): [BraceStmt] { ... }
# 187| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .bf1
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 188| getMember(2): [NamedFunction] captureThis()
# 188| InterfaceType = (S) -> () -> ()
# 188| getSelfParam(): [ParamDecl] self
# 188| Type = S
# 188| getBody(): [BraceStmt] { ... }
# 189| getVariable(0): [ConcreteVarDecl] x
# 189| Type = Int
# 190| getVariable(1): [ConcreteVarDecl] f
# 190| Type = () -> ()
# 189| getElement(0): [PatternBindingDecl] var ... = ...
# 189| getInit(0): [IntegerLiteralExpr] 0
# 189| getPattern(0): [NamedPattern] x
# 190| getElement(1): [PatternBindingDecl] var ... = ...
# 190| getInit(0): [CaptureListExpr] { ... }
# 190| getBindingDecl(0): [PatternBindingDecl] var ... = ...
# 190| getInit(0): [DeclRefExpr] self
# 190| getPattern(0): [NamedPattern] self
# 190| getBindingDecl(1): [PatternBindingDecl] var ... = ...
# 190| getInit(0): [DeclRefExpr] x
# 190| getInit(0).getFullyConverted(): [LoadExpr] (Int) ...
# 190| getPattern(0): [NamedPattern] x
# 190| getVariable(0): [ConcreteVarDecl] self
# 190| Type = S
# 190| getVariable(1): [ConcreteVarDecl] x
# 190| Type = Int
# 190| getClosureBody(): [ExplicitClosureExpr] { ... }
# 190| getBody(): [BraceStmt] { ... }
# 191| getElement(0): [ReturnStmt] return ...
# 191| getResult(): [AssignExpr] ... = ...
# 191| getDest(): [MemberRefExpr] .bf1
# 191| getBase(): [DeclRefExpr] self
# 191| getSource(): [DeclRefExpr] x
# 191| getCapture(0): [CapturedDecl] self
# 191| getCapture(1): [CapturedDecl] x
# 190| getPattern(0): [NamedPattern] f
# 186| getMember(3): [Deinitializer] S.deinit()
# 186| InterfaceType = (S) -> () -> ()
# 186| getSelfParam(): [ParamDecl] self
# 186| Type = S
# 186| getBody(): [BraceStmt] { ... }
# 186| getMember(4): [Initializer] S.init()
# 186| InterfaceType = (S.Type) -> () -> S
# 186| getSelfParam(): [ParamDecl] self
# 186| Type = S
# 186| getBody(): [BraceStmt] { ... }
# 186| getElement(0): [ReturnStmt] return
expressions.swift:
# 1| [TopLevelCodeDecl] { ... }
# 1| getBody(): [BraceStmt] { ... }
# 1| getElement(0): [PatternBindingDecl] var ... = ...
# 1| getInit(0): [IntegerLiteralExpr] 15
# 1| getPattern(0): [NamedPattern] a
# 1| [ConcreteVarDecl] a
# 1| Type = Int
# 2| [TopLevelCodeDecl] { ... }
# 2| getBody(): [BraceStmt] { ... }
# 2| getElement(0): [PatternBindingDecl] var ... = ...
# 2| getInit(0): [FloatLiteralExpr] 15.15
# 2| getPattern(0): [NamedPattern] b
# 2| [ConcreteVarDecl] b
# 2| Type = Double
# 3| [TopLevelCodeDecl] { ... }
# 3| getBody(): [BraceStmt] { ... }
# 3| getElement(0): [PatternBindingDecl] var ... = ...
# 3| getInit(0): [BooleanLiteralExpr] true
# 3| getPattern(0): [NamedPattern] b1
# 3| [ConcreteVarDecl] b1
# 3| Type = Bool
# 4| [TopLevelCodeDecl] { ... }
# 4| getBody(): [BraceStmt] { ... }
# 4| getElement(0): [PatternBindingDecl] var ... = ...
# 4| getInit(0): [BooleanLiteralExpr] false
# 4| getPattern(0): [NamedPattern] b2
# 4| [ConcreteVarDecl] b2
# 4| Type = Bool
# 5| [TopLevelCodeDecl] { ... }
# 5| getBody(): [BraceStmt] { ... }
# 5| getElement(0): [PatternBindingDecl] var ... = ...
# 5| getInit(0): [MagicIdentifierLiteralExpr] #...
# 5| getPattern(0): [NamedPattern] m
# 5| [ConcreteVarDecl] m
# 5| Type = String
# 6| [TopLevelCodeDecl] { ... }
# 6| getBody(): [BraceStmt] { ... }
# 6| getElement(0): [PatternBindingDecl] var ... = ...
# 6| getInit(0): [StringLiteralExpr] hello world
# 6| getPattern(0): [NamedPattern] s
# 6| [ConcreteVarDecl] s
# 6| Type = String
# 7| [TopLevelCodeDecl] { ... }
# 7| getBody(): [BraceStmt] { ... }
# 7| getElement(0): [PatternBindingDecl] var ... = ...
# 7| getInit(0): [InterpolatedStringLiteralExpr] "..."
# 7| getAppendingExpr(): [TapExpr] TapExpr
# 7| getSubExpr(): [OpaqueValueExpr] OpaqueValueExpr
# 7| getBody(): [BraceStmt] { ... }
#-----| getVariable(0): [ConcreteVarDecl] $interpolation
#-----| Type = DefaultStringInterpolation
# 7| getElement(0): [CallExpr] call to appendLiteral(_:)
# 7| getFunction(): [MethodLookupExpr] .appendLiteral(_:)
# 7| getBase(): [DeclRefExpr] $interpolation
# 7| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:)
# 7| getArgument(0): [Argument] : hello
# 7| getExpr(): [StringLiteralExpr] hello
# 7| getElement(1): [CallExpr] call to appendInterpolation(_:)
# 7| getFunction(): [MethodLookupExpr] .appendInterpolation(_:)
# 7| getBase(): [DeclRefExpr] $interpolation
# 7| getBase().getFullyConverted(): [InOutExpr] &...
# 7| getMethodRef(): [DeclRefExpr] appendInterpolation(_:)
# 7| getArgument(0): [Argument] : a
# 7| getExpr(): [DeclRefExpr] a
# 7| getElement(2): [CallExpr] call to appendLiteral(_:)
# 7| getFunction(): [MethodLookupExpr] .appendLiteral(_:)
# 7| getBase(): [DeclRefExpr] $interpolation
# 7| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] appendLiteral(_:)
# 7| getArgument(0): [Argument] :
# 7| getExpr(): [StringLiteralExpr]
# 7| getPattern(0): [NamedPattern] s1
# 7| [ConcreteVarDecl] s1
# 7| Type = String
# 8| [TopLevelCodeDecl] { ... }
# 8| getBody(): [BraceStmt] { ... }
# 8| getElement(0): [PatternBindingDecl] var ... = ...
# 8| getInit(0): [NilLiteralExpr] nil
# 8| getPattern(0): [TypedPattern] ... as ...
# 8| getSubPattern(): [NamedPattern] n
# 8| getTypeRepr(): [TypeRepr] Int?
# 8| [ConcreteVarDecl] n
# 8| Type = Int?
# 10| [EnumDecl] AnError
# 11| getMember(0): [EnumCaseDecl] case ...
# 11| getMember(1): [EnumElementDecl] failed
#-----| getMember(2): [NamedFunction] __derived_enum_equals(_:_:)
#-----| InterfaceType = (AnError.Type) -> (AnError, AnError) -> Bool
#-----| getSelfParam(): [ParamDecl] self
#-----| Type = AnError.Type
#-----| getParam(0): [ParamDecl] a
#-----| Type = AnError
#-----| getParam(1): [ParamDecl] b
#-----| Type = AnError
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] index_a
#-----| getElement(1): [SwitchStmt] switch a { ... }
#-----| getExpr(): [DeclRefExpr] a
#-----| getCase(0): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .failed
#-----| getPattern(): [EnumElementPattern] .failed
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_a
#-----| getSource(): [IntegerLiteralExpr] 0
#-----| getElement(2): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] index_b
#-----| getElement(3): [SwitchStmt] switch b { ... }
#-----| getExpr(): [DeclRefExpr] b
#-----| getCase(0): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .failed
#-----| getPattern(): [EnumElementPattern] .failed
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_b
#-----| getSource(): [IntegerLiteralExpr] 0
#-----| getElement(4): [ReturnStmt] return ...
#-----| getResult(): [BinaryExpr] ... .==(_:_:) ...
#-----| getFunction(): [MethodLookupExpr] .==(_:_:)
#-----| getBase(): [TypeExpr] Int.Type
#-----| getMethodRef(): [DeclRefExpr] ==(_:_:)
#-----| getArgument(0): [Argument] : index_a
#-----| getExpr(): [DeclRefExpr] index_a
#-----| getArgument(1): [Argument] : index_b
#-----| getExpr(): [DeclRefExpr] index_b
#-----| getMember(3): [ConcreteVarDecl] hashValue
#-----| Type = Int
#-----| getAccessor(0): [Accessor] get
#-----| InterfaceType = (AnError) -> () -> Int
#-----| getSelfParam(): [ParamDecl] self
#-----| Type = AnError
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [CallExpr] call to _hashValue(for:)
#-----| getFunction(): [DeclRefExpr] _hashValue(for:)
#-----| getArgument(0): [Argument] for: self
#-----| getExpr(): [DeclRefExpr] self
#-----| getMember(4): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] hashValue
#-----| getMember(5): [NamedFunction] hash(into:)
#-----| InterfaceType = (AnError) -> (inout Hasher) -> ()
#-----| getSelfParam(): [ParamDecl] self
#-----| Type = AnError
#-----| getParam(0): [ParamDecl] hasher
#-----| Type = Hasher
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] discriminator
#-----| getElement(1): [SwitchStmt] switch self { ... }
#-----| getExpr(): [DeclRefExpr] self
#-----| getCase(0): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .failed
#-----| getPattern(): [EnumElementPattern] .failed
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] discriminator
#-----| getSource(): [IntegerLiteralExpr] 0
#-----| getElement(2): [CallExpr] call to combine(_:)
#-----| getFunction(): [MethodLookupExpr] .combine(_:)
#-----| getBase(): [DeclRefExpr] hasher
#-----| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] combine(_:)
#-----| getArgument(0): [Argument] : discriminator
#-----| getExpr(): [DeclRefExpr] discriminator
#-----| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 14| [NamedFunction] failure(_:)
# 14| InterfaceType = (Int) throws -> ()
# 14| getParam(0): [ParamDecl] x
# 14| Type = Int
# 14| getBody(): [BraceStmt] { ... }
# 15| getElement(0): [GuardStmt] guard ... else { ... }
# 15| getCondition(): [StmtCondition] StmtCondition
# 15| getElement(0): [ConditionElement] ... .!=(_:_:) ...
# 15| getBoolean(): [BinaryExpr] ... .!=(_:_:) ...
# 15| getFunction(): [MethodLookupExpr] .!=(_:_:)
# 15| getBase(): [TypeExpr] Int.Type
# 15| getTypeRepr(): [TypeRepr] Int
# 15| getMethodRef(): [DeclRefExpr] !=(_:_:)
# 15| getArgument(0): [Argument] : x
# 15| getExpr(): [DeclRefExpr] x
# 15| getArgument(1): [Argument] : 0
# 15| getExpr(): [IntegerLiteralExpr] 0
# 15| getBody(): [BraceStmt] { ... }
# 16| getElement(0): [ThrowStmt] throw ...
# 16| getSubExpr(): [MethodLookupExpr] .failed
# 16| getBase(): [TypeExpr] AnError.Type
# 16| getTypeRepr(): [TypeRepr] AnError
# 16| getMethodRef(): [DeclRefExpr] failed
# 16| getSubExpr().getFullyConverted(): [ErasureExpr] (any Error) ...
# 20| [TopLevelCodeDecl] { ... }
# 20| getBody(): [BraceStmt] { ... }
# 20| getElement(0): [ForceTryExpr] try! ...
# 20| getSubExpr(): [CallExpr] call to failure(_:)
# 20| getFunction(): [DeclRefExpr] failure(_:)
# 20| getArgument(0): [Argument] : 11
# 20| getExpr(): [IntegerLiteralExpr] 11
# 21| [TopLevelCodeDecl] { ... }
# 21| getBody(): [BraceStmt] { ... }
# 21| getElement(0): [OptionalTryExpr] try? ...
# 21| getSubExpr(): [CallExpr] call to failure(_:)
# 21| getFunction(): [DeclRefExpr] failure(_:)
# 21| getArgument(0): [Argument] : 11
# 21| getExpr(): [IntegerLiteralExpr] 11
# 21| getSubExpr().getFullyConverted(): [InjectIntoOptionalExpr] (()?) ...
# 23| [ClassDecl] Klass
# 24| getMember(0): [Initializer] Klass.init()
# 24| InterfaceType = (Klass.Type) -> () -> Klass
# 24| getSelfParam(): [ParamDecl] self
# 24| Type = Klass
# 24| getBody(): [BraceStmt] { ... }
# 24| getElement(0): [ReturnStmt] return
# 23| getMember(1): [Deinitializer] Klass.deinit()
# 23| InterfaceType = (Klass) -> () -> ()
# 23| getSelfParam(): [ParamDecl] self
# 23| Type = Klass
# 23| getBody(): [BraceStmt] { ... }
# 27| [TopLevelCodeDecl] { ... }
# 27| getBody(): [BraceStmt] { ... }
# 27| getElement(0): [PatternBindingDecl] var ... = ...
# 27| getInit(0): [CallExpr] call to Klass.init()
# 27| getFunction(): [MethodLookupExpr] Klass.init()
# 27| getBase(): [TypeExpr] Klass.Type
# 27| getTypeRepr(): [TypeRepr] Klass
# 27| getMethodRef(): [DeclRefExpr] Klass.init()
# 27| getPattern(0): [NamedPattern] klass
# 27| [ConcreteVarDecl] klass
# 27| Type = Klass
# 29| [TopLevelCodeDecl] { ... }
# 29| getBody(): [BraceStmt] { ... }
# 29| getElement(0): [PatternBindingDecl] var ... = ...
# 29| getInit(0): [DictionaryExpr] [...]
# 29| getElement(0): [TupleExpr] (...)
# 29| getElement(0): [StringLiteralExpr] 1
# 29| getElement(1): [StringLiteralExpr] 2
# 29| getPattern(0): [NamedPattern] d
# 29| [ConcreteVarDecl] d
# 29| Type = [String : String]
# 30| [TopLevelCodeDecl] { ... }
# 30| getBody(): [BraceStmt] { ... }
# 30| getElement(0): [AssignExpr] ... = ...
# 30| getDest(): [DiscardAssignmentExpr] _
# 30| getSource(): [IntegerLiteralExpr] 15
# 31| [TopLevelCodeDecl] { ... }
# 31| getBody(): [BraceStmt] { ... }
# 31| getElement(0): [AssignExpr] ... = ...
# 31| getDest(): [DiscardAssignmentExpr] _
# 31| getSource(): [IntegerLiteralExpr] 15
# 31| getSource().getFullyConverted(): [IsExpr] ... is ...
# 32| [TopLevelCodeDecl] { ... }
# 32| getBody(): [BraceStmt] { ... }
# 32| getElement(0): [AssignExpr] ... = ...
# 32| getDest(): [DiscardAssignmentExpr] _
# 32| getSource(): [IntegerLiteralExpr] 15
# 32| getSource().getFullyConverted(): [CoerceExpr] (Double) ...
# 33| [TopLevelCodeDecl] { ... }
# 33| getBody(): [BraceStmt] { ... }
# 33| getElement(0): [AssignExpr] ... = ...
# 33| getDest(): [DiscardAssignmentExpr] _
# 33| getSource(): [IntegerLiteralExpr] 15
# 33| getSource().getFullyConverted(): [ConditionalCheckedCastExpr] (Double?) ...
# 34| [TopLevelCodeDecl] { ... }
# 34| getBody(): [BraceStmt] { ... }
# 34| getElement(0): [AssignExpr] ... = ...
# 34| getDest(): [DiscardAssignmentExpr] _
# 34| getSource(): [IntegerLiteralExpr] 15
# 34| getSource().getFullyConverted(): [ForcedCheckedCastExpr] (Double) ...
# 35| [TopLevelCodeDecl] { ... }
# 35| getBody(): [BraceStmt] { ... }
# 35| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 35| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 35| getArgument(0): [Argument] : [...]
# 35| getExpr(): [VarargExpansionExpr] [...]
# 35| getSubExpr(): [ArrayExpr] [...]
# 35| getElement(0): [SubscriptExpr] ...[...]
# 35| getBase(): [DeclRefExpr] d
# 35| getArgument(0): [Argument] : 1
# 35| getExpr(): [StringLiteralExpr] 1
# 35| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 35| getArgument(1): [Argument] separator: default separator
# 35| getExpr(): [DefaultArgumentExpr] default separator
# 35| getArgument(2): [Argument] terminator: default terminator
# 35| getExpr(): [DefaultArgumentExpr] default terminator
# 37| [NamedFunction] closured(closure:)
# 37| InterfaceType = ((Int, Int) -> Int) -> ()
# 37| getParam(0): [ParamDecl] closure
# 37| Type = (Int, Int) -> Int
# 37| getBody(): [BraceStmt] { ... }
# 38| getElement(0): [CallExpr] call to ...
# 38| getFunction(): [DeclRefExpr] closure
# 38| getArgument(0): [Argument] : 5
# 38| getExpr(): [IntegerLiteralExpr] 5
# 38| getArgument(1): [Argument] : 7
# 38| getExpr(): [IntegerLiteralExpr] 7
# 41| [TopLevelCodeDecl] { ... }
# 41| getBody(): [BraceStmt] { ... }
# 41| getElement(0): [CallExpr] call to closured(closure:)
# 41| getFunction(): [DeclRefExpr] closured(closure:)
# 41| getArgument(0): [Argument] closure: { ... }
# 41| getExpr(): [ExplicitClosureExpr] { ... }
# 41| getParam(0): [ParamDecl] x
# 41| Type = Int
# 41| getParam(1): [ParamDecl] y
# 41| Type = Int
# 41| getBody(): [BraceStmt] { ... }
# 42| getElement(0): [ReturnStmt] return ...
# 42| getResult(): [BinaryExpr] ... .+(_:_:) ...
# 42| getFunction(): [MethodLookupExpr] .+(_:_:)
# 42| getBase(): [TypeExpr] Int.Type
# 42| getTypeRepr(): [TypeRepr] Int
# 42| getMethodRef(): [DeclRefExpr] +(_:_:)
# 42| getArgument(0): [Argument] : x
# 42| getExpr(): [DeclRefExpr] x
# 42| getArgument(1): [Argument] : y
# 42| getExpr(): [DeclRefExpr] y
# 44| [TopLevelCodeDecl] { ... }
# 44| getBody(): [BraceStmt] { ... }
# 44| getElement(0): [CallExpr] call to closured(closure:)
# 44| getFunction(): [DeclRefExpr] closured(closure:)
# 44| getArgument(0): [Argument] closure: { ... }
# 44| getExpr(): [ExplicitClosureExpr] { ... }
# 44| getParam(0): [ParamDecl] x
# 44| Type = Int
# 44| getParam(1): [ParamDecl] y
# 44| Type = Int
# 44| getBody(): [BraceStmt] { ... }
# 45| getElement(0): [ReturnStmt] return ...
# 45| getResult(): [BinaryExpr] ... .+(_:_:) ...
# 45| getFunction(): [MethodLookupExpr] .+(_:_:)
# 45| getBase(): [TypeExpr] Int.Type
# 45| getTypeRepr(): [TypeRepr] Int
# 45| getMethodRef(): [DeclRefExpr] +(_:_:)
# 45| getArgument(0): [Argument] : x
# 45| getExpr(): [DeclRefExpr] x
# 45| getArgument(1): [Argument] : y
# 45| getExpr(): [DeclRefExpr] y
# 47| [TopLevelCodeDecl] { ... }
# 47| getBody(): [BraceStmt] { ... }
# 47| getElement(0): [CallExpr] call to closured(closure:)
# 47| getFunction(): [DeclRefExpr] closured(closure:)
# 47| getArgument(0): [Argument] closure: { ... }
# 47| getExpr(): [ExplicitClosureExpr] { ... }
# 47| getParam(0): [ParamDecl] $0
# 47| Type = Int
# 47| getParam(1): [ParamDecl] $1
# 47| Type = Int
# 47| getBody(): [BraceStmt] { ... }
# 47| getElement(0): [ReturnStmt] return ...
# 47| getResult(): [BinaryExpr] ... .+(_:_:) ...
# 47| getFunction(): [MethodLookupExpr] .+(_:_:)
# 47| getBase(): [TypeExpr] Int.Type
# 47| getTypeRepr(): [TypeRepr] Int
# 47| getMethodRef(): [DeclRefExpr] +(_:_:)
# 47| getArgument(0): [Argument] : $0
# 47| getExpr(): [DeclRefExpr] $0
# 47| getArgument(1): [Argument] : $1
# 47| getExpr(): [DeclRefExpr] $1
# 48| [TopLevelCodeDecl] { ... }
# 48| getBody(): [BraceStmt] { ... }
# 48| getElement(0): [CallExpr] call to closured(closure:)
# 48| getFunction(): [DeclRefExpr] closured(closure:)
# 48| getArgument(0): [Argument] closure: { ... }
# 48| getExpr(): [ExplicitClosureExpr] { ... }
# 48| getParam(0): [ParamDecl] $0
# 48| Type = Int
# 48| getParam(1): [ParamDecl] $1
# 48| Type = Int
# 48| getBody(): [BraceStmt] { ... }
# 48| getElement(0): [ReturnStmt] return ...
# 48| getResult(): [BinaryExpr] ... .+(_:_:) ...
# 48| getFunction(): [MethodLookupExpr] .+(_:_:)
# 48| getBase(): [TypeExpr] Int.Type
# 48| getTypeRepr(): [TypeRepr] Int
# 48| getMethodRef(): [DeclRefExpr] +(_:_:)
# 48| getArgument(0): [Argument] : $0
# 48| getExpr(): [DeclRefExpr] $0
# 48| getArgument(1): [Argument] : $1
# 48| getExpr(): [DeclRefExpr] $1
# 50| [StructDecl] S
# 51| getMember(0): [PatternBindingDecl] var ... = ...
# 51| getPattern(0): [TypedPattern] ... as ...
# 51| getSubPattern(): [NamedPattern] x
# 51| getTypeRepr(): [TypeRepr] Int
# 51| getMember(1): [ConcreteVarDecl] x
# 51| Type = Int
# 51| getAccessor(0): [Accessor] get
# 51| InterfaceType = (S) -> () -> Int
# 51| getSelfParam(): [ParamDecl] self
# 51| Type = S
# 51| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
# 50| getMember(2): [Initializer] S.init(x:)
# 50| InterfaceType = (S.Type) -> (Int) -> S
# 50| getSelfParam(): [ParamDecl] self
# 50| Type = S
# 50| getParam(0): [ParamDecl] x
# 50| Type = Int
# 54| [TopLevelCodeDecl] { ... }
# 54| getBody(): [BraceStmt] { ... }
# 54| getElement(0): [AssignExpr] ... = ...
# 54| getDest(): [DiscardAssignmentExpr] _
# 54| getSource(): [KeyPathExpr] #keyPath(...)
# 54| getRoot(): [TypeRepr] S
# 54| getComponent(0): [KeyPathComponent] KeyPathComponent
# 56| [NamedFunction] unsafeFunction(pointer:)
# 56| InterfaceType = (UnsafePointer<Int>) -> ()
# 56| getParam(0): [ParamDecl] pointer
# 56| Type = UnsafePointer<Int>
# 56| getBody(): [BraceStmt] { ... }
# 58| [TopLevelCodeDecl] { ... }
# 58| getBody(): [BraceStmt] { ... }
# 58| getElement(0): [PatternBindingDecl] var ... = ...
# 58| getInit(0): [IntegerLiteralExpr] 1234
# 58| getPattern(0): [NamedPattern] myNumber
# 58| [ConcreteVarDecl] myNumber
# 58| Type = Int
# 59| [TopLevelCodeDecl] { ... }
# 59| getBody(): [BraceStmt] { ... }
# 59| getElement(0): [CallExpr] call to unsafeFunction(pointer:)
# 59| getFunction(): [DeclRefExpr] unsafeFunction(pointer:)
# 59| getArgument(0): [Argument] pointer: myNumber
# 59| getExpr(): [DeclRefExpr] myNumber
# 59| getExpr().getFullyConverted(): [InOutToPointerExpr] (UnsafePointer<Int>) ...
# 59| getSubExpr(): [InOutExpr] &...
# 60| [TopLevelCodeDecl] { ... }
# 60| getBody(): [BraceStmt] { ... }
# 60| getElement(0): [CallExpr] call to withUnsafePointer(to:_:)
# 60| getFunction(): [DeclRefExpr] withUnsafePointer(to:_:)
# 60| getArgument(0): [Argument] to: myNumber
# 60| getExpr(): [DeclRefExpr] myNumber
# 60| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 60| getArgument(1): [Argument] : { ... }
# 60| getExpr(): [ExplicitClosureExpr] { ... }
# 60| getParam(0): [ParamDecl] $0
# 60| Type = UnsafePointer<Int>
# 60| getBody(): [BraceStmt] { ... }
# 60| getElement(0): [ReturnStmt] return ...
# 60| getResult(): [CallExpr] call to unsafeFunction(pointer:)
# 60| getFunction(): [DeclRefExpr] unsafeFunction(pointer:)
# 60| getArgument(0): [Argument] pointer: $0
# 60| getExpr(): [DeclRefExpr] $0
# 62| [ClassDecl] FailingToInit
# 63| getMember(0): [Initializer] FailingToInit.init(x:)
# 63| InterfaceType = (FailingToInit.Type) -> (Int) -> FailingToInit?
# 63| getSelfParam(): [ParamDecl] self
# 63| Type = FailingToInit
# 63| getParam(0): [ParamDecl] x
# 63| Type = Int
# 63| getBody(): [BraceStmt] { ... }
# 64| getElement(0): [IfStmt] if ... then { ... }
# 64| getCondition(): [StmtCondition] StmtCondition
# 64| getElement(0): [ConditionElement] ... .<(_:_:) ...
# 64| getBoolean(): [BinaryExpr] ... .<(_:_:) ...
# 64| getFunction(): [MethodLookupExpr] .<(_:_:)
# 64| getBase(): [TypeExpr] Int.Type
# 64| getTypeRepr(): [TypeRepr] Int
# 64| getMethodRef(): [DeclRefExpr] <(_:_:)
# 64| getArgument(0): [Argument] : x
# 64| getExpr(): [DeclRefExpr] x
# 64| getArgument(1): [Argument] : 0
# 64| getExpr(): [IntegerLiteralExpr] 0
# 64| getThen(): [BraceStmt] { ... }
# 65| getElement(0): [FailStmt] fail
# 67| getElement(1): [ReturnStmt] return
# 62| getMember(1): [Deinitializer] FailingToInit.deinit()
# 62| InterfaceType = (FailingToInit) -> () -> ()
# 62| getSelfParam(): [ParamDecl] self
# 62| Type = FailingToInit
# 62| getBody(): [BraceStmt] { ... }
# 70| [ClassDecl] Base
# 71| getMember(0): [PatternBindingDecl] var ... = ...
# 71| getPattern(0): [TypedPattern] ... as ...
# 71| getSubPattern(): [NamedPattern] xx
# 71| getTypeRepr(): [TypeRepr] Int
# 71| getMember(1): [ConcreteVarDecl] xx
# 71| Type = Int
# 71| getAccessor(0): [Accessor] get
# 71| InterfaceType = (Base) -> () -> Int
# 71| getSelfParam(): [ParamDecl] self
# 71| Type = Base
# 71| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .xx
#-----| getBase(): [DeclRefExpr] self
# 72| getMember(2): [Initializer] Base.init(x:)
# 72| InterfaceType = (Base.Type) -> (Int) -> Base
# 72| getSelfParam(): [ParamDecl] self
# 72| Type = Base
# 72| getParam(0): [ParamDecl] x
# 72| Type = Int
# 72| getBody(): [BraceStmt] { ... }
# 73| getElement(0): [AssignExpr] ... = ...
# 73| getDest(): [MemberRefExpr] .xx
# 73| getBase(): [DeclRefExpr] self
# 73| getSource(): [DeclRefExpr] x
# 74| getElement(1): [ReturnStmt] return
# 70| getMember(3): [Deinitializer] Base.deinit()
# 70| InterfaceType = (Base) -> () -> ()
# 70| getSelfParam(): [ParamDecl] self
# 70| Type = Base
# 70| getBody(): [BraceStmt] { ... }
# 77| [ClassDecl] Derived
# 78| getMember(0): [Initializer] Derived.init()
# 78| InterfaceType = (Derived.Type) -> () -> Derived
# 78| getSelfParam(): [ParamDecl] self
# 78| Type = Derived
# 78| getBody(): [BraceStmt] { ... }
# 79| getElement(0): [RebindSelfInInitializerExpr] self = ...
# 79| getSubExpr(): [CallExpr] call to Base.init(x:)
# 79| getFunction(): [MethodLookupExpr] Base.init(x:)
# 79| getBase(): [SuperRefExpr] super
# 79| getMethodRef(): [OtherInitializerRefExpr] Base.init(x:)
# 79| getArgument(0): [Argument] x: 22
# 79| getExpr(): [IntegerLiteralExpr] 22
# 80| getElement(1): [ReturnStmt] return
# 77| getMember(1): [Deinitializer] Derived.deinit()
# 77| InterfaceType = (Derived) -> () -> ()
# 77| getSelfParam(): [ParamDecl] self
# 77| Type = Derived
# 77| getBody(): [BraceStmt] { ... }
# 77| getMember(2): [Initializer] Derived.init(x:)
# 77| InterfaceType = (Derived.Type) -> (Int) -> Derived
# 77| getSelfParam(): [ParamDecl] self
# 77| Type = Derived
#-----| getParam(0): [ParamDecl] x
#-----| Type = Int
# 77| getBody(): [BraceStmt] { ... }
# 77| getElement(0): [CallExpr] call to _unimplementedInitializer(className:initName:file:line:column:)
# 77| getFunction(): [DeclRefExpr] _unimplementedInitializer(className:initName:file:line:column:)
# 77| getArgument(0): [Argument] : expressions.Derived
# 77| getExpr(): [StringLiteralExpr] expressions.Derived
# 77| getArgument(1): [Argument] : #...
# 77| getExpr(): [MagicIdentifierLiteralExpr] #...
# 77| getArgument(2): [Argument] : #...
# 77| getExpr(): [MagicIdentifierLiteralExpr] #...
# 77| getArgument(3): [Argument] : #...
# 77| getExpr(): [MagicIdentifierLiteralExpr] #...
# 77| getArgument(4): [Argument] : #...
# 77| getExpr(): [MagicIdentifierLiteralExpr] #...
#-----| getElement(1): [ReturnStmt] return
# 83| [TopLevelCodeDecl] { ... }
# 83| getBody(): [BraceStmt] { ... }
# 83| getElement(0): [PatternBindingDecl] var ... = ...
# 83| getInit(0): [CallExpr] call to Derived.init()
# 83| getFunction(): [MethodLookupExpr] Derived.init()
# 83| getBase(): [TypeExpr] Derived.Type
# 83| getTypeRepr(): [TypeRepr] Derived
# 83| getMethodRef(): [DeclRefExpr] Derived.init()
# 83| getPattern(0): [NamedPattern] derived
# 83| [ConcreteVarDecl] derived
# 83| Type = Derived
# 84| [TopLevelCodeDecl] { ... }
# 84| getBody(): [BraceStmt] { ... }
# 84| getElement(0): [AssignExpr] ... = ...
# 84| getDest(): [DiscardAssignmentExpr] _
# 84| getSource(): [MemberRefExpr] .xx
# 84| getBase(): [DeclRefExpr] derived
# 84| getBase().getFullyConverted(): [DerivedToBaseExpr] (Base) ...
# 86| [TopLevelCodeDecl] { ... }
# 86| getBody(): [BraceStmt] { ... }
# 86| getElement(0): [PatternBindingDecl] var ... = ...
#-----| getInit(0): [NilLiteralExpr] nil
# 86| getPattern(0): [TypedPattern] ... as ...
# 86| getSubPattern(): [NamedPattern] opt
# 86| getTypeRepr(): [TypeRepr] Int?
# 86| [ConcreteVarDecl] opt
# 86| Type = Int?
# 87| [TopLevelCodeDecl] { ... }
# 87| getBody(): [BraceStmt] { ... }
# 87| getElement(0): [ForceValueExpr] ...!
# 87| getSubExpr(): [DeclRefExpr] opt
# 88| [TopLevelCodeDecl] { ... }
# 88| getBody(): [BraceStmt] { ... }
# 88| getElement(0): [ForceValueExpr] ...!
# 88| getSubExpr(): [SubscriptExpr] ...[...]
# 88| getBase(): [DeclRefExpr] d
# 88| getArgument(0): [Argument] : a
# 88| getExpr(): [StringLiteralExpr] a
# 90| [ClassDecl] ToPtr
# 90| getMember(0): [Deinitializer] ToPtr.deinit()
# 90| InterfaceType = (ToPtr) -> () -> ()
# 90| getSelfParam(): [ParamDecl] self
# 90| Type = ToPtr
# 90| getBody(): [BraceStmt] { ... }
# 90| getMember(1): [Initializer] ToPtr.init()
# 90| InterfaceType = (ToPtr.Type) -> () -> ToPtr
# 90| getSelfParam(): [ParamDecl] self
# 90| Type = ToPtr
# 90| getBody(): [BraceStmt] { ... }
# 90| getElement(0): [ReturnStmt] return
# 92| [TopLevelCodeDecl] { ... }
# 92| getBody(): [BraceStmt] { ... }
# 92| getElement(0): [PatternBindingDecl] var ... = ...
# 92| getInit(0): [CallExpr] call to toOpaque()
# 92| getFunction(): [MethodLookupExpr] .toOpaque()
# 92| getBase(): [CallExpr] call to passRetained(_:)
# 92| getFunction(): [MethodLookupExpr] .passRetained(_:)
# 92| getBase(): [TypeExpr] Unmanaged<ToPtr>.Type
# 92| getTypeRepr(): [TypeRepr] Unmanaged<ToPtr>
# 92| getMethodRef(): [DeclRefExpr] passRetained(_:)
# 92| getArgument(0): [Argument] : call to ToPtr.init()
# 92| getExpr(): [CallExpr] call to ToPtr.init()
# 92| getFunction(): [MethodLookupExpr] ToPtr.init()
# 92| getBase(): [TypeExpr] ToPtr.Type
# 92| getTypeRepr(): [TypeRepr] ToPtr
# 92| getMethodRef(): [DeclRefExpr] ToPtr.init()
# 92| getMethodRef(): [DeclRefExpr] toOpaque()
# 92| getPattern(0): [NamedPattern] opaque
# 92| [ConcreteVarDecl] opaque
# 92| Type = UnsafeMutableRawPointer
# 93| [TopLevelCodeDecl] { ... }
# 93| getBody(): [BraceStmt] { ... }
# 93| getElement(0): [CallExpr] call to fromOpaque(_:)
# 93| getFunction(): [MethodLookupExpr] .fromOpaque(_:)
# 93| getBase(): [TypeExpr] Unmanaged<ToPtr>.Type
# 93| getTypeRepr(): [TypeRepr] Unmanaged<ToPtr>
# 93| getMethodRef(): [DeclRefExpr] fromOpaque(_:)
# 93| getArgument(0): [Argument] : opaque
# 93| getExpr(): [DeclRefExpr] opaque
# 93| getExpr().getFullyConverted(): [PointerToPointerExpr] (UnsafeRawPointer) ...
# 95| [StructDecl] HasProperty
# 96| getMember(0): [PatternBindingDecl] var ... = ...
# 96| getPattern(0): [TypedPattern] ... as ...
# 96| getSubPattern(): [NamedPattern] settableField
# 96| getTypeRepr(): [TypeRepr] Int
# 96| getMember(1): [ConcreteVarDecl] settableField
# 96| Type = Int
# 97| getAccessor(0): [Accessor] set
# 97| InterfaceType = (inout HasProperty) -> (Int) -> ()
# 97| getSelfParam(): [ParamDecl] self
# 97| Type = HasProperty
# 97| getParam(0): [ParamDecl] newValue
# 97| Type = Int
# 97| getBody(): [BraceStmt] { ... }
# 98| getAccessor(1): [Accessor] get
# 98| InterfaceType = (HasProperty) -> () -> Int
# 98| getSelfParam(): [ParamDecl] self
# 98| Type = HasProperty
# 98| getBody(): [BraceStmt] { ... }
# 99| getElement(0): [ReturnStmt] return ...
# 99| getResult(): [IntegerLiteralExpr] 0
# 96| getAccessor(2): [Accessor] _modify
# 96| InterfaceType = (inout HasProperty) -> () -> ()
# 96| getSelfParam(): [ParamDecl] self
# 96| Type = HasProperty
# 96| getBody(): [BraceStmt] { ... }
# 96| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .settableField
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 105| getMember(2): [PatternBindingDecl] var ... = ...
# 105| getPattern(0): [TypedPattern] ... as ...
# 105| getSubPattern(): [NamedPattern] readOnlyField1
# 105| getTypeRepr(): [TypeRepr] Int
# 105| getMember(3): [ConcreteVarDecl] readOnlyField1
# 105| Type = Int
# 105| getAccessor(0): [Accessor] get
# 105| InterfaceType = (HasProperty) -> () -> Int
# 105| getSelfParam(): [ParamDecl] self
# 105| Type = HasProperty
# 105| getBody(): [BraceStmt] { ... }
# 106| getElement(0): [ReturnStmt] return ...
# 106| getResult(): [IntegerLiteralExpr] 0
# 110| getMember(4): [PatternBindingDecl] var ... = ...
# 110| getPattern(0): [TypedPattern] ... as ...
# 110| getSubPattern(): [NamedPattern] readOnlyField2
# 110| getTypeRepr(): [TypeRepr] Int
# 110| getMember(5): [ConcreteVarDecl] readOnlyField2
# 110| Type = Int
# 111| getAccessor(0): [Accessor] get
# 111| InterfaceType = (HasProperty) -> () -> Int
# 111| getSelfParam(): [ParamDecl] self
# 111| Type = HasProperty
# 111| getBody(): [BraceStmt] { ... }
# 112| getElement(0): [ReturnStmt] return ...
# 112| getResult(): [IntegerLiteralExpr] 0
# 116| getMember(6): [PatternBindingDecl] var ... = ...
# 116| getPattern(0): [TypedPattern] ... as ...
# 116| getSubPattern(): [NamedPattern] normalField
# 116| getTypeRepr(): [TypeRepr] Int
# 116| getMember(7): [ConcreteVarDecl] normalField
# 116| Type = Int
# 116| getAccessor(0): [Accessor] get
# 116| InterfaceType = (HasProperty) -> () -> Int
# 116| getSelfParam(): [ParamDecl] self
# 116| Type = HasProperty
# 116| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .normalField
#-----| getBase(): [DeclRefExpr] self
# 116| getAccessor(1): [Accessor] set
# 116| InterfaceType = (inout HasProperty) -> (Int) -> ()
# 116| getSelfParam(): [ParamDecl] self
# 116| Type = HasProperty
# 116| getParam(0): [ParamDecl] value
# 116| Type = Int
# 116| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .normalField
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 116| getAccessor(2): [Accessor] _modify
# 116| InterfaceType = (inout HasProperty) -> () -> ()
# 116| getSelfParam(): [ParamDecl] self
# 116| Type = HasProperty
# 116| getBody(): [BraceStmt] { ... }
# 116| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .normalField
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 118| getMember(8): [SubscriptDecl] subscript ...
# 119| getAccessor(0): [Accessor] get
# 119| InterfaceType = (HasProperty) -> (Int) -> Int
# 119| getSelfParam(): [ParamDecl] self
# 119| Type = HasProperty
# 118| getParam(0): [ParamDecl] x
# 118| Type = Int
# 119| getBody(): [BraceStmt] { ... }
# 120| getElement(0): [ReturnStmt] return ...
# 120| getResult(): [IntegerLiteralExpr] 0
# 122| getAccessor(1): [Accessor] set
# 122| InterfaceType = (inout HasProperty) -> (Int, Int) -> ()
# 122| getSelfParam(): [ParamDecl] self
# 122| Type = HasProperty
# 122| getParam(0): [ParamDecl] newValue
# 122| Type = Int
# 118| getParam(1): [ParamDecl] x
# 118| Type = Int
# 122| getBody(): [BraceStmt] { ... }
# 118| getAccessor(2): [Accessor] _modify
# 118| InterfaceType = (inout HasProperty) -> (Int) -> ()
# 118| getSelfParam(): [ParamDecl] self
# 118| Type = HasProperty
#-----| getParam(0): [ParamDecl] x
#-----| Type = Int
# 118| getBody(): [BraceStmt] { ... }
# 118| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [SubscriptExpr] ...[...]
#-----| getBase(): [DeclRefExpr] self
#-----| getArgument(0): [Argument] : x
#-----| getExpr(): [DeclRefExpr] x
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 118| getParam(0): [ParamDecl] x
# 118| Type = Int
# 125| getMember(9): [SubscriptDecl] subscript ...
# 125| getAccessor(0): [Accessor] get
# 125| InterfaceType = (HasProperty) -> (Int, Int) -> Int
# 125| getSelfParam(): [ParamDecl] self
# 125| Type = HasProperty
# 125| getParam(0): [ParamDecl] x
# 125| Type = Int
# 125| getParam(1): [ParamDecl] y
# 125| Type = Int
# 125| getBody(): [BraceStmt] { ... }
# 126| getElement(0): [ReturnStmt] return ...
# 126| getResult(): [IntegerLiteralExpr] 0
# 125| getParam(0): [ParamDecl] x
# 125| Type = Int
# 125| getParam(1): [ParamDecl] y
# 125| Type = Int
# 95| getMember(10): [Initializer] HasProperty.init(normalField:)
# 95| InterfaceType = (HasProperty.Type) -> (Int) -> HasProperty
# 95| getSelfParam(): [ParamDecl] self
# 95| Type = HasProperty
# 95| getParam(0): [ParamDecl] normalField
# 95| Type = Int
# 103| [Comment] // A field can be marked as read-only by dirctly implementing
# 103|
# 104| [Comment] // the getter between the braces.
# 104|
# 109| [Comment] // Or by adding an access declaration
# 109|
# 130| [NamedFunction] testProperties(hp:)
# 130| InterfaceType = (inout HasProperty) -> Int
# 130| getParam(0): [ParamDecl] hp
# 130| Type = HasProperty
# 130| getBody(): [BraceStmt] { ... }
# 132| getVariable(0): [ConcreteVarDecl] x
# 132| Type = Int
# 133| getVariable(1): [ConcreteVarDecl] y
# 133| Type = Int
# 134| getVariable(2): [ConcreteVarDecl] z
# 134| Type = Int
# 136| getVariable(3): [ConcreteVarDecl] w
# 136| Type = Int
# 131| getElement(0): [AssignExpr] ... = ...
# 131| getDest(): [MemberRefExpr] .settableField
# 131| getBase(): [DeclRefExpr] hp
# 131| getSource(): [IntegerLiteralExpr] 42
# 132| getElement(1): [PatternBindingDecl] var ... = ...
# 132| getInit(0): [MemberRefExpr] .settableField
# 132| getBase(): [DeclRefExpr] hp
# 132| getInit(0).getFullyConverted(): [LoadExpr] (Int) ...
# 132| getPattern(0): [NamedPattern] x
# 133| getElement(2): [PatternBindingDecl] var ... = ...
# 133| getInit(0): [MemberRefExpr] .readOnlyField1
# 133| getBase(): [DeclRefExpr] hp
# 133| getBase().getFullyConverted(): [LoadExpr] (HasProperty) ...
# 133| getPattern(0): [NamedPattern] y
# 134| getElement(3): [PatternBindingDecl] var ... = ...
# 134| getInit(0): [MemberRefExpr] .readOnlyField2
# 134| getBase(): [DeclRefExpr] hp
# 134| getBase().getFullyConverted(): [LoadExpr] (HasProperty) ...
# 134| getPattern(0): [NamedPattern] z
# 135| getElement(4): [AssignExpr] ... = ...
# 135| getDest(): [MemberRefExpr] .normalField
# 135| getBase(): [DeclRefExpr] hp
# 135| getSource(): [IntegerLiteralExpr] 99
# 136| getElement(5): [PatternBindingDecl] var ... = ...
# 136| getInit(0): [MemberRefExpr] .normalField
# 136| getBase(): [DeclRefExpr] hp
# 136| getInit(0).getFullyConverted(): [LoadExpr] (Int) ...
# 136| getPattern(0): [NamedPattern] w
# 137| getElement(6): [AssignExpr] ... = ...
# 137| getDest(): [SubscriptExpr] ...[...]
# 137| getBase(): [DeclRefExpr] hp
# 137| getBase().getFullyConverted(): [InOutExpr] &...
# 137| getArgument(0): [Argument] : 1
# 137| getExpr(): [IntegerLiteralExpr] 1
# 137| getSource(): [IntegerLiteralExpr] 2
# 138| getElement(7): [ReturnStmt] return ...
# 138| getResult(): [SubscriptExpr] ...[...]
# 138| getBase(): [DeclRefExpr] hp
# 138| getBase().getFullyConverted(): [LoadExpr] (HasProperty) ...
# 138| getArgument(0): [Argument] : 3
# 138| getExpr(): [IntegerLiteralExpr] 3
# 138| getArgument(1): [Argument] : 4
# 138| getExpr(): [IntegerLiteralExpr] 4
# 141| [StructDecl] B
# 142| getMember(0): [PatternBindingDecl] var ... = ...
# 142| getPattern(0): [TypedPattern] ... as ...
# 142| getSubPattern(): [NamedPattern] x
# 142| getTypeRepr(): [TypeRepr] Int
# 142| getMember(1): [ConcreteVarDecl] x
# 142| Type = Int
# 142| getAccessor(0): [Accessor] get
# 142| InterfaceType = (B) -> () -> Int
# 142| getSelfParam(): [ParamDecl] self
# 142| Type = B
# 142| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
# 142| getAccessor(1): [Accessor] set
# 142| InterfaceType = (inout B) -> (Int) -> ()
# 142| getSelfParam(): [ParamDecl] self
# 142| Type = B
# 142| getParam(0): [ParamDecl] value
# 142| Type = Int
# 142| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 142| getAccessor(2): [Accessor] _modify
# 142| InterfaceType = (inout B) -> () -> ()
# 142| getSelfParam(): [ParamDecl] self
# 142| Type = B
# 142| getBody(): [BraceStmt] { ... }
# 142| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 141| getMember(2): [Initializer] B.init(x:)
# 141| InterfaceType = (B.Type) -> (Int) -> B
# 141| getSelfParam(): [ParamDecl] self
# 141| Type = B
# 141| getParam(0): [ParamDecl] x
# 141| Type = Int
# 145| [StructDecl] A
# 146| getMember(0): [PatternBindingDecl] var ... = ...
# 146| getPattern(0): [TypedPattern] ... as ...
# 146| getSubPattern(): [NamedPattern] b
# 146| getTypeRepr(): [TypeRepr] B
# 146| getMember(1): [ConcreteVarDecl] b
# 146| Type = B
# 146| getAccessor(0): [Accessor] get
# 146| InterfaceType = (A) -> () -> B
# 146| getSelfParam(): [ParamDecl] self
# 146| Type = A
# 146| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .b
#-----| getBase(): [DeclRefExpr] self
# 146| getAccessor(1): [Accessor] set
# 146| InterfaceType = (inout A) -> (B) -> ()
# 146| getSelfParam(): [ParamDecl] self
# 146| Type = A
# 146| getParam(0): [ParamDecl] value
# 146| Type = B
# 146| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .b
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 146| getAccessor(2): [Accessor] _modify
# 146| InterfaceType = (inout A) -> () -> ()
# 146| getSelfParam(): [ParamDecl] self
# 146| Type = A
# 146| getBody(): [BraceStmt] { ... }
# 146| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .b
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 147| getMember(2): [PatternBindingDecl] var ... = ...
# 147| getPattern(0): [TypedPattern] ... as ...
# 147| getSubPattern(): [NamedPattern] bs
# 147| getTypeRepr(): [TypeRepr] [B]
# 147| getMember(3): [ConcreteVarDecl] bs
# 147| Type = [B]
# 147| getAccessor(0): [Accessor] get
# 147| InterfaceType = (A) -> () -> [B]
# 147| getSelfParam(): [ParamDecl] self
# 147| Type = A
# 147| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .bs
#-----| getBase(): [DeclRefExpr] self
# 147| getAccessor(1): [Accessor] set
# 147| InterfaceType = (inout A) -> ([B]) -> ()
# 147| getSelfParam(): [ParamDecl] self
# 147| Type = A
# 147| getParam(0): [ParamDecl] value
# 147| Type = [B]
# 147| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .bs
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 147| getAccessor(2): [Accessor] _modify
# 147| InterfaceType = (inout A) -> () -> ()
# 147| getSelfParam(): [ParamDecl] self
# 147| Type = A
# 147| getBody(): [BraceStmt] { ... }
# 147| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .bs
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 148| getMember(4): [PatternBindingDecl] var ... = ...
#-----| getInit(0): [NilLiteralExpr] nil
# 148| getPattern(0): [TypedPattern] ... as ...
# 148| getSubPattern(): [NamedPattern] mayB
# 148| getTypeRepr(): [TypeRepr] B?
# 148| getMember(5): [ConcreteVarDecl] mayB
# 148| Type = B?
# 148| getAccessor(0): [Accessor] get
# 148| InterfaceType = (A) -> () -> B?
# 148| getSelfParam(): [ParamDecl] self
# 148| Type = A
# 148| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .mayB
#-----| getBase(): [DeclRefExpr] self
# 148| getAccessor(1): [Accessor] set
# 148| InterfaceType = (inout A) -> (B?) -> ()
# 148| getSelfParam(): [ParamDecl] self
# 148| Type = A
# 148| getParam(0): [ParamDecl] value
# 148| Type = B?
# 148| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .mayB
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 148| getAccessor(2): [Accessor] _modify
# 148| InterfaceType = (inout A) -> () -> ()
# 148| getSelfParam(): [ParamDecl] self
# 148| Type = A
# 148| getBody(): [BraceStmt] { ... }
# 148| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .mayB
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 145| getMember(6): [Initializer] A.init(b:bs:mayB:)
# 145| InterfaceType = (A.Type) -> (B, [B], B?) -> A
# 145| getSelfParam(): [ParamDecl] self
# 145| Type = A
# 145| getParam(0): [ParamDecl] b
# 145| Type = B
# 145| getParam(1): [ParamDecl] bs
# 145| Type = [B]
# 145| getParam(2): [ParamDecl] mayB
# 145| Type = B?
# 151| [NamedFunction] test(a:keyPathInt:keyPathB:)
# 151| InterfaceType = (A, WritableKeyPath<A, Int>, WritableKeyPath<A, B>) -> ()
# 151| getParam(0): [ParamDecl] a
# 151| Type = A
# 151| getParam(1): [ParamDecl] keyPathInt
# 151| Type = WritableKeyPath<A, Int>
# 151| getParam(2): [ParamDecl] keyPathB
# 151| Type = WritableKeyPath<A, B>
# 151| getBody(): [BraceStmt] { ... }
# 152| getVariable(0): [ConcreteVarDecl] apply_keyPathInt
# 152| Type = Int
# 153| getVariable(1): [ConcreteVarDecl] apply_keyPathB
# 153| Type = B
# 154| getVariable(2): [ConcreteVarDecl] nested_apply
# 154| Type = Int
# 152| getElement(0): [PatternBindingDecl] var ... = ...
# 152| getInit(0): [KeyPathApplicationExpr] \...[...]
# 152| getBase(): [DeclRefExpr] a
# 152| getKeyPath(): [DeclRefExpr] keyPathInt
# 152| getPattern(0): [NamedPattern] apply_keyPathInt
# 153| getElement(1): [PatternBindingDecl] var ... = ...
# 153| getInit(0): [KeyPathApplicationExpr] \...[...]
# 153| getBase(): [DeclRefExpr] a
# 153| getKeyPath(): [DeclRefExpr] keyPathB
# 153| getPattern(0): [NamedPattern] apply_keyPathB
# 154| getElement(2): [PatternBindingDecl] var ... = ...
# 154| getInit(0): [KeyPathApplicationExpr] \...[...]
# 154| getBase(): [KeyPathApplicationExpr] \...[...]
# 154| getBase(): [DeclRefExpr] a
# 154| getKeyPath(): [DeclRefExpr] keyPathB
# 154| getKeyPath(): [KeyPathExpr] #keyPath(...)
# 154| getRoot(): [TypeRepr] B
# 154| getComponent(0): [KeyPathComponent] KeyPathComponent
# 154| getPattern(0): [NamedPattern] nested_apply
# 157| [NamedFunction] bitwise()
# 157| InterfaceType = () -> ()
# 157| getBody(): [BraceStmt] { ... }
# 158| getElement(0): [AssignExpr] ... = ...
# 158| getDest(): [DiscardAssignmentExpr] _
# 158| getSource(): [PrefixUnaryExpr] call to ~(_:)
# 158| getFunction(): [MethodLookupExpr] .~(_:)
# 158| getBase(): [TypeExpr] Int.Type
# 158| getTypeRepr(): [TypeRepr] Int
# 158| getMethodRef(): [DeclRefExpr] ~(_:)
# 158| getArgument(0): [Argument] : 1
# 158| getExpr(): [IntegerLiteralExpr] 1
# 159| getElement(1): [AssignExpr] ... = ...
# 159| getDest(): [DiscardAssignmentExpr] _
# 159| getSource(): [BinaryExpr] ... .&(_:_:) ...
# 159| getFunction(): [MethodLookupExpr] .&(_:_:)
# 159| getBase(): [TypeExpr] Int.Type
# 159| getTypeRepr(): [TypeRepr] Int
# 159| getMethodRef(): [DeclRefExpr] &(_:_:)
# 159| getArgument(0): [Argument] : 1
# 159| getExpr(): [IntegerLiteralExpr] 1
# 159| getArgument(1): [Argument] : 2
# 159| getExpr(): [IntegerLiteralExpr] 2
# 160| getElement(2): [AssignExpr] ... = ...
# 160| getDest(): [DiscardAssignmentExpr] _
# 160| getSource(): [BinaryExpr] ... .|(_:_:) ...
# 160| getFunction(): [MethodLookupExpr] .|(_:_:)
# 160| getBase(): [TypeExpr] Int.Type
# 160| getTypeRepr(): [TypeRepr] Int
# 160| getMethodRef(): [DeclRefExpr] |(_:_:)
# 160| getArgument(0): [Argument] : 1
# 160| getExpr(): [IntegerLiteralExpr] 1
# 160| getArgument(1): [Argument] : 2
# 160| getExpr(): [IntegerLiteralExpr] 2
# 161| getElement(3): [AssignExpr] ... = ...
# 161| getDest(): [DiscardAssignmentExpr] _
# 161| getSource(): [BinaryExpr] ... .^(_:_:) ...
# 161| getFunction(): [MethodLookupExpr] .^(_:_:)
# 161| getBase(): [TypeExpr] Int.Type
# 161| getTypeRepr(): [TypeRepr] Int
# 161| getMethodRef(): [DeclRefExpr] ^(_:_:)
# 161| getArgument(0): [Argument] : 1
# 161| getExpr(): [IntegerLiteralExpr] 1
# 161| getArgument(1): [Argument] : 2
# 161| getExpr(): [IntegerLiteralExpr] 2
# 162| getElement(4): [AssignExpr] ... = ...
# 162| getDest(): [DiscardAssignmentExpr] _
# 162| getSource(): [BinaryExpr] ... .<<(_:_:) ...
# 162| getFunction(): [MethodLookupExpr] .<<(_:_:)
# 162| getBase(): [TypeExpr] Int.Type
# 162| getTypeRepr(): [TypeRepr] Int
# 162| getMethodRef(): [DeclRefExpr] <<(_:_:)
# 162| getArgument(0): [Argument] : 1
# 162| getExpr(): [IntegerLiteralExpr] 1
# 162| getArgument(1): [Argument] : 0
# 162| getExpr(): [IntegerLiteralExpr] 0
# 163| getElement(5): [AssignExpr] ... = ...
# 163| getDest(): [DiscardAssignmentExpr] _
# 163| getSource(): [BinaryExpr] ... .>>(_:_:) ...
# 163| getFunction(): [MethodLookupExpr] .>>(_:_:)
# 163| getBase(): [TypeExpr] Int.Type
# 163| getTypeRepr(): [TypeRepr] Int
# 163| getMethodRef(): [DeclRefExpr] >>(_:_:)
# 163| getArgument(0): [Argument] : 1
# 163| getExpr(): [IntegerLiteralExpr] 1
# 163| getArgument(1): [Argument] : 0
# 163| getExpr(): [IntegerLiteralExpr] 0
# 166| [StructDecl] Bar
# 167| getMember(0): [PatternBindingDecl] var ... = ...
# 167| getPattern(0): [TypedPattern] ... as ...
# 167| getSubPattern(): [NamedPattern] value
# 167| getTypeRepr(): [TypeRepr] Int
# 167| getMember(1): [ConcreteVarDecl] value
# 167| Type = Int
# 167| getAccessor(0): [Accessor] get
# 167| InterfaceType = (Bar) -> () -> Int
# 167| getSelfParam(): [ParamDecl] self
# 167| Type = Bar
# 167| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .value
#-----| getBase(): [DeclRefExpr] self
# 167| getAccessor(1): [Accessor] set
# 167| InterfaceType = (inout Bar) -> (Int) -> ()
# 167| getSelfParam(): [ParamDecl] self
# 167| Type = Bar
# 167| getParam(0): [ParamDecl] value
# 167| Type = Int
# 167| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .value
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 167| getAccessor(2): [Accessor] _modify
# 167| InterfaceType = (inout Bar) -> () -> ()
# 167| getSelfParam(): [ParamDecl] self
# 167| Type = Bar
# 167| getBody(): [BraceStmt] { ... }
# 167| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .value
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 168| getMember(2): [PatternBindingDecl] var ... = ...
#-----| getInit(0): [NilLiteralExpr] nil
# 168| getPattern(0): [TypedPattern] ... as ...
# 168| getSubPattern(): [NamedPattern] opt
# 168| getTypeRepr(): [TypeRepr] Int?
# 168| getMember(3): [ConcreteVarDecl] opt
# 168| Type = Int?
# 168| getAccessor(0): [Accessor] get
# 168| InterfaceType = (Bar) -> () -> Int?
# 168| getSelfParam(): [ParamDecl] self
# 168| Type = Bar
# 168| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .opt
#-----| getBase(): [DeclRefExpr] self
# 168| getAccessor(1): [Accessor] set
# 168| InterfaceType = (inout Bar) -> (Int?) -> ()
# 168| getSelfParam(): [ParamDecl] self
# 168| Type = Bar
# 168| getParam(0): [ParamDecl] value
# 168| Type = Int?
# 168| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .opt
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 168| getAccessor(2): [Accessor] _modify
# 168| InterfaceType = (inout Bar) -> () -> ()
# 168| getSelfParam(): [ParamDecl] self
# 168| Type = Bar
# 168| getBody(): [BraceStmt] { ... }
# 168| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .opt
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 166| getMember(4): [Initializer] Bar.init(value:opt:)
# 166| InterfaceType = (Bar.Type) -> (Int, Int?) -> Bar
# 166| getSelfParam(): [ParamDecl] self
# 166| Type = Bar
# 166| getParam(0): [ParamDecl] value
# 166| Type = Int
# 166| getParam(1): [ParamDecl] opt
# 166| Type = Int?
# 171| [StructDecl] Foo
# 172| getMember(0): [PatternBindingDecl] var ... = ...
# 172| getPattern(0): [TypedPattern] ... as ...
# 172| getSubPattern(): [NamedPattern] value
# 172| getTypeRepr(): [TypeRepr] Int
# 172| getMember(1): [ConcreteVarDecl] value
# 172| Type = Int
# 172| getAccessor(0): [Accessor] get
# 172| InterfaceType = (Foo) -> () -> Int
# 172| getSelfParam(): [ParamDecl] self
# 172| Type = Foo
# 172| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .value
#-----| getBase(): [DeclRefExpr] self
# 172| getAccessor(1): [Accessor] set
# 172| InterfaceType = (inout Foo) -> (Int) -> ()
# 172| getSelfParam(): [ParamDecl] self
# 172| Type = Foo
# 172| getParam(0): [ParamDecl] value
# 172| Type = Int
# 172| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .value
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 172| getAccessor(2): [Accessor] _modify
# 172| InterfaceType = (inout Foo) -> () -> ()
# 172| getSelfParam(): [ParamDecl] self
# 172| Type = Foo
# 172| getBody(): [BraceStmt] { ... }
# 172| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .value
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 173| getMember(2): [PatternBindingDecl] var ... = ...
#-----| getInit(0): [NilLiteralExpr] nil
# 173| getPattern(0): [TypedPattern] ... as ...
# 173| getSubPattern(): [NamedPattern] opt
# 173| getTypeRepr(): [TypeRepr] Bar?
# 173| getMember(3): [ConcreteVarDecl] opt
# 173| Type = Bar?
# 173| getAccessor(0): [Accessor] get
# 173| InterfaceType = (Foo) -> () -> Bar?
# 173| getSelfParam(): [ParamDecl] self
# 173| Type = Foo
# 173| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .opt
#-----| getBase(): [DeclRefExpr] self
# 173| getAccessor(1): [Accessor] set
# 173| InterfaceType = (inout Foo) -> (Bar?) -> ()
# 173| getSelfParam(): [ParamDecl] self
# 173| Type = Foo
# 173| getParam(0): [ParamDecl] value
# 173| Type = Bar?
# 173| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .opt
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 173| getAccessor(2): [Accessor] _modify
# 173| InterfaceType = (inout Foo) -> () -> ()
# 173| getSelfParam(): [ParamDecl] self
# 173| Type = Foo
# 173| getBody(): [BraceStmt] { ... }
# 173| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .opt
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 171| getMember(4): [Initializer] Foo.init(value:opt:)
# 171| InterfaceType = (Foo.Type) -> (Int, Bar?) -> Foo
# 171| getSelfParam(): [ParamDecl] self
# 171| Type = Foo
# 171| getParam(0): [ParamDecl] value
# 171| Type = Int
# 171| getParam(1): [ParamDecl] opt
# 171| Type = Bar?
# 176| [TopLevelCodeDecl] { ... }
# 176| getBody(): [BraceStmt] { ... }
# 176| getElement(0): [PatternBindingDecl] var ... = ...
# 176| getInit(0): [KeyPathExpr] #keyPath(...)
# 176| getRoot(): [TypeRepr] Foo
# 176| getComponent(0): [KeyPathComponent] KeyPathComponent
# 176| getPattern(0): [NamedPattern] prop
# 176| [ConcreteVarDecl] prop
# 176| Type = WritableKeyPath<Foo, Int>
# 177| [TopLevelCodeDecl] { ... }
# 177| getBody(): [BraceStmt] { ... }
# 177| getElement(0): [PatternBindingDecl] var ... = ...
# 177| getInit(0): [KeyPathExpr] #keyPath(...)
# 177| getRoot(): [TypeRepr] [Int]
# 177| getComponent(0): [KeyPathComponent] KeyPathComponent
# 177| getSubscriptArgument(0): [Argument] : 0
# 177| getExpr(): [IntegerLiteralExpr] 0
# 177| getPattern(0): [NamedPattern] arrElement
# 177| [ConcreteVarDecl] arrElement
# 177| Type = WritableKeyPath<[Int], Int>
# 178| [TopLevelCodeDecl] { ... }
# 178| getBody(): [BraceStmt] { ... }
# 178| getElement(0): [PatternBindingDecl] var ... = ...
# 178| getInit(0): [KeyPathExpr] #keyPath(...)
# 178| getRoot(): [TypeRepr] [String : Int]
# 178| getComponent(0): [KeyPathComponent] KeyPathComponent
# 178| getSubscriptArgument(0): [Argument] : a
# 178| getExpr(): [StringLiteralExpr] a
# 178| getPattern(0): [NamedPattern] dictElement
# 178| [ConcreteVarDecl] dictElement
# 178| Type = WritableKeyPath<[String : Int], Int?>
# 179| [TopLevelCodeDecl] { ... }
# 179| getBody(): [BraceStmt] { ... }
# 179| getElement(0): [PatternBindingDecl] var ... = ...
# 179| getInit(0): [KeyPathExpr] #keyPath(...)
# 179| getRoot(): [TypeRepr] Optional<Int>
# 179| getComponent(0): [KeyPathComponent] KeyPathComponent
# 179| getComponent(1): [KeyPathComponent] KeyPathComponent
# 179| getPattern(0): [NamedPattern] optForce
# 179| [ConcreteVarDecl] optForce
# 179| Type = WritableKeyPath<Optional<Int>, Int>
# 180| [TopLevelCodeDecl] { ... }
# 180| getBody(): [BraceStmt] { ... }
# 180| getElement(0): [PatternBindingDecl] var ... = ...
# 180| getInit(0): [KeyPathExpr] #keyPath(...)
# 180| getRoot(): [TypeRepr] Foo
# 180| getComponent(0): [KeyPathComponent] KeyPathComponent
# 180| getComponent(1): [KeyPathComponent] KeyPathComponent
# 180| getComponent(2): [KeyPathComponent] KeyPathComponent
# 180| getPattern(0): [NamedPattern] optChain
# 180| [ConcreteVarDecl] optChain
# 180| Type = KeyPath<Foo, Int?>
# 181| [TopLevelCodeDecl] { ... }
# 181| getBody(): [BraceStmt] { ... }
# 181| getElement(0): [PatternBindingDecl] var ... = ...
# 181| getInit(0): [KeyPathExpr] #keyPath(...)
# 181| getRoot(): [TypeRepr] Foo
# 181| getComponent(0): [KeyPathComponent] KeyPathComponent
# 181| getComponent(1): [KeyPathComponent] KeyPathComponent
# 181| getComponent(2): [KeyPathComponent] KeyPathComponent
#-----| getComponent(3): [KeyPathComponent] KeyPathComponent
# 181| getPattern(0): [NamedPattern] optChainWrap
# 181| [ConcreteVarDecl] optChainWrap
# 181| Type = KeyPath<Foo, Int?>
# 182| [TopLevelCodeDecl] { ... }
# 182| getBody(): [BraceStmt] { ... }
# 182| getElement(0): [PatternBindingDecl] var ... = ...
# 182| getInit(0): [KeyPathExpr] #keyPath(...)
# 182| getRoot(): [TypeRepr] Int
# 182| getComponent(0): [KeyPathComponent] KeyPathComponent
# 182| getPattern(0): [NamedPattern] slf
# 182| [ConcreteVarDecl] slf
# 182| Type = WritableKeyPath<Int, Int>
# 183| [TopLevelCodeDecl] { ... }
# 183| getBody(): [BraceStmt] { ... }
# 183| getElement(0): [PatternBindingDecl] var ... = ...
# 183| getInit(0): [KeyPathExpr] #keyPath(...)
# 183| getRoot(): [TypeRepr] (Int, Int)
# 183| getComponent(0): [KeyPathComponent] KeyPathComponent
# 183| getPattern(0): [NamedPattern] tupleElement
# 183| [ConcreteVarDecl] tupleElement
# 183| Type = WritableKeyPath<(Int, Int), Int>
# 185| [NamedFunction] makeTuple(_:)
# 185| InterfaceType = <each T> (repeat each T) -> (repeat each T)
# 185| getGenericTypeParam(0): [GenericTypeParamDecl] T
# 185| getParam(0): [ParamDecl] t
# 185| Type = repeat each T
# 185| getBody(): [BraceStmt] { ... }
# 186| getElement(0): [ReturnStmt] return ...
# 186| getResult(): [TupleExpr] (...)
# 186| getElement(0): [PackExpansionExpr] PackExpansionExpr
# 186| getPatternExpr(): [PackElementExpr] PackElementExpr
# 186| getSubExpr(): [DeclRefExpr] t
# 189| [TopLevelCodeDecl] { ... }
# 189| getBody(): [BraceStmt] { ... }
# 189| getElement(0): [PatternBindingDecl] var ... = ...
# 189| getInit(0): [CallExpr] call to makeTuple(_:)
# 189| getFunction(): [DeclRefExpr] makeTuple(_:)
# 189| getArgument(0): [Argument] : A
# 189| getExpr(): [StringLiteralExpr] A
# 189| getArgument(1): [Argument] : 2
# 189| getExpr(): [IntegerLiteralExpr] 2
# 189| getPattern(0): [AnyPattern] _
patterns.swift:
# 1| [NamedFunction] basic_patterns()
# 1| InterfaceType = () -> ()
# 1| getBody(): [BraceStmt] { ... }
# 2| getVariable(0): [ConcreteVarDecl] an_int
# 2| Type = Int
# 3| getVariable(1): [ConcreteVarDecl] a_string
# 3| Type = String
# 4| getVariable(2): [ConcreteVarDecl] x
# 4| Type = Int
# 4| getVariable(3): [ConcreteVarDecl] y
# 4| Type = Int
# 4| getVariable(4): [ConcreteVarDecl] z
# 4| Type = Int
# 2| getElement(0): [PatternBindingDecl] var ... = ...
# 2| getInit(0): [IntegerLiteralExpr] 42
# 2| getPattern(0): [NamedPattern] an_int
# 3| getElement(1): [PatternBindingDecl] var ... = ...
# 3| getInit(0): [StringLiteralExpr] here
# 3| getPattern(0): [TypedPattern] ... as ...
# 3| getSubPattern(): [NamedPattern] a_string
# 3| getTypeRepr(): [TypeRepr] String
# 4| getElement(2): [PatternBindingDecl] var ... = ...
# 4| getInit(0): [TupleExpr] (...)
# 4| getElement(0): [IntegerLiteralExpr] 1
# 4| getElement(1): [IntegerLiteralExpr] 2
# 4| getElement(2): [IntegerLiteralExpr] 3
# 4| getPattern(0): [TuplePattern] (...)
# 4| getElement(0): [NamedPattern] x
# 4| getElement(1): [NamedPattern] y
# 4| getElement(2): [NamedPattern] z
# 5| getElement(3): [PatternBindingDecl] var ... = ...
# 5| getInit(0): [StringLiteralExpr] any
# 5| getPattern(0): [AnyPattern] _
# 6| getElement(4): [PatternBindingDecl] var ... = ...
# 6| getInit(0): [StringLiteralExpr] paren
# 6| getPattern(0): [AnyPattern] _
# 6| getPattern(0).getFullyUnresolved(): [ParenPattern] (...)
# 9| [NamedFunction] switch_patterns()
# 9| InterfaceType = () -> ()
# 9| getBody(): [BraceStmt] { ... }
# 10| getVariable(0): [ConcreteVarDecl] point
# 10| Type = (Int, Int)
# 24| getVariable(1): [ConcreteVarDecl] v
# 24| Type = Foo
# 31| getVariable(2): [ConcreteVarDecl] w
# 31| Type = Int?
# 38| getVariable(3): [ConcreteVarDecl] a
# 38| Type = Any
# 46| getVariable(4): [ConcreteVarDecl] b
# 46| Type = Bool
# 10| getElement(0): [PatternBindingDecl] var ... = ...
# 10| getInit(0): [TupleExpr] (...)
# 10| getElement(0): [IntegerLiteralExpr] 1
# 10| getElement(1): [IntegerLiteralExpr] 2
# 10| getPattern(0): [NamedPattern] point
# 11| getElement(1): [SwitchStmt] switch point { ... }
# 11| getExpr(): [DeclRefExpr] point
# 12| getCase(0): [CaseStmt] case ...
# 12| getLabel(0): [CaseLabelItem] (...)
# 12| getPattern(): [TuplePattern] (...)
# 12| getElement(0): [NamedPattern] xx
# 12| getElement(1): [NamedPattern] yy
# 12| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 12| getVariable(0): [ConcreteVarDecl] xx
# 12| Type = Int
# 12| getVariable(1): [ConcreteVarDecl] yy
# 12| Type = Int
# 12| getBody(): [BraceStmt] { ... }
# 12| getElement(0): [StringLiteralExpr] binding
# 15| getElement(2): [SwitchStmt] switch 3 { ... }
# 15| getExpr(): [IntegerLiteralExpr] 3
# 16| getCase(0): [CaseStmt] case ...
# 16| getLabel(0): [CaseLabelItem] =~ ...
# 16| getPattern(): [ExprPattern] =~ ...
# 16| getSubExpr(): [BinaryExpr] ... ~=(_:_:) ...
# 16| getFunction(): [DeclRefExpr] ~=(_:_:)
# 16| getArgument(0): [Argument] : ... .+(_:_:) ...
# 16| getExpr(): [BinaryExpr] ... .+(_:_:) ...
# 16| getFunction(): [MethodLookupExpr] .+(_:_:)
# 16| getBase(): [TypeExpr] Int.Type
# 16| getTypeRepr(): [TypeRepr] Int
# 16| getMethodRef(): [DeclRefExpr] +(_:_:)
# 16| getArgument(0): [Argument] : 1
# 16| getExpr(): [IntegerLiteralExpr] 1
# 16| getArgument(1): [Argument] : 2
# 16| getExpr(): [IntegerLiteralExpr] 2
# 16| getArgument(1): [Argument] : $match
# 16| getExpr(): [DeclRefExpr] $match
# 16| getBody(): [BraceStmt] { ... }
# 16| getElement(0): [StringLiteralExpr] expr
# 17| getCase(1): [CaseStmt] case ...
# 17| getLabel(0): [CaseLabelItem] _
# 17| getPattern(): [AnyPattern] _
# 17| getBody(): [BraceStmt] { ... }
# 17| getElement(0): [StringLiteralExpr]
# 20| getElement(3): [EnumDecl] Foo
# 21| getMember(0): [EnumCaseDecl] case ...
# 21| getMember(1): [EnumElementDecl] bar
# 21| getMember(2): [EnumElementDecl] baz
# 21| getParam(0): [ParamDecl] _
# 21| Type = Int
# 21| getParam(1): [ParamDecl] _
# 21| Type = String
# 24| getElement(4): [PatternBindingDecl] var ... = ...
# 24| getInit(0): [MethodLookupExpr] .bar
# 24| getBase(): [TypeExpr] Foo.Type
# 24| getTypeRepr(): [TypeRepr] Foo
# 24| getMethodRef(): [DeclRefExpr] bar
# 24| getPattern(0): [TypedPattern] ... as ...
# 24| getSubPattern(): [NamedPattern] v
# 24| getTypeRepr(): [TypeRepr] Foo
# 26| getElement(5): [SwitchStmt] switch v { ... }
# 26| getExpr(): [DeclRefExpr] v
# 27| getCase(0): [CaseStmt] case ...
# 27| getLabel(0): [CaseLabelItem] .bar
# 27| getPattern(): [EnumElementPattern] .bar
# 27| getBody(): [BraceStmt] { ... }
# 27| getElement(0): [StringLiteralExpr] bar
# 28| getCase(1): [CaseStmt] case ...
# 28| getLabel(0): [CaseLabelItem] .baz(...)
# 28| getPattern(): [EnumElementPattern] .baz(...)
# 28| getSubPattern(): [TuplePattern] (...)
# 28| getElement(0): [NamedPattern] i
# 28| getElement(1): [NamedPattern] s
# 28| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 28| getVariable(0): [ConcreteVarDecl] i
# 28| Type = Int
# 28| getVariable(1): [ConcreteVarDecl] s
# 28| Type = String
# 28| getBody(): [BraceStmt] { ... }
# 28| getElement(0): [DeclRefExpr] i
# 31| getElement(6): [PatternBindingDecl] var ... = ...
# 31| getInit(0): [NilLiteralExpr] nil
# 31| getPattern(0): [TypedPattern] ... as ...
# 31| getSubPattern(): [NamedPattern] w
# 31| getTypeRepr(): [TypeRepr] Int?
# 33| getElement(7): [SwitchStmt] switch w { ... }
# 33| getExpr(): [DeclRefExpr] w
# 34| getCase(0): [CaseStmt] case ...
# 34| getLabel(0): [CaseLabelItem] let ...?
# 34| getPattern(): [OptionalSomePattern] let ...?
# 34| getSubPattern(): [NamedPattern] n
# 34| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 34| getVariable(0): [ConcreteVarDecl] n
# 34| Type = Int
# 34| getBody(): [BraceStmt] { ... }
# 34| getElement(0): [DeclRefExpr] n
# 35| getCase(1): [CaseStmt] case ...
# 35| getLabel(0): [CaseLabelItem] _
# 35| getPattern(): [AnyPattern] _
# 35| getBody(): [BraceStmt] { ... }
# 35| getElement(0): [StringLiteralExpr] none
# 38| getElement(8): [PatternBindingDecl] var ... = ...
# 38| getInit(0): [StringLiteralExpr] any
# 38| getInit(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 38| getPattern(0): [TypedPattern] ... as ...
# 38| getSubPattern(): [NamedPattern] a
# 38| getTypeRepr(): [TypeRepr] Any
# 40| getElement(9): [SwitchStmt] switch a { ... }
# 40| getExpr(): [DeclRefExpr] a
# 41| getCase(0): [CaseStmt] case ...
# 41| getLabel(0): [CaseLabelItem] ... is ...
# 41| getPattern(): [IsPattern] ... is ...
# 41| getCastTypeRepr(): [TypeRepr] Int
# 41| getBody(): [BraceStmt] { ... }
# 41| getElement(0): [StringLiteralExpr] is pattern
# 42| getCase(1): [CaseStmt] case ...
# 42| getLabel(0): [CaseLabelItem] ... is ...
# 42| getPattern(): [IsPattern] ... is ...
# 42| getCastTypeRepr(): [TypeRepr] String
# 42| getSubPattern(): [NamedPattern] x
# 42| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 42| getVariable(0): [ConcreteVarDecl] x
# 42| Type = String
# 42| getBody(): [BraceStmt] { ... }
# 42| getElement(0): [StringLiteralExpr] as pattern
# 43| getCase(2): [CaseStmt] case ...
# 43| getLabel(0): [CaseLabelItem] _
# 43| getPattern(): [AnyPattern] _
# 43| getBody(): [BraceStmt] { ... }
# 43| getElement(0): [StringLiteralExpr] other
# 46| getElement(10): [PatternBindingDecl] var ... = ...
# 46| getInit(0): [BooleanLiteralExpr] true
# 46| getPattern(0): [NamedPattern] b
# 48| getElement(11): [SwitchStmt] switch b { ... }
# 48| getExpr(): [DeclRefExpr] b
# 49| getCase(0): [CaseStmt] case ...
# 49| getLabel(0): [CaseLabelItem] true
# 49| getPattern(): [BoolPattern] true
# 49| getBody(): [BraceStmt] { ... }
# 49| getElement(0): [StringLiteralExpr] true
# 50| getCase(1): [CaseStmt] case ...
# 50| getLabel(0): [CaseLabelItem] false
# 50| getPattern(): [BoolPattern] false
# 50| getBody(): [BraceStmt] { ... }
# 50| getElement(0): [StringLiteralExpr] false
# 16| [ConcreteVarDecl] $match
# 16| Type = Int
# 54| [NamedFunction] bound_and_unbound()
# 54| InterfaceType = () -> ()
# 54| getBody(): [BraceStmt] { ... }
# 55| getVariable(0): [ConcreteVarDecl] a
# 55| Type = Int
# 55| getVariable(1): [ConcreteVarDecl] b
# 55| Type = Int
# 55| getVariable(2): [ConcreteVarDecl] c
# 55| Type = Int
# 55| getElement(0): [PatternBindingDecl] var ... = ...
# 55| getInit(0): [IntegerLiteralExpr] 1
# 55| getInit(1): [IntegerLiteralExpr] 2
# 55| getInit(2): [IntegerLiteralExpr] 3
# 55| getPattern(0): [NamedPattern] a
# 55| getPattern(1): [NamedPattern] b
# 55| getPattern(2): [TypedPattern] ... as ...
# 55| getSubPattern(): [NamedPattern] c
# 55| getTypeRepr(): [TypeRepr] Int
# 57| getElement(1): [IfStmt] if ... then { ... }
# 57| getCondition(): [StmtCondition] StmtCondition
# 57| getElement(0): [ConditionElement] let ...? = ...
# 57| getPattern(): [OptionalSomePattern] let ...?
# 57| getSubPattern(): [TuplePattern] (...)
# 57| getElement(0): [NamedPattern] a
# 57| getElement(1): [NamedPattern] b
# 57| getElement(2): [NamedPattern] c
# 57| getSubPattern().getFullyUnresolved(): [BindingPattern] let ...
# 57| getInitializer(): [CallExpr] call to ...
# 57| getFunction(): [MethodLookupExpr] .some
# 57| getBase(): [TypeExpr] Optional<(Int, Int, Int)>.Type
# 57| getTypeRepr(): [TypeRepr] Optional<(Int, Int, Int)>
# 57| getMethodRef(): [DeclRefExpr] some
# 57| getArgument(0): [Argument] : (...)
# 57| getExpr(): [TupleExpr] (...)
# 57| getElement(0): [DeclRefExpr] a
# 57| getElement(1): [DeclRefExpr] b
# 57| getElement(2): [DeclRefExpr] c
# 57| getThen(): [BraceStmt] { ... }
# 57| getElement(0): [AssignExpr] ... = ...
# 57| getDest(): [DiscardAssignmentExpr] _
# 57| getSource(): [TupleExpr] (...)
# 57| getElement(0): [DeclRefExpr] a
# 57| getElement(1): [DeclRefExpr] c
# 58| getElement(2): [IfStmt] if ... then { ... }
# 58| getCondition(): [StmtCondition] StmtCondition
# 58| getElement(0): [ConditionElement] (...) = ...
# 58| getPattern(): [TuplePattern] (...)
# 58| getElement(0): [ExprPattern] =~ ...
# 58| getSubExpr(): [BinaryExpr] ... ~=(_:_:) ...
# 58| getFunction(): [DeclRefExpr] ~=(_:_:)
# 58| getArgument(0): [Argument] : a
# 58| getExpr(): [DeclRefExpr] a
# 58| getArgument(1): [Argument] : $match
# 58| getExpr(): [DeclRefExpr] $match
# 58| getElement(1): [NamedPattern] b
# 58| getElement(1).getFullyUnresolved(): [BindingPattern] let ...
# 58| getElement(2): [NamedPattern] c
# 58| getElement(2).getFullyUnresolved(): [BindingPattern] let ...
# 58| getInitializer(): [TupleExpr] (...)
# 58| getElement(0): [DeclRefExpr] a
# 58| getElement(1): [DeclRefExpr] b
# 58| getElement(2): [DeclRefExpr] c
# 58| getThen(): [BraceStmt] { ... }
# 58| getElement(0): [AssignExpr] ... = ...
# 58| getDest(): [DiscardAssignmentExpr] _
# 58| getSource(): [DeclRefExpr] b
# 58| getSource().getFullyConverted(): [ParenExpr] (...)
# 60| getElement(3): [SwitchStmt] switch a { ... }
# 60| getExpr(): [DeclRefExpr] a
# 61| getCase(0): [CaseStmt] case ...
# 61| getLabel(0): [CaseLabelItem] =~ ...
# 61| getPattern(): [ExprPattern] =~ ...
# 61| getSubExpr(): [BinaryExpr] ... ~=(_:_:) ...
# 61| getFunction(): [DeclRefExpr] ~=(_:_:)
# 61| getArgument(0): [Argument] : c
# 61| getExpr(): [DeclRefExpr] c
# 61| getArgument(1): [Argument] : $match
# 61| getExpr(): [DeclRefExpr] $match
# 61| getBody(): [BraceStmt] { ... }
# 61| getElement(0): [StringLiteralExpr] equals c
# 62| getCase(1): [CaseStmt] case ...
# 62| getLabel(0): [CaseLabelItem] c
# 62| getPattern(): [NamedPattern] c
# 62| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 62| getVariable(0): [ConcreteVarDecl] c
# 62| Type = Int
# 62| getBody(): [BraceStmt] { ... }
# 62| getElement(0): [StringLiteralExpr] binds c
# 63| getCase(2): [CaseStmt] case ...
# 63| getLabel(0): [CaseLabelItem] _
# 63| getPattern(): [AnyPattern] _
# 63| getBody(): [BraceStmt] { ... }
# 63| getElement(0): [StringLiteralExpr] default
# 57| [ConcreteVarDecl] a
# 57| Type = Int
# 57| [ConcreteVarDecl] b
# 57| Type = Int
# 57| [ConcreteVarDecl] c
# 57| Type = Int
# 58| [ConcreteVarDecl] $match
# 58| Type = Int
# 58| [ConcreteVarDecl] b
# 58| Type = Int
# 58| [ConcreteVarDecl] c
# 58| Type = Int
# 61| [ConcreteVarDecl] $match
# 61| Type = Int
# 67| [NamedFunction] source()
# 67| InterfaceType = () -> Int
# 67| getBody(): [BraceStmt] { ... }
# 67| getElement(0): [ReturnStmt] return ...
# 67| getResult(): [IntegerLiteralExpr] 0
# 68| [NamedFunction] sink(arg:)
# 68| InterfaceType = (Int) -> ()
# 68| getParam(0): [ParamDecl] arg
# 68| Type = Int
# 68| getBody(): [BraceStmt] { ... }
# 70| [EnumDecl] MyEnum
# 71| getMember(0): [EnumCaseDecl] case ...
# 71| getMember(1): [EnumElementDecl] myNone
# 72| getMember(2): [EnumCaseDecl] case ...
# 72| getMember(3): [EnumElementDecl] mySingle
# 72| getParam(0): [ParamDecl] _
# 72| Type = Int
# 73| getMember(4): [EnumCaseDecl] case ...
# 73| getMember(5): [EnumElementDecl] myPair
# 73| getParam(0): [ParamDecl] _
# 73| Type = Int
# 73| getParam(1): [ParamDecl] _
# 73| Type = Int
# 74| getMember(6): [EnumCaseDecl] case ...
# 74| getMember(7): [EnumElementDecl] myCons
# 74| getParam(0): [ParamDecl] _
# 74| Type = Int
# 74| getParam(1): [ParamDecl] _
# 74| Type = MyEnum
# 77| [NamedFunction] test_enums()
# 77| InterfaceType = () -> ()
# 77| getBody(): [BraceStmt] { ... }
# 78| getVariable(0): [ConcreteVarDecl] a
# 78| Type = MyEnum
# 144| getVariable(1): [ConcreteVarDecl] b
# 144| Type = MyEnum
# 78| getElement(0): [PatternBindingDecl] var ... = ...
# 78| getInit(0): [MethodLookupExpr] .myNone
# 78| getBase(): [TypeExpr] MyEnum.Type
# 78| getTypeRepr(): [TypeRepr] MyEnum
# 78| getMethodRef(): [DeclRefExpr] myNone
# 78| getPattern(0): [TypedPattern] ... as ...
# 78| getSubPattern(): [NamedPattern] a
# 78| getTypeRepr(): [TypeRepr] MyEnum
# 80| getElement(1): [SwitchStmt] switch a { ... }
# 80| getExpr(): [DeclRefExpr] a
# 80| getExpr().getFullyConverted(): [LoadExpr] (MyEnum) ...
# 81| getCase(0): [CaseStmt] case ...
# 81| getLabel(0): [CaseLabelItem] .myNone
# 81| getPattern(): [EnumElementPattern] .myNone
# 82| getBody(): [BraceStmt] { ... }
# 82| getElement(0): [TupleExpr] (...)
# 83| getCase(1): [CaseStmt] case ...
# 83| getLabel(0): [CaseLabelItem] .mySingle(...)
# 83| getPattern(): [EnumElementPattern] .mySingle(...)
# 83| getSubPattern(): [NamedPattern] a
# 83| getSubPattern().getFullyUnresolved(): [ParenPattern] (...)
# 83| getSubPattern(): [BindingPattern] let ...
# 83| getVariable(0): [ConcreteVarDecl] a
# 83| Type = Int
# 84| getBody(): [BraceStmt] { ... }
# 84| getElement(0): [CallExpr] call to sink(arg:)
# 84| getFunction(): [DeclRefExpr] sink(arg:)
# 84| getArgument(0): [Argument] arg: a
# 84| getExpr(): [DeclRefExpr] a
# 85| getCase(2): [CaseStmt] case ...
# 85| getLabel(0): [CaseLabelItem] .myPair(...)
# 85| getPattern(): [EnumElementPattern] .myPair(...)
# 85| getSubPattern(): [TuplePattern] (...)
# 85| getElement(0): [NamedPattern] a
# 85| getElement(0).getFullyUnresolved(): [BindingPattern] let ...
# 85| getElement(1): [NamedPattern] b
# 85| getElement(1).getFullyUnresolved(): [BindingPattern] let ...
# 85| getVariable(0): [ConcreteVarDecl] a
# 85| Type = Int
# 85| getVariable(1): [ConcreteVarDecl] b
# 85| Type = Int
# 86| getBody(): [BraceStmt] { ... }
# 86| getElement(0): [CallExpr] call to sink(arg:)
# 86| getFunction(): [DeclRefExpr] sink(arg:)
# 86| getArgument(0): [Argument] arg: a
# 86| getExpr(): [DeclRefExpr] a
# 87| getElement(1): [CallExpr] call to sink(arg:)
# 87| getFunction(): [DeclRefExpr] sink(arg:)
# 87| getArgument(0): [Argument] arg: b
# 87| getExpr(): [DeclRefExpr] b
# 88| getCase(3): [CaseStmt] case ...
# 88| getLabel(0): [CaseLabelItem] .myCons(...)
# 88| getPattern(): [EnumElementPattern] .myCons(...)
# 88| getSubPattern(): [TuplePattern] (...)
# 88| getElement(0): [NamedPattern] a
# 88| getElement(1): [AnyPattern] _
# 88| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 88| getVariable(0): [ConcreteVarDecl] a
# 88| Type = Int
# 89| getBody(): [BraceStmt] { ... }
# 89| getElement(0): [CallExpr] call to sink(arg:)
# 89| getFunction(): [DeclRefExpr] sink(arg:)
# 89| getArgument(0): [Argument] arg: a
# 89| getExpr(): [DeclRefExpr] a
# 92| getElement(2): [IfStmt] if ... then { ... }
# 92| getCondition(): [StmtCondition] StmtCondition
# 92| getElement(0): [ConditionElement] .mySingle(...) = ...
# 92| getPattern(): [EnumElementPattern] .mySingle(...)
# 92| getSubPattern(): [NamedPattern] x
# 92| getSubPattern().getFullyUnresolved(): [ParenPattern] (...)
# 92| getSubPattern(): [BindingPattern] let ...
# 92| getInitializer(): [DeclRefExpr] a
# 92| getInitializer().getFullyConverted(): [LoadExpr] (MyEnum) ...
# 92| getThen(): [BraceStmt] { ... }
# 93| getElement(0): [CallExpr] call to sink(arg:)
# 93| getFunction(): [DeclRefExpr] sink(arg:)
# 93| getArgument(0): [Argument] arg: x
# 93| getExpr(): [DeclRefExpr] x
# 95| getElement(3): [IfStmt] if ... then { ... }
# 95| getCondition(): [StmtCondition] StmtCondition
# 95| getElement(0): [ConditionElement] .myPair(...) = ...
# 95| getPattern(): [EnumElementPattern] .myPair(...)
# 95| getSubPattern(): [TuplePattern] (...)
# 95| getElement(0): [NamedPattern] x
# 95| getElement(0).getFullyUnresolved(): [BindingPattern] let ...
# 95| getElement(1): [NamedPattern] y
# 95| getElement(1).getFullyUnresolved(): [BindingPattern] let ...
# 95| getInitializer(): [DeclRefExpr] a
# 95| getInitializer().getFullyConverted(): [LoadExpr] (MyEnum) ...
# 95| getThen(): [BraceStmt] { ... }
# 96| getElement(0): [CallExpr] call to sink(arg:)
# 96| getFunction(): [DeclRefExpr] sink(arg:)
# 96| getArgument(0): [Argument] arg: x
# 96| getExpr(): [DeclRefExpr] x
# 97| getElement(1): [CallExpr] call to sink(arg:)
# 97| getFunction(): [DeclRefExpr] sink(arg:)
# 97| getArgument(0): [Argument] arg: y
# 97| getExpr(): [DeclRefExpr] y
# 100| getElement(4): [AssignExpr] ... = ...
# 100| getDest(): [DeclRefExpr] a
# 100| getSource(): [CallExpr] call to ...
# 100| getFunction(): [MethodLookupExpr] .mySingle
# 100| getBase(): [TypeExpr] MyEnum.Type
# 100| getTypeRepr(): [TypeRepr] MyEnum
# 100| getMethodRef(): [DeclRefExpr] mySingle
# 100| getArgument(0): [Argument] : call to source()
# 100| getExpr(): [CallExpr] call to source()
# 100| getFunction(): [DeclRefExpr] source()
# 102| getElement(5): [SwitchStmt] switch a { ... }
# 102| getExpr(): [DeclRefExpr] a
# 102| getExpr().getFullyConverted(): [LoadExpr] (MyEnum) ...
# 103| getCase(0): [CaseStmt] case ...
# 103| getLabel(0): [CaseLabelItem] .myNone
# 103| getPattern(): [EnumElementPattern] .myNone
# 104| getBody(): [BraceStmt] { ... }
# 104| getElement(0): [TupleExpr] (...)
# 105| getCase(1): [CaseStmt] case ...
# 105| getLabel(0): [CaseLabelItem] .mySingle(...)
# 105| getPattern(): [EnumElementPattern] .mySingle(...)
# 105| getSubPattern(): [NamedPattern] a
# 105| getSubPattern().getFullyUnresolved(): [ParenPattern] (...)
# 105| getSubPattern(): [BindingPattern] let ...
# 105| getVariable(0): [ConcreteVarDecl] a
# 105| Type = Int
# 106| getBody(): [BraceStmt] { ... }
# 106| getElement(0): [CallExpr] call to sink(arg:)
# 106| getFunction(): [DeclRefExpr] sink(arg:)
# 106| getArgument(0): [Argument] arg: a
# 106| getExpr(): [DeclRefExpr] a
# 107| getCase(2): [CaseStmt] case ...
# 107| getLabel(0): [CaseLabelItem] .myPair(...)
# 107| getPattern(): [EnumElementPattern] .myPair(...)
# 107| getSubPattern(): [TuplePattern] (...)
# 107| getElement(0): [NamedPattern] a
# 107| getElement(0).getFullyUnresolved(): [BindingPattern] let ...
# 107| getElement(1): [NamedPattern] b
# 107| getElement(1).getFullyUnresolved(): [BindingPattern] let ...
# 107| getVariable(0): [ConcreteVarDecl] a
# 107| Type = Int
# 107| getVariable(1): [ConcreteVarDecl] b
# 107| Type = Int
# 108| getBody(): [BraceStmt] { ... }
# 108| getElement(0): [CallExpr] call to sink(arg:)
# 108| getFunction(): [DeclRefExpr] sink(arg:)
# 108| getArgument(0): [Argument] arg: a
# 108| getExpr(): [DeclRefExpr] a
# 109| getElement(1): [CallExpr] call to sink(arg:)
# 109| getFunction(): [DeclRefExpr] sink(arg:)
# 109| getArgument(0): [Argument] arg: b
# 109| getExpr(): [DeclRefExpr] b
# 110| getCase(3): [CaseStmt] case ...
# 110| getLabel(0): [CaseLabelItem] .myCons(...)
# 110| getPattern(): [EnumElementPattern] .myCons(...)
# 110| getSubPattern(): [TuplePattern] (...)
# 110| getElement(0): [NamedPattern] a
# 110| getElement(1): [AnyPattern] _
# 110| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 110| getVariable(0): [ConcreteVarDecl] a
# 110| Type = Int
# 111| getBody(): [BraceStmt] { ... }
# 111| getElement(0): [CallExpr] call to sink(arg:)
# 111| getFunction(): [DeclRefExpr] sink(arg:)
# 111| getArgument(0): [Argument] arg: a
# 111| getExpr(): [DeclRefExpr] a
# 114| getElement(6): [IfStmt] if ... then { ... }
# 114| getCondition(): [StmtCondition] StmtCondition
# 114| getElement(0): [ConditionElement] .mySingle(...) = ...
# 114| getPattern(): [EnumElementPattern] .mySingle(...)
# 114| getSubPattern(): [NamedPattern] x
# 114| getSubPattern().getFullyUnresolved(): [ParenPattern] (...)
# 114| getSubPattern(): [BindingPattern] let ...
# 114| getInitializer(): [DeclRefExpr] a
# 114| getInitializer().getFullyConverted(): [LoadExpr] (MyEnum) ...
# 114| getThen(): [BraceStmt] { ... }
# 115| getElement(0): [CallExpr] call to sink(arg:)
# 115| getFunction(): [DeclRefExpr] sink(arg:)
# 115| getArgument(0): [Argument] arg: x
# 115| getExpr(): [DeclRefExpr] x
# 117| getElement(7): [IfStmt] if ... then { ... }
# 117| getCondition(): [StmtCondition] StmtCondition
# 117| getElement(0): [ConditionElement] .myPair(...) = ...
# 117| getPattern(): [EnumElementPattern] .myPair(...)
# 117| getSubPattern(): [TuplePattern] (...)
# 117| getElement(0): [NamedPattern] x
# 117| getElement(0).getFullyUnresolved(): [BindingPattern] let ...
# 117| getElement(1): [NamedPattern] y
# 117| getElement(1).getFullyUnresolved(): [BindingPattern] let ...
# 117| getInitializer(): [DeclRefExpr] a
# 117| getInitializer().getFullyConverted(): [LoadExpr] (MyEnum) ...
# 117| getThen(): [BraceStmt] { ... }
# 118| getElement(0): [CallExpr] call to sink(arg:)
# 118| getFunction(): [DeclRefExpr] sink(arg:)
# 118| getArgument(0): [Argument] arg: x
# 118| getExpr(): [DeclRefExpr] x
# 119| getElement(1): [CallExpr] call to sink(arg:)
# 119| getFunction(): [DeclRefExpr] sink(arg:)
# 119| getArgument(0): [Argument] arg: y
# 119| getExpr(): [DeclRefExpr] y
# 122| getElement(8): [AssignExpr] ... = ...
# 122| getDest(): [DeclRefExpr] a
# 122| getSource(): [CallExpr] call to ...
# 122| getFunction(): [MethodLookupExpr] .myPair
# 122| getBase(): [TypeExpr] MyEnum.Type
# 122| getTypeRepr(): [TypeRepr] MyEnum
# 122| getMethodRef(): [DeclRefExpr] myPair
# 122| getArgument(0): [Argument] : 0
# 122| getExpr(): [IntegerLiteralExpr] 0
# 122| getArgument(1): [Argument] : call to source()
# 122| getExpr(): [CallExpr] call to source()
# 122| getFunction(): [DeclRefExpr] source()
# 124| getElement(9): [SwitchStmt] switch a { ... }
# 124| getExpr(): [DeclRefExpr] a
# 124| getExpr().getFullyConverted(): [LoadExpr] (MyEnum) ...
# 125| getCase(0): [CaseStmt] case ...
# 125| getLabel(0): [CaseLabelItem] .myNone
# 125| getPattern(): [EnumElementPattern] .myNone
# 126| getBody(): [BraceStmt] { ... }
# 126| getElement(0): [TupleExpr] (...)
# 127| getCase(1): [CaseStmt] case ...
# 127| getLabel(0): [CaseLabelItem] .mySingle(...)
# 127| getPattern(): [EnumElementPattern] .mySingle(...)
# 127| getSubPattern(): [NamedPattern] a
# 127| getSubPattern().getFullyUnresolved(): [ParenPattern] (...)
# 127| getSubPattern(): [BindingPattern] let ...
# 127| getVariable(0): [ConcreteVarDecl] a
# 127| Type = Int
# 128| getBody(): [BraceStmt] { ... }
# 128| getElement(0): [CallExpr] call to sink(arg:)
# 128| getFunction(): [DeclRefExpr] sink(arg:)
# 128| getArgument(0): [Argument] arg: a
# 128| getExpr(): [DeclRefExpr] a
# 129| getCase(2): [CaseStmt] case ...
# 129| getLabel(0): [CaseLabelItem] .myPair(...)
# 129| getPattern(): [EnumElementPattern] .myPair(...)
# 129| getSubPattern(): [TuplePattern] (...)
# 129| getElement(0): [NamedPattern] a
# 129| getElement(0).getFullyUnresolved(): [BindingPattern] let ...
# 129| getElement(1): [NamedPattern] b
# 129| getElement(1).getFullyUnresolved(): [BindingPattern] let ...
# 129| getVariable(0): [ConcreteVarDecl] a
# 129| Type = Int
# 129| getVariable(1): [ConcreteVarDecl] b
# 129| Type = Int
# 130| getBody(): [BraceStmt] { ... }
# 130| getElement(0): [CallExpr] call to sink(arg:)
# 130| getFunction(): [DeclRefExpr] sink(arg:)
# 130| getArgument(0): [Argument] arg: a
# 130| getExpr(): [DeclRefExpr] a
# 131| getElement(1): [CallExpr] call to sink(arg:)
# 131| getFunction(): [DeclRefExpr] sink(arg:)
# 131| getArgument(0): [Argument] arg: b
# 131| getExpr(): [DeclRefExpr] b
# 132| getCase(3): [CaseStmt] case ...
# 132| getLabel(0): [CaseLabelItem] .myCons(...)
# 132| getPattern(): [EnumElementPattern] .myCons(...)
# 132| getSubPattern(): [TuplePattern] (...)
# 132| getElement(0): [NamedPattern] a
# 132| getElement(1): [AnyPattern] _
# 132| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 132| getVariable(0): [ConcreteVarDecl] a
# 132| Type = Int
# 133| getBody(): [BraceStmt] { ... }
# 133| getElement(0): [CallExpr] call to sink(arg:)
# 133| getFunction(): [DeclRefExpr] sink(arg:)
# 133| getArgument(0): [Argument] arg: a
# 133| getExpr(): [DeclRefExpr] a
# 136| getElement(10): [IfStmt] if ... then { ... }
# 136| getCondition(): [StmtCondition] StmtCondition
# 136| getElement(0): [ConditionElement] .mySingle(...) = ...
# 136| getPattern(): [EnumElementPattern] .mySingle(...)
# 136| getSubPattern(): [NamedPattern] x
# 136| getSubPattern().getFullyUnresolved(): [ParenPattern] (...)
# 136| getSubPattern(): [BindingPattern] let ...
# 136| getInitializer(): [DeclRefExpr] a
# 136| getInitializer().getFullyConverted(): [LoadExpr] (MyEnum) ...
# 136| getThen(): [BraceStmt] { ... }
# 137| getElement(0): [CallExpr] call to sink(arg:)
# 137| getFunction(): [DeclRefExpr] sink(arg:)
# 137| getArgument(0): [Argument] arg: x
# 137| getExpr(): [DeclRefExpr] x
# 139| getElement(11): [IfStmt] if ... then { ... }
# 139| getCondition(): [StmtCondition] StmtCondition
# 139| getElement(0): [ConditionElement] .myPair(...) = ...
# 139| getPattern(): [EnumElementPattern] .myPair(...)
# 139| getSubPattern(): [TuplePattern] (...)
# 139| getElement(0): [NamedPattern] x
# 139| getElement(0).getFullyUnresolved(): [BindingPattern] let ...
# 139| getElement(1): [NamedPattern] y
# 139| getElement(1).getFullyUnresolved(): [BindingPattern] let ...
# 139| getInitializer(): [DeclRefExpr] a
# 139| getInitializer().getFullyConverted(): [LoadExpr] (MyEnum) ...
# 139| getThen(): [BraceStmt] { ... }
# 140| getElement(0): [CallExpr] call to sink(arg:)
# 140| getFunction(): [DeclRefExpr] sink(arg:)
# 140| getArgument(0): [Argument] arg: x
# 140| getExpr(): [DeclRefExpr] x
# 141| getElement(1): [CallExpr] call to sink(arg:)
# 141| getFunction(): [DeclRefExpr] sink(arg:)
# 141| getArgument(0): [Argument] arg: y
# 141| getExpr(): [DeclRefExpr] y
# 144| getElement(12): [PatternBindingDecl] var ... = ...
# 144| getInit(0): [CallExpr] call to ...
# 144| getFunction(): [MethodLookupExpr] .myCons
# 144| getBase(): [TypeExpr] MyEnum.Type
# 144| getTypeRepr(): [TypeRepr] MyEnum
# 144| getMethodRef(): [DeclRefExpr] myCons
# 144| getArgument(0): [Argument] : 42
# 144| getExpr(): [IntegerLiteralExpr] 42
# 144| getArgument(1): [Argument] : a
# 144| getExpr(): [DeclRefExpr] a
# 144| getExpr().getFullyConverted(): [LoadExpr] (MyEnum) ...
# 144| getPattern(0): [TypedPattern] ... as ...
# 144| getSubPattern(): [NamedPattern] b
# 144| getTypeRepr(): [TypeRepr] MyEnum
# 146| getElement(13): [SwitchStmt] switch b { ... }
# 146| getExpr(): [DeclRefExpr] b
# 147| getCase(0): [CaseStmt] case ...
# 147| getLabel(0): [CaseLabelItem] .myNone
# 147| getPattern(): [EnumElementPattern] .myNone
# 148| getBody(): [BraceStmt] { ... }
# 148| getElement(0): [TupleExpr] (...)
# 149| getCase(1): [CaseStmt] case ...
# 149| getLabel(0): [CaseLabelItem] .mySingle(...)
# 149| getPattern(): [EnumElementPattern] .mySingle(...)
# 149| getSubPattern(): [NamedPattern] a
# 149| getSubPattern().getFullyUnresolved(): [ParenPattern] (...)
# 149| getSubPattern(): [BindingPattern] let ...
# 149| getVariable(0): [ConcreteVarDecl] a
# 149| Type = Int
# 150| getBody(): [BraceStmt] { ... }
# 150| getElement(0): [CallExpr] call to sink(arg:)
# 150| getFunction(): [DeclRefExpr] sink(arg:)
# 150| getArgument(0): [Argument] arg: a
# 150| getExpr(): [DeclRefExpr] a
# 151| getCase(2): [CaseStmt] case ...
# 151| getLabel(0): [CaseLabelItem] .myPair(...)
# 151| getPattern(): [EnumElementPattern] .myPair(...)
# 151| getSubPattern(): [TuplePattern] (...)
# 151| getElement(0): [NamedPattern] a
# 151| getElement(0).getFullyUnresolved(): [BindingPattern] let ...
# 151| getElement(1): [NamedPattern] b
# 151| getElement(1).getFullyUnresolved(): [BindingPattern] let ...
# 151| getVariable(0): [ConcreteVarDecl] a
# 151| Type = Int
# 151| getVariable(1): [ConcreteVarDecl] b
# 151| Type = Int
# 152| getBody(): [BraceStmt] { ... }
# 152| getElement(0): [CallExpr] call to sink(arg:)
# 152| getFunction(): [DeclRefExpr] sink(arg:)
# 152| getArgument(0): [Argument] arg: a
# 152| getExpr(): [DeclRefExpr] a
# 153| getElement(1): [CallExpr] call to sink(arg:)
# 153| getFunction(): [DeclRefExpr] sink(arg:)
# 153| getArgument(0): [Argument] arg: b
# 153| getExpr(): [DeclRefExpr] b
# 154| getCase(3): [CaseStmt] case ...
# 154| getLabel(0): [CaseLabelItem] .myCons(...)
# 154| getPattern(): [EnumElementPattern] .myCons(...)
# 154| getSubPattern(): [TuplePattern] (...)
# 154| getElement(0): [NamedPattern] a
# 154| getElement(1): [EnumElementPattern] .myPair(...)
# 154| getSubPattern(): [TuplePattern] (...)
# 154| getElement(0): [NamedPattern] b
# 154| getElement(1): [NamedPattern] c
# 154| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 154| getVariable(0): [ConcreteVarDecl] a
# 154| Type = Int
# 154| getVariable(1): [ConcreteVarDecl] b
# 154| Type = Int
# 154| getVariable(2): [ConcreteVarDecl] c
# 154| Type = Int
# 155| getBody(): [BraceStmt] { ... }
# 155| getElement(0): [CallExpr] call to sink(arg:)
# 155| getFunction(): [DeclRefExpr] sink(arg:)
# 155| getArgument(0): [Argument] arg: a
# 155| getExpr(): [DeclRefExpr] a
# 156| getElement(1): [CallExpr] call to sink(arg:)
# 156| getFunction(): [DeclRefExpr] sink(arg:)
# 156| getArgument(0): [Argument] arg: b
# 156| getExpr(): [DeclRefExpr] b
# 157| getElement(2): [CallExpr] call to sink(arg:)
# 157| getFunction(): [DeclRefExpr] sink(arg:)
# 157| getArgument(0): [Argument] arg: c
# 157| getExpr(): [DeclRefExpr] c
# 158| getCase(4): [CaseStmt] case ...
# 158| getLabel(0): [CaseLabelItem] .myCons(...)
# 158| getPattern(): [EnumElementPattern] .myCons(...)
# 158| getSubPattern(): [TuplePattern] (...)
# 158| getElement(0): [NamedPattern] a
# 158| getElement(1): [AnyPattern] _
# 158| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 158| getVariable(0): [ConcreteVarDecl] a
# 158| Type = Int
# 159| getBody(): [BraceStmt] { ... }
# 159| getElement(0): [CallExpr] call to sink(arg:)
# 159| getFunction(): [DeclRefExpr] sink(arg:)
# 159| getArgument(0): [Argument] arg: a
# 159| getExpr(): [DeclRefExpr] a
# 162| getElement(14): [IfStmt] if ... then { ... }
# 162| getCondition(): [StmtCondition] StmtCondition
# 162| getElement(0): [ConditionElement] .mySingle(...) = ...
# 162| getPattern(): [EnumElementPattern] .mySingle(...)
# 162| getSubPattern(): [NamedPattern] x
# 162| getSubPattern().getFullyUnresolved(): [ParenPattern] (...)
# 162| getSubPattern(): [BindingPattern] let ...
# 162| getInitializer(): [CallExpr] call to ...
# 162| getFunction(): [MethodLookupExpr] .myPair
# 162| getBase(): [TypeExpr] MyEnum.Type
# 162| getTypeRepr(): [TypeRepr] MyEnum
# 162| getMethodRef(): [DeclRefExpr] myPair
# 162| getArgument(0): [Argument] : call to source()
# 162| getExpr(): [CallExpr] call to source()
# 162| getFunction(): [DeclRefExpr] source()
# 162| getArgument(1): [Argument] : 0
# 162| getExpr(): [IntegerLiteralExpr] 0
# 162| getThen(): [BraceStmt] { ... }
# 163| getElement(0): [CallExpr] call to sink(arg:)
# 163| getFunction(): [DeclRefExpr] sink(arg:)
# 163| getArgument(0): [Argument] arg: x
# 163| getExpr(): [DeclRefExpr] x
# 165| getElement(15): [IfStmt] if ... then { ... }
# 165| getCondition(): [StmtCondition] StmtCondition
# 165| getElement(0): [ConditionElement] .myPair(...) = ...
# 165| getPattern(): [EnumElementPattern] .myPair(...)
# 165| getSubPattern(): [TuplePattern] (...)
# 165| getElement(0): [NamedPattern] x
# 165| getElement(0).getFullyUnresolved(): [BindingPattern] let ...
# 165| getElement(1): [NamedPattern] y
# 165| getElement(1).getFullyUnresolved(): [BindingPattern] let ...
# 165| getInitializer(): [CallExpr] call to ...
# 165| getFunction(): [MethodLookupExpr] .myPair
# 165| getBase(): [TypeExpr] MyEnum.Type
# 165| getTypeRepr(): [TypeRepr] MyEnum
# 165| getMethodRef(): [DeclRefExpr] myPair
# 165| getArgument(0): [Argument] : call to source()
# 165| getExpr(): [CallExpr] call to source()
# 165| getFunction(): [DeclRefExpr] source()
# 165| getArgument(1): [Argument] : 0
# 165| getExpr(): [IntegerLiteralExpr] 0
# 165| getThen(): [BraceStmt] { ... }
# 166| getElement(0): [CallExpr] call to sink(arg:)
# 166| getFunction(): [DeclRefExpr] sink(arg:)
# 166| getArgument(0): [Argument] arg: x
# 166| getExpr(): [DeclRefExpr] x
# 167| getElement(1): [CallExpr] call to sink(arg:)
# 167| getFunction(): [DeclRefExpr] sink(arg:)
# 167| getArgument(0): [Argument] arg: y
# 167| getExpr(): [DeclRefExpr] y
# 169| getElement(16): [IfStmt] if ... then { ... }
# 169| getCondition(): [StmtCondition] StmtCondition
# 169| getElement(0): [ConditionElement] .myCons(...) = ...
# 169| getPattern(): [EnumElementPattern] .myCons(...)
# 169| getSubPattern(): [TuplePattern] (...)
# 169| getElement(0): [AnyPattern] _
# 169| getElement(1): [EnumElementPattern] .myPair(...)
# 169| getSubPattern(): [TuplePattern] (...)
# 169| getElement(0): [AnyPattern] _
# 169| getElement(1): [NamedPattern] c
# 169| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 169| getInitializer(): [DeclRefExpr] b
# 169| getThen(): [BraceStmt] { ... }
# 170| getElement(0): [CallExpr] call to sink(arg:)
# 170| getFunction(): [DeclRefExpr] sink(arg:)
# 170| getArgument(0): [Argument] arg: c
# 170| getExpr(): [DeclRefExpr] c
# 173| getElement(17): [SwitchStmt] switch (...) { ... }
# 173| getExpr(): [TupleExpr] (...)
# 173| getElement(0): [DeclRefExpr] a
# 173| getElement(0).getFullyConverted(): [LoadExpr] (MyEnum) ...
# 173| getElement(1): [DeclRefExpr] b
# 174| getCase(0): [CaseStmt] case ...
# 174| getLabel(0): [CaseLabelItem] (...)
# 174| getPattern(): [TuplePattern] (...)
# 174| getElement(0): [EnumElementPattern] .myPair(...)
# 174| getSubPattern(): [TuplePattern] (...)
# 174| getElement(0): [NamedPattern] a
# 174| getElement(1): [NamedPattern] b
# 174| getElement(1): [EnumElementPattern] .myCons(...)
# 174| getSubPattern(): [TuplePattern] (...)
# 174| getElement(0): [NamedPattern] c
# 174| getElement(1): [EnumElementPattern] .myPair(...)
# 174| getSubPattern(): [TuplePattern] (...)
# 174| getElement(0): [NamedPattern] d
# 174| getElement(1): [NamedPattern] e
# 174| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 174| getVariable(0): [ConcreteVarDecl] a
# 174| Type = Int
# 174| getVariable(1): [ConcreteVarDecl] b
# 174| Type = Int
# 174| getVariable(2): [ConcreteVarDecl] c
# 174| Type = Int
# 174| getVariable(3): [ConcreteVarDecl] d
# 174| Type = Int
# 174| getVariable(4): [ConcreteVarDecl] e
# 174| Type = Int
# 175| getBody(): [BraceStmt] { ... }
# 175| getElement(0): [CallExpr] call to sink(arg:)
# 175| getFunction(): [DeclRefExpr] sink(arg:)
# 175| getArgument(0): [Argument] arg: a
# 175| getExpr(): [DeclRefExpr] a
# 176| getElement(1): [CallExpr] call to sink(arg:)
# 176| getFunction(): [DeclRefExpr] sink(arg:)
# 176| getArgument(0): [Argument] arg: b
# 176| getExpr(): [DeclRefExpr] b
# 177| getElement(2): [CallExpr] call to sink(arg:)
# 177| getFunction(): [DeclRefExpr] sink(arg:)
# 177| getArgument(0): [Argument] arg: c
# 177| getExpr(): [DeclRefExpr] c
# 178| getElement(3): [CallExpr] call to sink(arg:)
# 178| getFunction(): [DeclRefExpr] sink(arg:)
# 178| getArgument(0): [Argument] arg: d
# 178| getExpr(): [DeclRefExpr] d
# 179| getElement(4): [CallExpr] call to sink(arg:)
# 179| getFunction(): [DeclRefExpr] sink(arg:)
# 179| getArgument(0): [Argument] arg: e
# 179| getExpr(): [DeclRefExpr] e
# 180| getCase(1): [CaseStmt] case ...
# 180| getLabel(0): [CaseLabelItem] _
# 180| getPattern(): [AnyPattern] _
# 181| getBody(): [BraceStmt] { ... }
# 181| getElement(0): [TupleExpr] (...)
# 92| [ConcreteVarDecl] x
# 92| Type = Int
# 95| [ConcreteVarDecl] x
# 95| Type = Int
# 95| [ConcreteVarDecl] y
# 95| Type = Int
# 114| [ConcreteVarDecl] x
# 114| Type = Int
# 117| [ConcreteVarDecl] x
# 117| Type = Int
# 117| [ConcreteVarDecl] y
# 117| Type = Int
# 136| [ConcreteVarDecl] x
# 136| Type = Int
# 139| [ConcreteVarDecl] x
# 139| Type = Int
# 139| [ConcreteVarDecl] y
# 139| Type = Int
# 162| [ConcreteVarDecl] x
# 162| Type = Int
# 165| [ConcreteVarDecl] x
# 165| Type = Int
# 165| [ConcreteVarDecl] y
# 165| Type = Int
# 169| [ConcreteVarDecl] c
# 169| Type = Int
statements.swift:
# 1| [NamedFunction] loop()
# 1| InterfaceType = () -> ()
# 1| getBody(): [BraceStmt] { ... }
# 9| getVariable(0): [ConcreteVarDecl] i
# 9| Type = Int
# 2| getElement(0): [ForEachStmt] for ... in ... { ... }
# 2| getVariable(0): [ConcreteVarDecl] i
# 2| Type = Int
# 2| getVariable(1): [ConcreteVarDecl] $i$generator
# 2| Type = IndexingIterator<ClosedRange<Int>>
# 2| getPattern(): [NamedPattern] i
#-----| getIteratorVar(): [PatternBindingDecl] var ... = ...
# 2| getInit(0): [CallExpr] call to makeIterator()
# 2| getFunction(): [MethodLookupExpr] .makeIterator()
# 2| getBase(): [BinaryExpr] ... ....(_:_:) ...
# 2| getFunction(): [MethodLookupExpr] ....(_:_:)
# 2| getBase(): [TypeExpr] Int.Type
# 2| getTypeRepr(): [TypeRepr] Int
# 2| getMethodRef(): [DeclRefExpr] ...(_:_:)
# 2| getArgument(0): [Argument] : 1
# 2| getExpr(): [IntegerLiteralExpr] 1
# 2| getArgument(1): [Argument] : 5
# 2| getExpr(): [IntegerLiteralExpr] 5
#-----| getMethodRef(): [DeclRefExpr] makeIterator()
# 2| getPattern(0): [NamedPattern] $i$generator
# 2| getNextCall(): [CallExpr] call to next()
# 2| getFunction(): [MethodLookupExpr] .next()
# 2| getBase(): [DeclRefExpr] $i$generator
# 2| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] next()
# 2| getBody(): [BraceStmt] { ... }
# 3| getElement(0): [IfStmt] if ... then { ... } else { ... }
# 3| getCondition(): [StmtCondition] StmtCondition
# 3| getElement(0): [ConditionElement] ... .==(_:_:) ...
# 3| getBoolean(): [BinaryExpr] ... .==(_:_:) ...
# 3| getFunction(): [MethodLookupExpr] .==(_:_:)
# 3| getBase(): [TypeExpr] Int.Type
# 3| getTypeRepr(): [TypeRepr] Int
# 3| getMethodRef(): [DeclRefExpr] ==(_:_:)
# 3| getArgument(0): [Argument] : i
# 3| getExpr(): [DeclRefExpr] i
# 3| getArgument(1): [Argument] : 3
# 3| getExpr(): [IntegerLiteralExpr] 3
# 3| getThen(): [BraceStmt] { ... }
# 4| getElement(0): [BreakStmt] break
# 5| getElse(): [BraceStmt] { ... }
# 6| getElement(0): [ContinueStmt] continue
# 9| getElement(1): [PatternBindingDecl] var ... = ...
# 9| getInit(0): [IntegerLiteralExpr] 0
# 9| getPattern(0): [NamedPattern] i
# 10| getElement(2): [WhileStmt] while ... { ... }
# 10| getCondition(): [StmtCondition] StmtCondition
# 10| getElement(0): [ConditionElement] ... .<(_:_:) ...
# 10| getBoolean(): [BinaryExpr] ... .<(_:_:) ...
# 10| getFunction(): [MethodLookupExpr] .<(_:_:)
# 10| getBase(): [TypeExpr] Int.Type
# 10| getTypeRepr(): [TypeRepr] Int
# 10| getMethodRef(): [DeclRefExpr] <(_:_:)
# 10| getArgument(0): [Argument] : i
# 10| getExpr(): [DeclRefExpr] i
# 10| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 10| getArgument(1): [Argument] : 12
# 10| getExpr(): [IntegerLiteralExpr] 12
# 10| getBoolean().getFullyConverted(): [ParenExpr] (...)
# 10| getBody(): [BraceStmt] { ... }
# 11| getElement(0): [AssignExpr] ... = ...
# 11| getDest(): [DeclRefExpr] i
# 11| getSource(): [BinaryExpr] ... .+(_:_:) ...
# 11| getFunction(): [MethodLookupExpr] .+(_:_:)
# 11| getBase(): [TypeExpr] Int.Type
# 11| getTypeRepr(): [TypeRepr] Int
# 11| getMethodRef(): [DeclRefExpr] +(_:_:)
# 11| getArgument(0): [Argument] : i
# 11| getExpr(): [DeclRefExpr] i
# 11| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 11| getArgument(1): [Argument] : 1
# 11| getExpr(): [IntegerLiteralExpr] 1
# 14| getElement(3): [AssignExpr] ... = ...
# 14| getDest(): [DeclRefExpr] i
# 14| getSource(): [IntegerLiteralExpr] 0
# 15| getElement(4): [RepeatWhileStmt] repeat { ... } while ...
# 17| getCondition(): [BinaryExpr] ... .<(_:_:) ...
# 17| getFunction(): [MethodLookupExpr] .<(_:_:)
# 17| getBase(): [TypeExpr] Int.Type
# 17| getTypeRepr(): [TypeRepr] Int
# 17| getMethodRef(): [DeclRefExpr] <(_:_:)
# 17| getArgument(0): [Argument] : i
# 17| getExpr(): [DeclRefExpr] i
# 17| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 17| getArgument(1): [Argument] : 12
# 17| getExpr(): [IntegerLiteralExpr] 12
# 17| getCondition().getFullyConverted(): [ParenExpr] (...)
# 15| getBody(): [BraceStmt] { ... }
# 16| getElement(0): [AssignExpr] ... = ...
# 16| getDest(): [DeclRefExpr] i
# 16| getSource(): [BinaryExpr] ... .+(_:_:) ...
# 16| getFunction(): [MethodLookupExpr] .+(_:_:)
# 16| getBase(): [TypeExpr] Int.Type
# 16| getTypeRepr(): [TypeRepr] Int
# 16| getMethodRef(): [DeclRefExpr] +(_:_:)
# 16| getArgument(0): [Argument] : i
# 16| getExpr(): [DeclRefExpr] i
# 16| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 16| getArgument(1): [Argument] : 1
# 16| getExpr(): [IntegerLiteralExpr] 1
# 19| getElement(5): [DoCatchStmt] do { ... } catch { ... }
# 19| getBody(): [BraceStmt] { ... }
# 20| getElement(0): [TryExpr] try ...
# 20| getSubExpr(): [CallExpr] call to failure(_:)
# 20| getFunction(): [DeclRefExpr] failure(_:)
# 20| getArgument(0): [Argument] : 11
# 20| getExpr(): [IntegerLiteralExpr] 11
# 21| getCatch(0): [CaseStmt] case ...
# 21| getLabel(0): [CaseLabelItem] error
# 21| getPattern(): [NamedPattern] error
# 21| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 21| getVariable(0): [ConcreteVarDecl] error
# 21| Type = any Error
# 21| getBody(): [BraceStmt] { ... }
# 22| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 22| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 22| getArgument(0): [Argument] : [...]
# 22| getExpr(): [VarargExpansionExpr] [...]
# 22| getSubExpr(): [ArrayExpr] [...]
# 22| getElement(0): [StringLiteralExpr] error
# 22| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 22| getArgument(1): [Argument] separator: default separator
# 22| getExpr(): [DefaultArgumentExpr] default separator
# 22| getArgument(2): [Argument] terminator: default terminator
# 22| getExpr(): [DefaultArgumentExpr] default terminator
# 25| getElement(6): [DoCatchStmt] do { ... } catch { ... }
# 25| getBody(): [BraceStmt] { ... }
# 26| getElement(0): [TryExpr] try ...
# 26| getSubExpr(): [CallExpr] call to failure(_:)
# 26| getFunction(): [DeclRefExpr] failure(_:)
# 26| getArgument(0): [Argument] : 11
# 26| getExpr(): [IntegerLiteralExpr] 11
# 27| getCatch(0): [CaseStmt] case ...
# 27| getLabel(0): [CaseLabelItem] ... is ...
# 27| getPattern(): [IsPattern] ... is ...
# 27| getSubPattern(): [EnumElementPattern] .failed
# 27| getBody(): [BraceStmt] { ... }
# 28| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 28| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 28| getArgument(0): [Argument] : [...]
# 28| getExpr(): [VarargExpansionExpr] [...]
# 28| getSubExpr(): [ArrayExpr] [...]
# 28| getElement(0): [StringLiteralExpr] AnError.failed
# 28| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 28| getArgument(1): [Argument] separator: default separator
# 28| getExpr(): [DefaultArgumentExpr] default separator
# 28| getArgument(2): [Argument] terminator: default terminator
# 28| getExpr(): [DefaultArgumentExpr] default terminator
# 29| getCatch(1): [CaseStmt] case ...
# 29| getLabel(0): [CaseLabelItem] error
# 29| getPattern(): [NamedPattern] error
# 29| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 29| getVariable(0): [ConcreteVarDecl] error
# 29| Type = any Error
# 29| getBody(): [BraceStmt] { ... }
# 30| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 30| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 30| getArgument(0): [Argument] : [...]
# 30| getExpr(): [VarargExpansionExpr] [...]
# 30| getSubExpr(): [ArrayExpr] [...]
# 30| getElement(0): [StringLiteralExpr] error
# 30| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 30| getArgument(1): [Argument] separator: default separator
# 30| getExpr(): [DefaultArgumentExpr] default separator
# 30| getArgument(2): [Argument] terminator: default terminator
# 30| getExpr(): [DefaultArgumentExpr] default terminator
# 34| [EnumDecl] AnError
# 35| getMember(0): [EnumCaseDecl] case ...
# 35| getMember(1): [EnumElementDecl] failed
#-----| getMember(2): [NamedFunction] __derived_enum_equals(_:_:)
#-----| InterfaceType = (AnError.Type) -> (AnError, AnError) -> Bool
#-----| getSelfParam(): [ParamDecl] self
#-----| Type = AnError.Type
#-----| getParam(0): [ParamDecl] a
#-----| Type = AnError
#-----| getParam(1): [ParamDecl] b
#-----| Type = AnError
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] index_a
#-----| getElement(1): [SwitchStmt] switch a { ... }
#-----| getExpr(): [DeclRefExpr] a
#-----| getCase(0): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .failed
#-----| getPattern(): [EnumElementPattern] .failed
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_a
#-----| getSource(): [IntegerLiteralExpr] 0
#-----| getElement(2): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] index_b
#-----| getElement(3): [SwitchStmt] switch b { ... }
#-----| getExpr(): [DeclRefExpr] b
#-----| getCase(0): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .failed
#-----| getPattern(): [EnumElementPattern] .failed
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] index_b
#-----| getSource(): [IntegerLiteralExpr] 0
#-----| getElement(4): [ReturnStmt] return ...
#-----| getResult(): [BinaryExpr] ... .==(_:_:) ...
#-----| getFunction(): [MethodLookupExpr] .==(_:_:)
#-----| getBase(): [TypeExpr] Int.Type
#-----| getMethodRef(): [DeclRefExpr] ==(_:_:)
#-----| getArgument(0): [Argument] : index_a
#-----| getExpr(): [DeclRefExpr] index_a
#-----| getArgument(1): [Argument] : index_b
#-----| getExpr(): [DeclRefExpr] index_b
#-----| getMember(3): [ConcreteVarDecl] hashValue
#-----| Type = Int
#-----| getAccessor(0): [Accessor] get
#-----| InterfaceType = (AnError) -> () -> Int
#-----| getSelfParam(): [ParamDecl] self
#-----| Type = AnError
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [CallExpr] call to _hashValue(for:)
#-----| getFunction(): [DeclRefExpr] _hashValue(for:)
#-----| getArgument(0): [Argument] for: self
#-----| getExpr(): [DeclRefExpr] self
#-----| getMember(4): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] hashValue
#-----| getMember(5): [NamedFunction] hash(into:)
#-----| InterfaceType = (AnError) -> (inout Hasher) -> ()
#-----| getSelfParam(): [ParamDecl] self
#-----| Type = AnError
#-----| getParam(0): [ParamDecl] hasher
#-----| Type = Hasher
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [PatternBindingDecl] var ... = ...
#-----| getPattern(0): [TypedPattern] ... as ...
#-----| getSubPattern(): [NamedPattern] discriminator
#-----| getElement(1): [SwitchStmt] switch self { ... }
#-----| getExpr(): [DeclRefExpr] self
#-----| getCase(0): [CaseStmt] case ...
#-----| getLabel(0): [CaseLabelItem] .failed
#-----| getPattern(): [EnumElementPattern] .failed
#-----| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [DeclRefExpr] discriminator
#-----| getSource(): [IntegerLiteralExpr] 0
#-----| getElement(2): [CallExpr] call to combine(_:)
#-----| getFunction(): [MethodLookupExpr] .combine(_:)
#-----| getBase(): [DeclRefExpr] hasher
#-----| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] combine(_:)
#-----| getArgument(0): [Argument] : discriminator
#-----| getExpr(): [DeclRefExpr] discriminator
#-----| getExpr().getFullyConverted(): [LoadExpr] (Int) ...
# 38| [NamedFunction] failure(_:)
# 38| InterfaceType = (Int) throws -> ()
# 38| getParam(0): [ParamDecl] x
# 38| Type = Int
# 38| getBody(): [BraceStmt] { ... }
# 39| getElement(0): [GuardStmt] guard ... else { ... }
# 39| getCondition(): [StmtCondition] StmtCondition
# 39| getElement(0): [ConditionElement] ... .!=(_:_:) ...
# 39| getBoolean(): [BinaryExpr] ... .!=(_:_:) ...
# 39| getFunction(): [MethodLookupExpr] .!=(_:_:)
# 39| getBase(): [TypeExpr] Int.Type
# 39| getTypeRepr(): [TypeRepr] Int
# 39| getMethodRef(): [DeclRefExpr] !=(_:_:)
# 39| getArgument(0): [Argument] : x
# 39| getExpr(): [DeclRefExpr] x
# 39| getArgument(1): [Argument] : 0
# 39| getExpr(): [IntegerLiteralExpr] 0
# 39| getBody(): [BraceStmt] { ... }
# 40| getElement(0): [ThrowStmt] throw ...
# 40| getSubExpr(): [MethodLookupExpr] .failed
# 40| getBase(): [TypeExpr] AnError.Type
# 40| getTypeRepr(): [TypeRepr] AnError
# 40| getMethodRef(): [DeclRefExpr] failed
# 40| getSubExpr().getFullyConverted(): [ErasureExpr] (any Error) ...
# 44| [TopLevelCodeDecl] { ... }
# 44| getBody(): [BraceStmt] { ... }
# 44| getElement(0): [DeferStmt] defer { ... }
# 44| getBody(): [BraceStmt] { ... }
# 45| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 45| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 45| getArgument(0): [Argument] : [...]
# 45| getExpr(): [VarargExpansionExpr] [...]
# 45| getSubExpr(): [ArrayExpr] [...]
# 45| getElement(0): [StringLiteralExpr] done
# 45| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 45| getArgument(1): [Argument] separator: default separator
# 45| getExpr(): [DefaultArgumentExpr] default separator
# 45| getArgument(2): [Argument] terminator: default terminator
# 45| getExpr(): [DefaultArgumentExpr] default terminator
# 48| [TopLevelCodeDecl] { ... }
# 48| getBody(): [BraceStmt] { ... }
# 48| getElement(0): [DoStmt] do { ... }
# 48| getBody(): [BraceStmt] { ... }
# 49| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 49| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 49| getArgument(0): [Argument] : [...]
# 49| getExpr(): [VarargExpansionExpr] [...]
# 49| getSubExpr(): [ArrayExpr] [...]
# 49| getElement(0): [StringLiteralExpr] doing
# 49| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 49| getArgument(1): [Argument] separator: default separator
# 49| getExpr(): [DefaultArgumentExpr] default separator
# 49| getArgument(2): [Argument] terminator: default terminator
# 49| getExpr(): [DefaultArgumentExpr] default terminator
# 52| [TopLevelCodeDecl] { ... }
# 52| getBody(): [BraceStmt] { ... }
# 52| getElement(0): [PatternBindingDecl] var ... = ...
# 52| getInit(0): [IntegerLiteralExpr] 42
# 52| getPattern(0): [NamedPattern] index
# 52| [ConcreteVarDecl] index
# 52| Type = Int
# 53| [TopLevelCodeDecl] { ... }
# 53| getBody(): [BraceStmt] { ... }
# 53| getElement(0): [SwitchStmt] switch index { ... }
# 53| getExpr(): [DeclRefExpr] index
# 54| getCase(0): [CaseStmt] case ...
# 54| getLabel(0): [CaseLabelItem] =~ ...
# 54| getPattern(): [ExprPattern] =~ ...
# 54| getSubExpr(): [BinaryExpr] ... ~=(_:_:) ...
# 54| getFunction(): [DeclRefExpr] ~=(_:_:)
# 54| getArgument(0): [Argument] : 1
# 54| getExpr(): [IntegerLiteralExpr] 1
# 54| getArgument(1): [Argument] : $match
# 54| getExpr(): [DeclRefExpr] $match
# 55| getBody(): [BraceStmt] { ... }
# 55| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 55| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 55| getArgument(0): [Argument] : [...]
# 55| getExpr(): [VarargExpansionExpr] [...]
# 55| getSubExpr(): [ArrayExpr] [...]
# 55| getElement(0): [StringLiteralExpr] 1
# 55| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 55| getArgument(1): [Argument] separator: default separator
# 55| getExpr(): [DefaultArgumentExpr] default separator
# 55| getArgument(2): [Argument] terminator: default terminator
# 55| getExpr(): [DefaultArgumentExpr] default terminator
# 56| getElement(1): [FallthroughStmt] fallthrough
# 57| getCase(1): [CaseStmt] case ...
# 57| getLabel(0): [CaseLabelItem] =~ ...
# 57| getPattern(): [ExprPattern] =~ ...
# 57| getSubExpr(): [BinaryExpr] ... ~=(_:_:) ...
# 57| getFunction(): [DeclRefExpr] ~=(_:_:)
# 57| getArgument(0): [Argument] : 5
# 57| getExpr(): [IntegerLiteralExpr] 5
# 57| getArgument(1): [Argument] : $match
# 57| getExpr(): [DeclRefExpr] $match
# 57| getLabel(1): [CaseLabelItem] =~ ...
# 57| getPattern(): [ExprPattern] =~ ...
# 57| getSubExpr(): [BinaryExpr] ... ~=(_:_:) ...
# 57| getFunction(): [DeclRefExpr] ~=(_:_:)
# 57| getArgument(0): [Argument] : 10
# 57| getExpr(): [IntegerLiteralExpr] 10
# 57| getArgument(1): [Argument] : $match
# 57| getExpr(): [DeclRefExpr] $match
# 58| getBody(): [BraceStmt] { ... }
# 58| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 58| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 58| getArgument(0): [Argument] : [...]
# 58| getExpr(): [VarargExpansionExpr] [...]
# 58| getSubExpr(): [ArrayExpr] [...]
# 58| getElement(0): [StringLiteralExpr] 5, 10
# 58| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 58| getArgument(1): [Argument] separator: default separator
# 58| getExpr(): [DefaultArgumentExpr] default separator
# 58| getArgument(2): [Argument] terminator: default terminator
# 58| getExpr(): [DefaultArgumentExpr] default terminator
# 59| getElement(1): [BreakStmt] break
# 60| getCase(2): [CaseStmt] case ...
# 60| getLabel(0): [CaseLabelItem] _
# 60| getPattern(): [AnyPattern] _
# 61| getBody(): [BraceStmt] { ... }
# 61| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 61| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 61| getArgument(0): [Argument] : [...]
# 61| getExpr(): [VarargExpansionExpr] [...]
# 61| getSubExpr(): [ArrayExpr] [...]
# 61| getElement(0): [StringLiteralExpr] default
# 61| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 61| getArgument(1): [Argument] separator: default separator
# 61| getExpr(): [DefaultArgumentExpr] default separator
# 61| getArgument(2): [Argument] terminator: default terminator
# 61| getExpr(): [DefaultArgumentExpr] default terminator
# 54| [ConcreteVarDecl] $match
# 54| Type = Int
# 57| [ConcreteVarDecl] $match
# 57| Type = Int
# 57| [ConcreteVarDecl] $match
# 57| Type = Int
# 64| [TopLevelCodeDecl] { ... }
# 64| getBody(): [BraceStmt] { ... }
# 64| getElement(0): [PatternBindingDecl] var ... = ...
# 64| getInit(0): [IntegerLiteralExpr] 4
# 64| getInit(0).getFullyConverted(): [InjectIntoOptionalExpr] (Int?) ...
# 64| getPattern(0): [TypedPattern] ... as ...
# 64| getSubPattern(): [NamedPattern] x
# 64| getTypeRepr(): [TypeRepr] Int?
# 64| [ConcreteVarDecl] x
# 64| Type = Int?
# 65| [TopLevelCodeDecl] { ... }
# 65| getBody(): [BraceStmt] { ... }
# 65| getElement(0): [IfStmt] if ... then { ... }
# 65| getCondition(): [StmtCondition] StmtCondition
# 65| getElement(0): [ConditionElement] let ...? = ...
# 65| getPattern(): [OptionalSomePattern] let ...?
# 65| getSubPattern(): [NamedPattern] xx
# 65| getPattern().getFullyUnresolved(): [BindingPattern] let ...
# 65| getInitializer(): [DeclRefExpr] x
# 65| getThen(): [BraceStmt] { ... }
# 65| [ConcreteVarDecl] xx
# 65| Type = Int
# 67| [TopLevelCodeDecl] { ... }
# 67| getBody(): [BraceStmt] { ... }
# 67| getElement(0): [IfStmt] if ... then { ... }
# 67| getCondition(): [StmtCondition] StmtCondition
# 67| getElement(0): [ConditionElement] .some(...) = ...
# 67| getPattern(): [EnumElementPattern] .some(...)
# 67| getSubPattern(): [AnyPattern] _
# 67| getSubPattern().getFullyUnresolved(): [ParenPattern] (...)
# 67| getInitializer(): [DeclRefExpr] x
# 67| getThen(): [BraceStmt] { ... }
# 70| [TopLevelCodeDecl] { ... }
# 70| getBody(): [BraceStmt] { ... }
# 70| getElement(0): [PatternBindingDecl] var ... = ...
# 70| getInit(0): [ArrayExpr] [...]
# 70| getElement(0): [IntegerLiteralExpr] 1
# 70| getElement(1): [IntegerLiteralExpr] 2
# 70| getElement(2): [IntegerLiteralExpr] 3
# 70| getPattern(0): [NamedPattern] numbers
# 70| [ConcreteVarDecl] numbers
# 70| Type = [Int]
# 71| [TopLevelCodeDecl] { ... }
# 71| getBody(): [BraceStmt] { ... }
# 71| getElement(0): [ForEachStmt] for ... in ... where ... { ... }
# 71| getVariable(0): [ConcreteVarDecl] number
# 71| Type = Int
# 71| getVariable(1): [ConcreteVarDecl] $number$generator
# 71| Type = IndexingIterator<[Int]>
# 71| getPattern(): [NamedPattern] number
# 71| getWhere(): [BinaryExpr] ... .==(_:_:) ...
# 71| getFunction(): [MethodLookupExpr] .==(_:_:)
# 71| getBase(): [TypeExpr] Int.Type
# 71| getTypeRepr(): [TypeRepr] Int
# 71| getMethodRef(): [DeclRefExpr] ==(_:_:)
# 71| getArgument(0): [Argument] : ... .%(_:_:) ...
# 71| getExpr(): [BinaryExpr] ... .%(_:_:) ...
# 71| getFunction(): [MethodLookupExpr] .%(_:_:)
# 71| getBase(): [TypeExpr] Int.Type
# 71| getTypeRepr(): [TypeRepr] Int
# 71| getMethodRef(): [DeclRefExpr] %(_:_:)
# 71| getArgument(0): [Argument] : number
# 71| getExpr(): [DeclRefExpr] number
# 71| getArgument(1): [Argument] : 2
# 71| getExpr(): [IntegerLiteralExpr] 2
# 71| getArgument(1): [Argument] : 0
# 71| getExpr(): [IntegerLiteralExpr] 0
#-----| getIteratorVar(): [PatternBindingDecl] var ... = ...
# 71| getInit(0): [CallExpr] call to makeIterator()
# 71| getFunction(): [MethodLookupExpr] .makeIterator()
# 71| getBase(): [DeclRefExpr] numbers
#-----| getMethodRef(): [DeclRefExpr] makeIterator()
# 71| getPattern(0): [NamedPattern] $number$generator
# 71| getNextCall(): [CallExpr] call to next()
# 71| getFunction(): [MethodLookupExpr] .next()
# 71| getBase(): [DeclRefExpr] $number$generator
# 71| getBase().getFullyConverted(): [InOutExpr] &...
#-----| getMethodRef(): [DeclRefExpr] next()
# 71| getBody(): [BraceStmt] { ... }
# 74| [StructDecl] HasModifyAccessorDecl
# 75| getMember(0): [PatternBindingDecl] var ... = ...
# 75| getPattern(0): [TypedPattern] ... as ...
# 75| getSubPattern(): [NamedPattern] x
# 75| getTypeRepr(): [TypeRepr] Int
# 75| getMember(1): [ConcreteVarDecl] x
# 75| Type = Int
# 75| getAccessor(0): [Accessor] get
# 75| InterfaceType = (HasModifyAccessorDecl) -> () -> Int
# 75| getSelfParam(): [ParamDecl] self
# 75| Type = HasModifyAccessorDecl
# 75| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [ReturnStmt] return ...
#-----| getResult(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
# 75| getAccessor(1): [Accessor] set
# 75| InterfaceType = (inout HasModifyAccessorDecl) -> (Int) -> ()
# 75| getSelfParam(): [ParamDecl] self
# 75| Type = HasModifyAccessorDecl
# 75| getParam(0): [ParamDecl] value
# 75| Type = Int
# 75| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 75| getAccessor(2): [Accessor] _modify
# 75| InterfaceType = (inout HasModifyAccessorDecl) -> () -> ()
# 75| getSelfParam(): [ParamDecl] self
# 75| Type = HasModifyAccessorDecl
# 75| getBody(): [BraceStmt] { ... }
# 75| getElement(0): [YieldStmt] yield ...
#-----| getResult(0): [MemberRefExpr] .x
#-----| getBase(): [DeclRefExpr] self
#-----| getResult(0).getFullyConverted(): [InOutExpr] &...
# 76| getMember(2): [PatternBindingDecl] var ... = ...
# 76| getPattern(0): [TypedPattern] ... as ...
# 76| getSubPattern(): [NamedPattern] hasModify
# 76| getTypeRepr(): [TypeRepr] Int
# 76| getMember(3): [ConcreteVarDecl] hasModify
# 76| Type = Int
# 77| getAccessor(0): [Accessor] _modify
# 77| InterfaceType = (inout HasModifyAccessorDecl) -> () -> ()
# 77| getSelfParam(): [ParamDecl] self
# 77| Type = HasModifyAccessorDecl
# 77| getBody(): [BraceStmt] { ... }
# 78| getElement(0): [YieldStmt] yield ...
# 78| getResult(0): [MemberRefExpr] .x
# 78| getBase(): [DeclRefExpr] self
# 78| getResult(0).getFullyConverted(): [InOutExpr] &...
# 81| getAccessor(1): [Accessor] get
# 81| InterfaceType = (HasModifyAccessorDecl) -> () -> Int
# 81| getSelfParam(): [ParamDecl] self
# 81| Type = HasModifyAccessorDecl
# 81| getBody(): [BraceStmt] { ... }
# 82| getElement(0): [ReturnStmt] return ...
# 82| getResult(): [IntegerLiteralExpr] 0
# 76| getAccessor(2): [Accessor] set
# 76| InterfaceType = (inout HasModifyAccessorDecl) -> (Int) -> ()
# 76| getSelfParam(): [ParamDecl] self
# 76| Type = HasModifyAccessorDecl
# 76| getParam(0): [ParamDecl] value
# 76| Type = Int
# 76| getBody(): [BraceStmt] { ... }
#-----| getElement(0): [AssignExpr] ... = ...
#-----| getDest(): [MemberRefExpr] .hasModify
#-----| getBase(): [DeclRefExpr] self
#-----| getSource(): [DeclRefExpr] value
# 74| getMember(4): [Initializer] HasModifyAccessorDecl.init(x:)
# 74| InterfaceType = (HasModifyAccessorDecl.Type) -> (Int) -> HasModifyAccessorDecl
# 74| getSelfParam(): [ParamDecl] self
# 74| Type = HasModifyAccessorDecl
# 74| getParam(0): [ParamDecl] x
# 74| Type = Int
# 87| [TopLevelCodeDecl] { ... }
# 87| getBody(): [BraceStmt] { ... }
# 87| getElement(0): [IfStmt] if ... then { ... }
# 87| getCondition(): [StmtCondition] StmtCondition
# 87| getElement(0): [ConditionElement] #available
# 87| getAvailability(): [AvailabilityInfo] #available
# 87| getSpec(0): [PlatformVersionAvailabilitySpec] macOS 155
# 87| getSpec(1): [OtherAvailabilitySpec] *
# 87| getThen(): [BraceStmt] { ... }
# 88| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 88| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 88| getArgument(0): [Argument] : [...]
# 88| getExpr(): [VarargExpansionExpr] [...]
# 88| getSubExpr(): [ArrayExpr] [...]
# 88| getElement(0): [IntegerLiteralExpr] 155
# 88| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 88| getArgument(1): [Argument] separator: default separator
# 88| getExpr(): [DefaultArgumentExpr] default separator
# 88| getArgument(2): [Argument] terminator: default terminator
# 88| getExpr(): [DefaultArgumentExpr] default terminator
# 91| [TopLevelCodeDecl] { ... }
# 91| getBody(): [BraceStmt] { ... }
# 91| getElement(0): [IfStmt] if ... then { ... }
# 91| getCondition(): [StmtCondition] StmtCondition
# 91| getElement(0): [ConditionElement] #unavailable
# 91| getAvailability(): [AvailabilityInfo] #unavailable
# 91| getSpec(0): [PlatformVersionAvailabilitySpec] macOS 42
# 91| getThen(): [BraceStmt] { ... }
# 92| getElement(0): [CallExpr] call to print(_:separator:terminator:)
# 92| getFunction(): [DeclRefExpr] print(_:separator:terminator:)
# 92| getArgument(0): [Argument] : [...]
# 92| getExpr(): [VarargExpansionExpr] [...]
# 92| getSubExpr(): [ArrayExpr] [...]
# 92| getElement(0): [IntegerLiteralExpr] 42
# 92| getElement(0).getFullyConverted(): [ErasureExpr] (Any) ...
# 92| getArgument(1): [Argument] separator: default separator
# 92| getExpr(): [DefaultArgumentExpr] default separator
# 92| getArgument(2): [Argument] terminator: default terminator
# 92| getExpr(): [DefaultArgumentExpr] default terminator