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 # 116| getVariable(5): [ConcreteVarDecl] n5 # 116| Type = Int # 117| getVariable(6): [ConcreteVarDecl] n6 # 117| Type = Int # 118| getVariable(7): [ConcreteVarDecl] n7 # 118| Type = Int # 119| getVariable(8): [ConcreteVarDecl] n8 # 119| Type = Int # 121| getVariable(9): [ConcreteVarDecl] n9 # 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 # 116| getElement(5): [PatternBindingDecl] var ... = ... # 116| getInit(0): [MemberRefExpr] .myInt # 116| getBase(): [DeclRefExpr] param # 116| getPattern(0): [NamedPattern] n5 # 117| getElement(6): [PatternBindingDecl] var ... = ... # 117| getInit(0): [MemberRefExpr] .myInt # 117| getBase(): [DeclRefExpr] param # 117| getBase().getFullyConverted(): [DotSelfExpr] .self # 117| 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| getMethodRef(): [DeclRefExpr] getMyInt() # 118| getPattern(0): [NamedPattern] n7 # 119| getElement(8): [PatternBindingDecl] var ... = ... # 119| getInit(0): [CallExpr] call to getMyInt() # 119| getFunction(): [MethodLookupExpr] .getMyInt() # 119| getBase(): [DeclRefExpr] param # 119| getBase().getFullyConverted(): [DotSelfExpr] .self # 119| getMethodRef(): [DeclRefExpr] getMyInt() # 119| getPattern(0): [NamedPattern] n8 # 121| getElement(9): [PatternBindingDecl] var ... = ... # 121| getInit(0): [MemberRefExpr] .myInt # 121| getBase(): [DeclRefExpr] inoutParam # 121| getBase().getFullyConverted(): [LoadExpr] (C) ... # 121| getPattern(0): [NamedPattern] n9 # 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> # 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 # 457| getVariable(1): [ConcreteVarDecl] kpGet_bs_0_x # 457| Type = WritableKeyPath # 458| getVariable(2): [ConcreteVarDecl] kpGet_mayB_force_x # 458| Type = WritableKeyPath # 459| getVariable(3): [ConcreteVarDecl] kpGet_mayB_x # 459| Type = KeyPath # 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) ... # 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) ... # 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) ... # 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) ... # 464| getPattern(0): [NamedPattern] apply_kpGet_mayB_x # 467| [NamedFunction] testIfConfig() # 467| InterfaceType = () -> () # 467| getBody(): [BraceStmt] { ... } # 468| getElement(0): [IfConfigDecl] #if ... # 472| getElement(1): [IntegerLiteralExpr] 3 # 473| getElement(2): [IntegerLiteralExpr] 4 # 476| getElement(3): [IntegerLiteralExpr] 5 # 478| getElement(4): [IfConfigDecl] #if ... # 483| getElement(5): [IntegerLiteralExpr] 8 # 485| getElement(6): [IfConfigDecl] #if ... # 489| getElement(7): [IntegerLiteralExpr] 11 # 490| getElement(8): [IntegerLiteralExpr] 12 # 493| getElement(9): [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 # 523| getElement(0): [PatternBindingDecl] var ... = ... # 523| getInit(0): [CallExpr] call to AsyncStream.init(_:bufferingPolicy:_:) # 523| getFunction(): [MethodLookupExpr] AsyncStream.init(_:bufferingPolicy:_:) # 523| getBase(): [TypeExpr] AsyncStream.Type # 523| getTypeRepr(): [TypeRepr] AsyncStream # 523| getMethodRef(): [DeclRefExpr] AsyncStream.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.Continuation.BufferingPolicy.Type # 523| getTypeRepr(): [TypeRepr] AsyncStream.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.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> # 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.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) ... #-----| getMethodRef(): [DeclRefExpr] makeAsyncIterator() # 533| getPattern(0): [NamedPattern] $i$generator # 533| getNextCall(): [CallExpr] call to next() # 533| getFunction(): [MethodLookupExpr] .next() # 533| getBase(): [DeclRefExpr] $i$generator # 533| getBase().getFullyConverted(): [InOutExpr] &... #-----| getMethodRef(): [DeclRefExpr] next() # 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 # 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) -> () -> 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.Type # 582| getTypeRepr(): [TypeRepr] Range # 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| 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) -> () -> Int # 23| getSelfParam(): [ParamDecl] self # 23| Type = Self # 23| getAccessor(1): [Accessor] set # 23| InterfaceType = (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 = (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) -> () -> Int # 24| getSelfParam(): [ParamDecl] self # 24| Type = Self # 25| getMember(4): [NamedFunction] random() # 25| InterfaceType = (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 = (GenericClass) -> (A, B, C) -> () # 147| getSelfParam(): [ParamDecl] self # 147| Type = GenericClass # 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.deinit() # 146| InterfaceType = (GenericClass) -> () -> () # 146| getSelfParam(): [ParamDecl] self # 146| Type = GenericClass # 146| getBody(): [BraceStmt] { ... } # 146| getMember(2): [Initializer] GenericClass.init() # 146| InterfaceType = (GenericClass.Type) -> () -> GenericClass # 146| getSelfParam(): [ParamDecl] self # 146| Type = GenericClass # 146| getBody(): [BraceStmt] { ... } # 146| getElement(0): [ReturnStmt] return # 150| [NamedFunction] genericFunc(_:_:_:) # 150| InterfaceType = (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] { ... } # 158| getElement(0): [IfConfigDecl] #if ... # 163| getElement(1): [IntegerLiteralExpr] 4 # 164| getElement(2): [IntegerLiteralExpr] 5 # 165| getElement(3): [IntegerLiteralExpr] 6 # 168| getElement(4): [IfConfigDecl] #if ... # 173| getElement(5): [IfConfigDecl] #if ... # 174| getElement(6): [IntegerLiteralExpr] 9 # 175| getElement(7): [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) -> () # 56| getParam(0): [ParamDecl] pointer # 56| Type = UnsafePointer # 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) ... # 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 # 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.Type # 92| getTypeRepr(): [TypeRepr] Unmanaged # 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.Type # 93| getTypeRepr(): [TypeRepr] Unmanaged # 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, WritableKeyPath) -> () # 151| getParam(0): [ParamDecl] a # 151| Type = A # 151| getParam(1): [ParamDecl] keyPathInt # 151| Type = WritableKeyPath # 151| getParam(2): [ParamDecl] keyPathB # 151| Type = WritableKeyPath # 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 # 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 # 179| getComponent(0): [KeyPathComponent] KeyPathComponent # 179| getComponent(1): [KeyPathComponent] KeyPathComponent # 179| getPattern(0): [NamedPattern] optForce # 179| [ConcreteVarDecl] optForce # 179| Type = WritableKeyPath, 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 # 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 # 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 # 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 = (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> # 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