From 92bdb7b33ff6701e406acf584551ae7b3de2abbe Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 21 Oct 2026 13:47:58 +0200 Subject: [PATCH 1/4] Unified: Type inference for nested types --- .../lib/codeql/unified/internal/AstExtra.qll | 29 + .../codeql/unified/internal/ExprPositions.qll | 23 +- .../unified/internal/ExprPositionsPlugin.qll | 2 + .../internal/ExprPositionsPluginSwift.qll | 4 +- .../lib/codeql/unified/internal/FacadeAst.qll | 13 +- .../unified/internal/typeinference/Type.qll | 30 +- .../typeinference/TypeAbstraction.qll | 7 +- .../internal/typeinference/TypeInference.qll | 84 +- .../TypeInferenceConsistency.qll | 1 + .../typeinference/TypeInferencePlugin.qll | 27 - .../TypeInferencePluginSwift.qll | 39 - .../internal/typeinference/TypeMention.qll | 254 +++- .../type-inference/classes.swift | 2 +- .../type-inference/generics.swift | 2 +- .../type-inference/nested_types.swift | 250 ++++ .../type-inference/type-inference.expected | 1029 ++++++++++++++++- .../type-inference/variance.swift | 19 + 17 files changed, 1656 insertions(+), 159 deletions(-) create mode 100644 unified/ql/test/library-tests/type-inference/nested_types.swift create mode 100644 unified/ql/test/library-tests/type-inference/variance.swift diff --git a/unified/ql/lib/codeql/unified/internal/AstExtra.qll b/unified/ql/lib/codeql/unified/internal/AstExtra.qll index f2182698f6d0..5ccc16295192 100644 --- a/unified/ql/lib/codeql/unified/internal/AstExtra.qll +++ b/unified/ql/lib/codeql/unified/internal/AstExtra.qll @@ -138,6 +138,9 @@ module Public { final class EnumCaseClass extends ClassLikeDeclaration { EnumCaseClass() { this.hasModifier("enum_case") } + /** Gets the enum declaration that this case class belongs to. */ + ClassLikeDeclaration getEnum() { this = result.getAMember() } + /** Gets the constructor of this algebraic data type. */ EnumCaseConstructor getConstructor() { result = this.getAMember() } } @@ -168,5 +171,31 @@ module Public { /** Gets the class containing this constructor. */ EnumCaseClass getEnumCaseClass() { result.getAMember() = this } + + /** Gets the enum declaration that this constructor belongs to. */ + ClassLikeDeclaration getEnum() { result = this.getEnumCaseClass().getEnum() } + } + + /** + * A field of an enum case in an algebraic data type. For example `a` and + * `b` in + * + * ```swift + * enum E { + * case a + * case b + * } + * ``` + */ + final class EnumField extends VariableDeclaration { + private ClassLikeDeclaration enum; + + EnumField() { + this = enum.getAMember() and + this.hasModifier("enum_case") + } + + /** Gets the enum declaration that this enum field belongs to. */ + ClassLikeDeclaration getEnum() { result = enum } } } diff --git a/unified/ql/lib/codeql/unified/internal/ExprPositions.qll b/unified/ql/lib/codeql/unified/internal/ExprPositions.qll index 3edc36cc1eb2..18dc75f855ba 100644 --- a/unified/ql/lib/codeql/unified/internal/ExprPositions.qll +++ b/unified/ql/lib/codeql/unified/internal/ExprPositions.qll @@ -3,9 +3,11 @@ private import NameBinding as NameBinding private import ExprPositionsPlugin /** - * Holds if `expr` appears in a context where it must refer to a type. + * Holds if `expr` appears in a context where it must refer to a type, + * and where omission of type arguments implicitly refer to the type + * parameters of the type being accessed (provided that they are in scope). */ -predicate isInTypeContext(Expr expr) { +predicate isInTypeContextWithImplicitTypeArgs(Expr expr) { expr = any(TypeCastExpr n).getType() or expr = any(TypeTestExpr n).getType() @@ -36,11 +38,26 @@ predicate isInTypeContext(Expr expr) { or expr.getParent() instanceof TypeConstraint or + any(ExprPositionsPlugin p).isInTypeContextWithImplicitTypeArgs(expr) + or + isInTypeContextWithImplicitTypeArgs(expr.getEnclosingExpr()) +} + +private predicate isInTypeContextWithoutImplicitTypeArgs(Expr expr) { exists(NameBinding::getTypeFromRef(expr)) or any(ExprPositionsPlugin p).isInTypeContext(expr) or - isInTypeContext(expr.getEnclosingExpr()) + isInTypeContextWithoutImplicitTypeArgs(expr.getEnclosingExpr()) +} + +/** + * Holds if `expr` appears in a context where it must refer to a type. + */ +predicate isInTypeContext(Expr expr) { + isInTypeContextWithImplicitTypeArgs(expr) + or + isInTypeContextWithoutImplicitTypeArgs(expr) } /** Holds if `e` appears in a name-binding position inside `declaration` */ diff --git a/unified/ql/lib/codeql/unified/internal/ExprPositionsPlugin.qll b/unified/ql/lib/codeql/unified/internal/ExprPositionsPlugin.qll index e85937ef03a4..0bca0f05898e 100644 --- a/unified/ql/lib/codeql/unified/internal/ExprPositionsPlugin.qll +++ b/unified/ql/lib/codeql/unified/internal/ExprPositionsPlugin.qll @@ -8,5 +8,7 @@ private module Plugins { class ExprPositionsPlugin extends Unit { predicate isInTypeContext(Expr e) { none() } + predicate isInTypeContextWithImplicitTypeArgs(Expr e) { none() } + predicate isReturnedExpr(Callable callable, Expr e) { none() } } diff --git a/unified/ql/lib/codeql/unified/internal/ExprPositionsPluginSwift.qll b/unified/ql/lib/codeql/unified/internal/ExprPositionsPluginSwift.qll index 65d112563525..42bd3ccc193a 100644 --- a/unified/ql/lib/codeql/unified/internal/ExprPositionsPluginSwift.qll +++ b/unified/ql/lib/codeql/unified/internal/ExprPositionsPluginSwift.qll @@ -2,7 +2,9 @@ private import unified private import ExprPositionsPlugin private class ExprPositionsPluginSwift extends ExprPositionsPlugin { - override predicate isInTypeContext(Expr e) { e = any(GenericTypeExpr g).getBase() } + override predicate isInTypeContextWithImplicitTypeArgs(Expr e) { + e = any(GenericTypeExpr g).getBase() + } override predicate isReturnedExpr(Callable callable, Expr e) { // Short-hand return from a function body, e.g. `func foo() -> String { "42" }` diff --git a/unified/ql/lib/codeql/unified/internal/FacadeAst.qll b/unified/ql/lib/codeql/unified/internal/FacadeAst.qll index 8d40d3f6b099..d17e832d4202 100644 --- a/unified/ql/lib/codeql/unified/internal/FacadeAst.qll +++ b/unified/ql/lib/codeql/unified/internal/FacadeAst.qll @@ -8,6 +8,7 @@ private import unified as U private import AstPlugin private import codeql.files.FileSystem private import codeql.unified.internal.NameBinding as NameBinding +private import codeql.unified.internal.typeinference.TypeMention as TypeMention module Unified { private import Ast::Unified as G @@ -50,6 +51,11 @@ module Unified { ) } + /** + * Gets the nearest resolved enclosing class declaration, if any. + */ + ClassLikeDeclaration getEnclosingClassResolved() { result = this.getEnclosingClass().resolve() } + private AstNode overrideEnclosingCallableParent() { exists(FunctionExpr func | // Capture declarations are evaluated as part of the outer context, and @@ -239,15 +245,16 @@ module Unified { /** Gets the name of this declaration. */ string getName() { result = this.getNameNode().getValue() } - /** Gets a direct base class of this class. */ + /** Gets a direct base class of this class, where type aliases are resolved. */ + pragma[nomagic] ClassLikeDeclaration getABaseClass() { - result.getNameNode() = - NameBinding::getStaticBindingTargetFromRef(this.getABaseType().getType()) + result = this.getABaseType().getType().(TypeMention::TypeMention).getClassLikeDeclaration() } /** * Gets the target of this extension class, or this class itself if it is not an extension. */ + pragma[nomagic] ClassLikeDeclaration resolve() { not exists(this.getExtensionTarget()) and result = this diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/Type.qll b/unified/ql/lib/codeql/unified/internal/typeinference/Type.qll index 181e129fc955..3d826390564c 100644 --- a/unified/ql/lib/codeql/unified/internal/typeinference/Type.qll +++ b/unified/ql/lib/codeql/unified/internal/typeinference/Type.qll @@ -38,6 +38,12 @@ predicate associatedTypeParameterInherited( name = a.getName() } +private predicate isNestedType(ClassLikeDeclaration nested, ClassLikeDeclaration parent) { + exists(nested.getNameNode()) and + exists(parent.getNameNode()) and + parent.getAMemberIncludingExtensions() = nested +} + cached newtype TType = TClassLikeDeclarationType(ClassLikeDeclaration c) { @@ -56,6 +62,7 @@ newtype TType = ) { associatedTypeParameter(c, a, inherited) } or + TParentTypeParameterType(ClassLikeDeclaration c) { isNestedType(c, _) } or TUnknownType() or TUnknownTypeTypeParameter(int i) { i in [0 .. 20] } @@ -112,9 +119,11 @@ class ClassLikeDeclarationType extends TypeImpl, TClassLikeDeclarationType { result = super.getATypeParameter() or result = TAssociatedTypeParameterType(c, _, _) + or + result = TParentTypeParameterType(c) } - override string toString() { result = c.getName() } + override string toString() { result = c.getQualifiedName() } override Location getLocation() { result = c.getLocation() } } @@ -214,6 +223,25 @@ class AssociatedTypeParameterType extends TypeParameter, TAssociatedTypeParamete } } +/** + * A special type parameter used to represent the parent type of a nested class. + */ +class ParentTypeParameterType extends TypeParameter, TParentTypeParameterType { + private Unified::ClassLikeDeclaration c; + + ParentTypeParameterType() { this = TParentTypeParameterType(c) } + + ClassLikeDeclaration getParent() { isNestedType(c, result) } + + override ClassLikeDeclaration getDeclaringItem() { result = c } + + override Identifier getNameNode() { none() } + + override string toString() { result = "(parent:" + c.getName() + ")" } + + override Location getLocation() { result = c.getLocation() } +} + /** * A type parameter of the special `UnknownType`. */ diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeAbstraction.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeAbstraction.qll index cde6a2449e2d..4695189f9d1c 100644 --- a/unified/ql/lib/codeql/unified/internal/typeinference/TypeAbstraction.qll +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeAbstraction.qll @@ -15,5 +15,10 @@ abstract class TypeAbstraction extends AstNode { */ private class ClassLikeDeclarationTypeAbstraction extends TypeAbstraction instanceof Unified::ClassLikeDeclaration { - override TypeParameter getATypeParameter() { this = result.getDeclaringItem() } + override TypeParameter getATypeParameter() { + this = result.getDeclaringItem() + or + // type parameters from outer classes are also in scope + super.resolve().getEnclosingClassResolved*() = result.getDeclaringItem() + } } diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInference.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInference.qll index c5572af2ae34..86fc81b6220a 100644 --- a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInference.qll +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInference.qll @@ -64,6 +64,13 @@ private module Input1 implements InputSig1 { kind = 3 and tp0 = TUnknownTypeTypeParameter(id1) and id2 = 0 + or + kind = 4 and + exists(ClassLikeDeclaration c | + tp0 = TParentTypeParameterType(c) and + id1 = idOfTypeParameterAstNode(c) and + id2 = 0 + ) | tp0 order by kind, id1, id2 ) @@ -389,9 +396,6 @@ module Input3 implements InputSig3 { Unified::Callable getCallable() { result = c } override TypeMention getDeclaringType() { - result = c.(EnumConstructor).getEnum().getNameNode() - or - not c instanceof EnumConstructor and exists(ClassLikeDeclaration cls | c = cls.getAMember() and result = getClassLikeDeclarationTypeMention(cls) @@ -405,9 +409,9 @@ module Input3 implements InputSig3 { or result = c.(FunctionDeclaration).getNameNode() or - result = c.(EnumConstructor).getEnclosingClass().getNameNode() + result = c.(EnumCaseConstructor).getEnumCaseClass().getNameNode() or - not c instanceof EnumConstructor and + not c instanceof EnumCaseConstructor and result = c.(ConstructorDeclaration).getNameNode() } @@ -492,15 +496,21 @@ module Input3 implements InputSig3 { } Callable getTargetViaStaticNameBinding() { - exists(NameBinding b | b = getStaticBindingTargetFromRef(this.getCallee()) | - // object creation (including enum constructors): `String(42)`, `Optional.Some(42)` - exists(ClassLikeDeclaration cls | - cls.getNameNode() = b and - result.isInstanceMemberOf(cls, _) and - result.asCallable() instanceof ConstructorDeclaration - ) - or - // call without explicit receiver: `foo(42)` + // object creation (including enum constructors): `String(42)`, `Optional.Some(42)` + exists(ClassLikeDeclaration cls | + cls = + this.getCallee() + .(TypeMention) + .getType() + .(ClassLikeDeclarationType) + .getClassLikeDeclaration() and + result.isInstanceMemberOf(cls, _) and + result.asCallable() instanceof ConstructorDeclaration + ) + or + // call without explicit receiver: `foo(42)` + exists(NameBinding b | + b = getStaticBindingTargetFromRef(this.getCallee()) and result.getNameNode() = b ) } @@ -659,10 +669,20 @@ module Input3 implements InputSig3 { result = getQualifierTypeMention(invocation) } - private predicate constructionReceiver(Invocation i, Callable constructor, Expr receiver) { - constructor = i.getTargetImpl(_) and - constructor.asCallable() instanceof ConstructorDeclaration and - receiver = i.getArgument(0) + private predicate constructionReceiver( + Invocation i, Callable constructor, Expr receiver, TypePath enumPrefixPath + ) { + exists(ConstructorDeclaration cd | + constructor = i.getTargetImpl(_) and + cd = constructor.asCallable() and + receiver = i.getArgument(0) + | + enumPrefixPath = + TypePath::singleton(TParentTypeParameterType(cd.(EnumCaseConstructor).getEnumCaseClass())) + or + not cd instanceof EnumCaseConstructor and + enumPrefixPath.isEmpty() + ) } /** @@ -696,11 +716,15 @@ module Input3 implements InputSig3 { M3::ContextualTyping::ContextualReturnType; private predicate needsContextualTyping(Invocation i, TypePath path) { - exists(Callable constructor, Expr receiver, ClassLikeDeclarationType receiverType | - constructionReceiver(i, constructor, receiver) and - receiverType = inferType(receiver) + exists( + Callable constructor, Expr receiver, TypePath enumPrefixPath, + ClassLikeDeclarationType receiverType, TypePath path0 + | + constructionReceiver(i, constructor, receiver, enumPrefixPath) and + receiverType = inferType(receiver) and + path = path0.stripPrefix(enumPrefixPath) | - ContextualConstructorReturnType::needsContextualTyping(i, path) and + ContextualConstructorReturnType::needsContextualTyping(i, path0) and receiverType = constructor.getDeclaringType().getType() or // inherited constructor @@ -710,18 +734,19 @@ module Input3 implements InputSig3 { | declType = constructor.getDeclaringType().getType() and BaseTypes::rootTypesSatisfaction(receiverType, declType, abs, _, constraint) and - path = TypePath::singleton(tp) + tp = + getClassLikeDeclarationTypeMention(receiverType.getClassLikeDeclaration()) + .getTypeAt(path0) | // `A : B` - exists(TypePath path0 | - BaseTypes::conditionSatisfiesConstraintTypeAt(abs, _, constraint, path0, tp) and - ContextualConstructorReturnType::needsContextualTyping(i, path0) + exists(TypePath path1 | + BaseTypes::conditionSatisfiesConstraintTypeAt(abs, _, constraint, path1, tp) and + ContextualConstructorReturnType::needsContextualTyping(i, path1) ) or // `A : B` - tp = receiverType.getATypeParameter() and not BaseTypes::conditionSatisfiesConstraintTypeAt(abs, _, constraint, _, tp) and - not exists(Type t | t = i.getTypeQualifier(path) and not t instanceof PseudoType) + not exists(Type t | t = i.getTypeQualifier(path0) and not t instanceof PseudoType) ) ) } @@ -734,8 +759,7 @@ module Input3 implements InputSig3 { * as well as calls receivers, `self.init(0)` or `super.init(0)`. */ predicate step(AstNode n1, TypePath prefix1, AstNode n2, TypePath prefix2) { - constructionReceiver(n2, _, n1) and - prefix1.isEmpty() and + constructionReceiver(n2, _, n1, prefix1) and prefix2.isEmpty() } diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll index 20aa749a7216..2253419c1ab6 100644 --- a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll @@ -10,6 +10,7 @@ import TypeInference::Consistency query predicate illFormedTypeMention(TypeMention tm) { Consistency::illFormedTypeMention(tm) and + not tm.(AliasExprTypeMention).isTypeParameterAlias(_) and tm.fromSource() } diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferencePlugin.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferencePlugin.qll index 0680c6914ada..c810d192b6c7 100644 --- a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferencePlugin.qll +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferencePlugin.qll @@ -81,14 +81,6 @@ class TypeInferencePlugin extends Unit { /** Holds if `field` is a field of the tuple type `tuple` with the given `name`. */ abstract predicate tupleField(Type tuple, string name, VariableDeclaration field); - /** Holds if `case` is an enum case constructor of `enum` with identifier `i`. */ - abstract predicate isEnumConstructor( - ClassLikeDeclaration enum, ConstructorDeclaration case, Identifier i - ); - - /** Holds if `field` is an enum field of `enum`. */ - abstract predicate isEnumField(ClassLikeDeclaration enum, VariableDeclaration field); - /** Gets the inferred type for the given AST node and type path. */ Type inferType(AstNode n, TypePath path) { none() } } @@ -139,25 +131,6 @@ class TupleType extends Type { } } -class EnumConstructor extends ConstructorDeclaration { - private ClassLikeDeclaration enum; - private Identifier id; - - EnumConstructor() { any(TypeInferencePlugin p).isEnumConstructor(enum, this, id) } - - ClassLikeDeclaration getEnum() { result = enum } - - Identifier getNameNode() { result = id } -} - -class EnumField extends VariableDeclaration { - private ClassLikeDeclaration enum; - - EnumField() { any(TypeInferencePlugin p).isEnumField(enum, this) } - - ClassLikeDeclaration getEnum() { result = enum } -} - Type inferType(AstNode n, TypePath path) { result = any(TypeInferencePlugin p).inferType(n, path) } Callable getFunctionInvoke(Type t) { result = any(TypeInferencePlugin p).getFunctionInvoke(t) } diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferencePluginSwift.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferencePluginSwift.qll index 2ea9ccd4afdc..aac017efed39 100644 --- a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferencePluginSwift.qll +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferencePluginSwift.qll @@ -94,31 +94,6 @@ TypeParameter getTupleTypeParameter(int arity, int i) { result = any(TupleType t | t.getArity() = arity).getPositionalTypeParameter(i) } -private class Enum extends ClassLikeDeclaration { - Enum() { this.getAModifier().getValue() = "enum" } -} - -private class EnumConstructor extends EnumCaseConstructor { - private Enum e; - - EnumConstructor() { this = e.getAMember().(EnumCaseClass).getConstructor() } - - Identifier getNameNode() { result = this.getEnumCaseClass().getNameNode() } - - Enum getEnum() { result = e } -} - -private class EnumField extends VariableDeclaration { - private Enum e; - - EnumField() { - this = e.getAMember() and - this.getAModifier().getValue() = "enum_case" - } - - Enum getEnum() { result = e } -} - private predicate inferTypeAlias = inferType/2; private class SwiftTypeInferencePlugin extends Plugin::TypeInferencePlugin { @@ -169,20 +144,6 @@ private class SwiftTypeInferencePlugin extends Plugin::TypeInferencePlugin { field = tuple.(TupleType).getField(name) } - override predicate isEnumConstructor( - ClassLikeDeclaration enum, ConstructorDeclaration case, Identifier i - ) { - case = - any(EnumConstructor ec | - enum = ec.getEnum() and - i = ec.getNameNode() - ) - } - - override predicate isEnumField(ClassLikeDeclaration enum, VariableDeclaration field) { - enum = field.(EnumField).getEnum() - } - override Type inferType(AstNode n, TypePath path) { // todo: approximation for now n instanceof BinaryExpr and diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll index aa48459feeb0..53e2256aa90b 100644 --- a/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll @@ -9,6 +9,21 @@ final class TypeMention = TypeMentionImpl; /** An AST node that mentions a type. */ abstract private class TypeMentionImpl extends AstNode { + /** + * Gets the type mentioned at the root of this type mention. + * + * This is the same as `this.getTypeAt(TypePath::nil())`, but does not depend + * on the full `getTypeAt` relation. + */ + abstract Type getType(); + + /** + * Gets the class-like declaration mentioned by this type mention, if any. + */ + ClassLikeDeclaration getClassLikeDeclaration() { + result = this.getType().(ClassLikeDeclarationType).getClassLikeDeclaration() + } + /** * Gets the type mentioned at `path`. */ @@ -16,29 +31,160 @@ abstract private class TypeMentionImpl extends AstNode { abstract Type getTypeAt(TypePath path); /** - * Gets the type mentioned at the root of this type mention. + * Gets an explicit qualifier that may refer to the parent type of this nested + * type, if any. + */ + abstract TypeMention getAParentQualifierCand(); + + /** + * Same as `exists(this.getAParentQualifierCand())`, but avoids non-monotonicity. */ - final Type getType() { result = this.getTypeAt(TypePath::nil()) } + abstract predicate hasParentQualifierCand(); + + pragma[nomagic] + private predicate isValidParentType0(ClassLikeDeclaration cls) { + this.hasParentQualifierCand() and + cls = + this.getType() + .(ClassLikeDeclarationType) + .getClassLikeDeclaration() + .getEnclosingClassResolved() + or + this.isValidParentType0(cls.getABaseClass()) + } + + /** + * Holds if `qualifier` mentions a type that is a (sub type of) the parent type + * of this nested type. + */ + bindingset[this, qualifier] + pragma[inline_late] + predicate isValidParentType(TypeMention qualifier) { + this.isValidParentType0(qualifier.getClassLikeDeclaration()) + } + + /** + * Gets the qualifier that corresponds to the parent type of this nested type, + * if any. + */ + final TypeMention getParentQualifier() { + result = this.getAParentQualifierCand() and + this.isValidParentType(result) + } + + /** + * Same as `exists(this.getParentQualifier())`, but avoids non-monotonicity. + */ + abstract predicate hasParentQualifier(); } final class ExprTypeMention = ExprTypeMentionImpl; abstract private class ExprTypeMentionImpl extends TypeMentionImpl, Expr { - ExprTypeMentionImpl() { isInTypeContext(this) and not this instanceof GenericTypeExpr } + ExprTypeMentionImpl() { + isInTypeContext(this) and + not this instanceof GenericTypeExpr and + not this = any(MemberAccessExpr mae).getMemberNameNode() + } pragma[nomagic] abstract TypePath getTypeArgumentPath(int i); + + abstract TypeMention getAlias(); + + final override TypeMention getAParentQualifierCand() { + exists(MemberAccessExpr mae | result = mae.getBase() | + mae = this and + ( + not this.getAlias().hasParentQualifierCand() + or + exists(TypeMention cand | + cand = this.getAlias().getAParentQualifierCand() and + not cand.hasParentQualifierCand() and + not this.isValidParentType(cand) + ) + ) + or + exists(TypeMention mid, TypeMention tm | + mid = this.getAParentQualifierCand() and + not this.isValidParentType(mid) and + tm = [mid, mid.(ExprTypeMention).getAlias()] and + mae = [tm, tm.(GenericTypeExpr).getBase().(TypeMention)] + ) + ) + } + + final override predicate hasParentQualifierCand() { + this.getAlias().hasParentQualifierCand() + or + this instanceof MemberAccessExpr + } + + final override predicate hasParentQualifier() { + this.getAlias().hasParentQualifier() + or + this.isValidParentType(this.getAParentQualifierCand()) + } + + abstract Type getTypeAtImpl(TypePath path); + + final override Type getTypeAt(TypePath path) { + // recursion guard to check that `getType` does not recursively depend on `getTypeAt` + (exists(this.getType()) implies any()) and + result = this.getTypeAtImpl(path) + or + // A mention of a nested type with an explicit qualifier + exists(TypeMention qualifier, ClassLikeDeclaration cls, TypePath suffix | + qualifier = this.getParentQualifier() and + cls = this.getClassLikeDeclaration() and + path = TypePath::cons(TParentTypeParameterType(cls), suffix) and + result = qualifier.getTypeAt(suffix) + ) + or + // A mention of a nested type without an explicit qualifier implicitly mentions + // the parent type (including at the identifer that introduces the type) + // + // ```swift + // class Outer { + // class Inner { + // let y: Inner // short-hand for `Outer.Inner` + // } + // } + // ``` + exists( + ClassLikeDeclaration encl, ClassLikeDeclaration parent, ParentTypeParameterType tp, + TypePath suffix + | + encl = this.getImplicitEnclosingCand(tp) and + parent = tp.getParent() and + path = TypePath::cons(tp, suffix) and + result = encl.getNameNode().(TypeMention).getTypeAt(suffix) + | + encl = parent + or + not parent = this.getImplicitEnclosingCand(tp) and + encl.getABaseClass+() = parent + ) + } + + pragma[nomagic] + private ClassLikeDeclaration getImplicitEnclosingCand(ParentTypeParameterType tp) { + not this.hasParentQualifier() and + not this.getParent*() = any(TypeAliasDeclaration alias).getType() and + tp = TParentTypeParameterType(this.getClassLikeDeclaration()) and + result = this.getEnclosingClassResolved+() + } } /** * A type mention that resolves via an alias (aliases are expanded). */ -private class AliasExprTypeMention extends ExprTypeMentionImpl { +class AliasExprTypeMention extends ExprTypeMentionImpl { private TypeAliasDeclaration alias; AliasExprTypeMention() { alias.getNameNode() = getTypeFromRef(this) } - private TypeParameterType getAliasTypeParameter(int i) { + TypeParameterType getAliasTypeParameter(int i) { result.getTypeParameter() = alias.getTypeParameter(i) } @@ -46,10 +192,34 @@ private class AliasExprTypeMention extends ExprTypeMentionImpl { exists(TypeParameterType tp | tp = this.getAliasTypeParameter(i) and tp = alias.getType().(TypeMention).getTypeAt(result) + or + // `typealias Alias = Generic`, where `Generic` has positional type parameters + not exists(this.getAliasTypeParameter(_)) and + not alias.getType() instanceof GenericTypeExpr and + exists(Type root | + root = this.getType() and + tp = root.getPositionalTypeParameter(i) and + result = TypePath::singleton(tp) + ) ) } - override Type getTypeAt(TypePath path) { + /** + * Holds if this alias is of the form `typealias Alias = Ti`. + */ + pragma[nomagic] + predicate isTypeParameterAlias(int i) { + exists(TypeParameterType tp | + tp = this.getAliasTypeParameter(i) and + tp = alias.getType().(TypeMention).getType() + ) + } + + override TypeMention getAlias() { result = alias.getType() } + + override Type getType() { result = alias.getType().(TypeMention).getType() } + + override Type getTypeAtImpl(TypePath path) { result = alias.getType().(TypeMention).getTypeAt(path) and not result = this.getAliasTypeParameter(_) } @@ -63,18 +233,11 @@ private class NonAliasExprTypeMention extends ExprTypeMentionImpl { private Type getRootType0() { exists(Identifier i | i = getTypeFromRef(this) | - // for now, we resolve enum cases to their enclosing class - exists(EnumCaseClass c | - i = c.getNameNode() and - result.getNameNode() = c.getEnclosingClass().getNameNode() - ) - or - not i = any(EnumCaseClass c).getNameNode() and result.getNameNode() = i and ( not result instanceof AssociatedTypeParameterType or - result = TAssociatedTypeParameterType(this.getEnclosingClass(), _, _) + result = TAssociatedTypeParameterType(this.getEnclosingClass().resolve(), _, _) ) ) or @@ -83,7 +246,7 @@ private class NonAliasExprTypeMention extends ExprTypeMentionImpl { result.(Plugin::TupleType).getArity() = this.(TupleExpr).getNumberOfElements() } - Type getRootType() { + override Type getType() { result = this.getRootType0() or not exists(this.getRootType0()) and @@ -91,11 +254,11 @@ private class NonAliasExprTypeMention extends ExprTypeMentionImpl { } override TypePath getTypeArgumentPath(int i) { - result = TypePath::singleton(this.getRootType().getPositionalTypeParameter(i)) + result = TypePath::singleton(this.getType().getPositionalTypeParameter(i)) } - override Type getTypeAt(TypePath path) { - result = this.getRootType() and + override Type getTypeAtImpl(TypePath path) { + result = this.getType() and path.isEmpty() or exists( @@ -148,13 +311,42 @@ private class NonAliasExprTypeMention extends ExprTypeMentionImpl { path = TypePath::cons(tt.getPositionalTypeParameter(i), suffix) ) ) + or + // A mention of a generic type without explicit type arguments and within + // the scope of the type, implicitly mentions all type parameters (including + // at the identifer that introduces the type): + // + // ```swift + // class Generic { + // let x: Generic // short-hand for `Generic + // } + // ``` + not this = any(GenericTypeExpr g).getBase() and + exists(ClassLikeDeclarationType rootType | + rootType = this.getType() and + (isInTypeContextWithImplicitTypeArgs(this) or this = rootType.getNameNode()) and + rootType.getClassLikeDeclaration() = this.getEnclosingClassResolved+() and + result = rootType.getATypeParameter() and + path = TypePath::singleton(result) and + not result instanceof ParentTypeParameterType + ) } + + override TypeMention getAlias() { none() } } private class GenericTypeExprTypeMention extends TypeMentionImpl, GenericTypeExpr { - private ExprTypeMention base; + private TypeMention base; - GenericTypeExprTypeMention() { base = this.getBase() } + GenericTypeExprTypeMention() { + base = this.getBase() and + base.getType() = any(Type t | not t = base.(AliasExprTypeMention).getAliasTypeParameter(_)) + or + exists(int i | + this.getBase().(AliasExprTypeMention).isTypeParameterAlias(i) and + base = this.getTypeArgument(i) + ) + } pragma[nomagic] private Type getTypeArgumentAt(int i, TypePath path) { @@ -164,31 +356,21 @@ private class GenericTypeExprTypeMention extends TypeMentionImpl, GenericTypeExp override Type getTypeAt(TypePath path) { result = base.getTypeAt(path) or + base = this.getBase() and exists(int i, TypePath prefix, TypePath suffix | - prefix = base.getTypeArgumentPath(i) and + prefix = base.(ExprTypeMention).getTypeArgumentPath(i) and result = this.getTypeArgumentAt(i, suffix) and path = prefix.append(suffix) ) } -} -/** A class declaration mentions itself. */ -private class ClassLikeDeclarationTypeMention extends TypeMentionImpl, Identifier { - private ClassLikeDeclaration c; + override Type getType() { result = base.getType() } - ClassLikeDeclarationTypeMention() { this = c.getNameNode() } + override TypeMention getAParentQualifierCand() { result = base.getAParentQualifierCand() } - ClassLikeDeclarationType getRootType() { c = result.getClassLikeDeclaration() } + override predicate hasParentQualifierCand() { base.hasParentQualifierCand() } - ClassLikeDeclaration getClassLikeDeclaration() { result = c } - - override Type getTypeAt(TypePath path) { - result = this.getRootType() and - path.isEmpty() - or - result = this.getRootType().getATypeParameter() and - path = TypePath::singleton(result) - } + override predicate hasParentQualifier() { base.hasParentQualifier() } } TypeMention getClassLikeDeclarationTypeMention(ClassLikeDeclaration c) { diff --git a/unified/ql/test/library-tests/type-inference/classes.swift b/unified/ql/test/library-tests/type-inference/classes.swift index 018314791416..393c0a274035 100644 --- a/unified/ql/test/library-tests/type-inference/classes.swift +++ b/unified/ql/test/library-tests/type-inference/classes.swift @@ -69,7 +69,7 @@ class Outer { } func testNestedTypes() { - let inner = Outer.Inner(value: 99) // $ type=inner:Inner target=Outer.Inner.init + let inner = Outer.Inner(value: 99) // $ type=inner:Outer.Inner target=Outer.Inner.init let v = inner.getValue() // $ type=v:Int target=Outer.Inner.getValue } diff --git a/unified/ql/test/library-tests/type-inference/generics.swift b/unified/ql/test/library-tests/type-inference/generics.swift index 99269646e864..d69ddbfbab15 100644 --- a/unified/ql/test/library-tests/type-inference/generics.swift +++ b/unified/ql/test/library-tests/type-inference/generics.swift @@ -241,7 +241,7 @@ extension MyClass: MyProtocol2 { typealias MyType = T func baz() -> T { - return value // $ field=MyClass.value $ MISSING: type=value:T + return value // $ field=MyClass.value type=value:T } } diff --git a/unified/ql/test/library-tests/type-inference/nested_types.swift b/unified/ql/test/library-tests/type-inference/nested_types.swift new file mode 100644 index 000000000000..185c29a0eebf --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/nested_types.swift @@ -0,0 +1,250 @@ +class Base { + let baseValue: TBase + + init(baseValue: TBase) { + self.baseValue = baseValue // $ field=Base.baseValue + } + + func getBase() -> TBase { + return self.baseValue // $ field=Base.baseValue + } +} + +class Outer { + class Inner: Base { + let innerValue: TInner + let outerValue: TOuter + + init(innerValue: TInner, outerValue: TOuter) { + self.innerValue = innerValue // $ field=Outer.Inner.innerValue + self.outerValue = outerValue // $ field=Outer.Inner.outerValue + super.init(baseValue: innerValue) // $ target=Base.init + } + + convenience init(innerValue: TInner) { // name=Outer.Inner.init_conv + fatalError("Convenience initializer not implemented") + } + + func getInner() -> TInner { + return self.innerValue // $ field=Outer.Inner.innerValue + } + + func getOuter() -> TOuter { + return self.outerValue // $ field=Outer.Inner.outerValue + } + + func swap() -> Outer.Inner { + return Outer.Inner(innerValue: self.outerValue, outerValue: self.innerValue) // $ field=Outer.Inner.innerValue field=Outer.Inner.outerValue target=Outer.Inner.init $ SPURIOUS: target=Outer.Inner.init_conv + } + + func getSelf1() -> Inner { + return self + } + + func getSelf2() -> Inner { + return self + } + } + + class SubInner: Inner {} + + static func createInner(outerValue: TOuter) -> Inner { + return Inner(innerValue: 0, outerValue: outerValue) // $ target=Outer.Inner.init $ SPURIOUS: target=Outer.Inner.init_conv + } + + typealias InnerAlias = Inner + + typealias IntInner = Inner + + func f(_ x: Outer.IntInner) {} + + typealias Fixed = Outer.Inner + + func f(_ y: Fixed, _ z: Outer.Fixed) { + let outer = z.getOuter() // $ target=Outer.Inner.getOuter type=outer:Int + let inner = z.getInner() // $ target=Outer.Inner.getInner type=inner:String + } + + class Holder { + typealias InnerAlias = Inner + } + + class Holder2 { + typealias InnerAlias = Inner + } + + func f( + z: Outer.Holder.InnerAlias, + y: Outer.Holder2.InnerAlias + ) { + let a = z.getInner() // $ target=Outer.Inner.getInner type=a:Bool + let b = z.getOuter() // $ target=Outer.Inner.getOuter type=b:String + let c = y.getInner() // $ target=Outer.Inner.getInner type=c:Bool + let d = y.getOuter() // $ target=Outer.Inner.getOuter type=d:String + } + + typealias Fixed2 = Identity.IntInner> + + func f(fixed2: Fixed2) { + let a = fixed2.getInner() // $ target=Outer.Inner.getInner type=a:Int + let b = fixed2.getOuter() // $ target=Outer.Inner.getOuter type=b:String + } + + typealias Captured = Outer.Inner + + func f(x: Outer.Captured) { + let outer = x.getOuter() // $ target=Outer.Inner.getOuter $ MISSING: type=outer:String $ SPURIOUS: type=outer:TOuter + let inner = x.getInner() // $ target=Outer.Inner.getInner type=inner:Int + } + + typealias Rebound = Identity>> + + func f2(x: Outer.Rebound) { + let outer = x.getOuter() // $ target=Outer.Inner.getOuter type=outer:String + let inner = x.getInner() // $ target=Outer.Inner.getInner type=inner:Int + } +} + +func extractInner(_ inner: Outer.Inner) -> Tb { + return inner.getInner() // $ target=Outer.Inner.getInner +} + +func extractOuter(_ inner: Outer.Inner) -> Ta { + return inner.getOuter() // $ target=Outer.Inner.getOuter +} + +var inner1 = Outer.Inner(innerValue: 42, outerValue: "") // $ target=Outer.Inner.init $ SPURIOUS: target=Outer.Inner.init_conv +var x1a = inner1.getInner() // $ type=x1a:Int target=Outer.Inner.getInner +var x1b = extractInner(inner1) // $ type=x1b:Int target=extractInner +var y1a = inner1.getOuter() // $ type=y1a:String target=Outer.Inner.getOuter +var y1b = extractOuter(inner1) // $ type=y1b:String target=extractOuter +var b1 = inner1.getBase() // $ type=b1:Int target=Base.getBase + +var inner2 = Outer.Inner(innerValue: 42) // $ target=Outer.Inner.init_conv $ SPURIOUS: target=Outer.Inner.init +var x2a = inner2.getInner() // $ type=x2a:Int target=Outer.Inner.getInner +var x2b = extractInner(inner2) // $ type=x2b:Int target=extractInner +var y2a = inner2.getOuter() // $ type=y2a:String target=Outer.Inner.getOuter +let y2b = extractOuter(inner2) // $ type=y2b:String target=extractOuter +var b2 = inner2.getBase() // $ type=b2:Int target=Base.getBase + +var swapped = inner1.swap() // $ target=Outer.Inner.swap +var x3 = swapped.getInner() // $ type=x3:String target=Outer.Inner.getInner +var y3 = swapped.getOuter() // $ type=y3:Int target=Outer.Inner.getOuter +var b3 = swapped.getBase() // $ type=b3:String target=Base.getBase + +var inner4 = inner1.getSelf1() // $ target=Outer.Inner.getSelf1 +var x4 = inner4.getInner() // $ type=x4:Int target=Outer.Inner.getInner +var y4 = inner4.getOuter() // $ type=y4:String target=Outer.Inner.getOuter +var b4 = inner4.getBase() // $ type=b4:Int target=Base.getBase + +var inner5 = inner1.getSelf2() // $ target=Outer.Inner.getSelf2 +var x5 = inner5.getInner() // $ type=x5:Int target=Outer.Inner.getInner +var y5 = inner5.getOuter() // $ type=y5:String target=Outer.Inner.getOuter +var b5 = inner5.getBase() // $ type=b5:Int target=Base.getBase + +var inner6 = Outer.createInner(outerValue: false) // $ target=Outer.createInner +var x6 = inner6.getInner() // $ type=x6:Int target=Outer.Inner.getInner +var y6 = inner6.getOuter() // $ type=y6:Bool target=Outer.Inner.getOuter +var b6 = inner6.getBase() // $ type=b6:Int target=Base.getBase + +var inner7 = Outer.InnerAlias(innerValue: 0, outerValue: false) // $ target=Outer.Inner.init $ SPURIOUS: target=Outer.Inner.init_conv +var x11 = inner7.getInner() // $ type=x11:Int target=Outer.Inner.getInner +var y11 = inner7.getOuter() // $ type=y11:Bool target=Outer.Inner.getOuter + +extension Outer.Inner { + class InnerMost { + var x: TOuter + var y: TInner + + init(x: TOuter, y: TInner) { + self.x = x // $ field=Outer.Inner.InnerMost.x + self.y = y // $ field=Outer.Inner.InnerMost.y + } + + func getOuter() -> TOuter { + return self.x // $ field=Outer.Inner.InnerMost.x + } + + func getInner() -> TInner { + return self.y // $ field=Outer.Inner.InnerMost.y + } + } +} + +var innerMost = Outer.Inner.InnerMost(x: "", y: 42) // $ target=Outer.Inner.InnerMost.init +var x7 = innerMost.getInner() // $ target=Outer.Inner.InnerMost.getInner $ MISSING: type=x7:Int (https://github.com/github/codeql-team/issues/4968) +var y7 = innerMost.getOuter() // $ target=Outer.Inner.InnerMost.getOuter $ MISSING: type=y7:String (https://github.com/github/codeql-team/issues/4968) + +class SubOuter: Outer<[TSubOuter]> { + func f(_ x: Inner) -> [TSubOuter] { + let res = x.getOuter() // $ target=Outer.Inner.getOuter $ MISSING: type=res@Array:TSubOuter -- this is an instance of variance sub typing + return res + } +} + +var subOuter = SubOuter.createInner(outerValue: [42]) // $ target=Outer.createInner +var x8 = subOuter.getInner() // $ type=x8:Int target=Outer.Inner.getInner +var y8 = subOuter.getOuter() // $ type=y8@Array:Int target=Outer.Inner.getOuter + +var subInner = Outer.SubInner(innerValue: true, outerValue: 0) // $ target=Outer.Inner.init $ SPURIOUS: target=Outer.Inner.init_conv +var x9 = subInner.getInner() // $ type=x9:Bool target=Outer.Inner.getInner +var y9 = subInner.getOuter() // $ type=y9:Int target=Outer.Inner.getOuter + +let subInner2: Outer.SubInner = Outer.SubInner(innerValue: 1) // $ target=Outer.Inner.init_conv $ SPURIOUS: target=Outer.Inner.init +let x12 = subInner2.getInner() // $ target=Outer.Inner.getInner type=x12:Int +let y12 = subInner2.getOuter() // $ target=Outer.Inner.getOuter type=y12:String + +class SubInnerOutside: Outer.Inner {} + +var subInnerOutside = SubInnerOutside(innerValue: true, outerValue: false) // $ target=Outer.Inner.init $ SPURIOUS: target=Outer.Inner.init_conv +var x10 = subInnerOutside.getInner() // $ type=x10:Bool target=Outer.Inner.getInner +var y10 = subInnerOutside.getOuter() // $ type=y10:Bool target=Outer.Inner.getOuter + +class Node { + class Leaf: Node { + let x: Leaf = Leaf() // $ type=x@Node.Leaf<(parent:Leaf)>:Node target=Node.init + } +} + +class Holder { typealias Fixed = Outer.Inner } + +let holder = Holder.Fixed(innerValue: "") // $ target=Outer.Inner.init_conv $ SPURIOUS: target=Outer.Inner.init +let x13 = holder.getInner() // $ target=Outer.Inner.getInner type=x13:String +let y13 = holder.getOuter() // $ target=Outer.Inner.getOuter type=y13:Int + +class Box { + typealias IntBox = Box + + typealias Same = Box + + func f( + _ x: IntBox, + _ y: Box.Same // $ MISSING: type=y@Box:Int $ SPURIOUS: type=y@Box:T + ) {} +} + +typealias Nested = Outer.Inner + +func f(_ x: Nested) {} + +typealias Identity = T + +func f(_ x: Identity) {} + +typealias H = Outer.Holder + +typealias H2 = Outer.Holder2 + +func f(_ x: H.InnerAlias, _ y: H2.InnerAlias) { + let a = x.getInner() // $ type=a:Bool target=Outer.Inner.getInner + let b = x.getOuter() // $ type=b:String target=Outer.Inner.getOuter + let c = y.getInner() // $ type=c:Bool target=Outer.Inner.getInner + let d = y.getOuter() // $ type=d:String target=Outer.Inner.getOuter +} + +typealias G = Outer.Holder + +func f(_ x: G.InnerAlias) { + let outer = x.getOuter() // $ target=Outer.Inner.getOuter $ MISSING: type=outer:String + let inner = x.getInner() // $ target=Outer.Inner.getInner type=inner:Bool +} diff --git a/unified/ql/test/library-tests/type-inference/type-inference.expected b/unified/ql/test/library-tests/type-inference/type-inference.expected index 3ce1618a9164..e8041ff05497 100644 --- a/unified/ql/test/library-tests/type-inference/type-inference.expected +++ b/unified/ql/test/library-tests/type-inference/type-inference.expected @@ -40,9 +40,11 @@ inferCertainType | classes.swift:51:33:51:38 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | | classes.swift:59:9:59:13 | value | | {EXTERNAL LOCATION} | Int | | classes.swift:61:10:61:14 | value | | {EXTERNAL LOCATION} | Int | -| classes.swift:62:7:62:10 | self | | classes.swift:58:3:68:3 | Inner | +| classes.swift:62:7:62:10 | self | | classes.swift:58:3:68:3 | Outer.Inner | +| classes.swift:62:7:62:10 | self | (parent:Inner) | classes.swift:57:1:69:1 | Outer | | classes.swift:62:20:62:24 | value | | {EXTERNAL LOCATION} | Int | -| classes.swift:66:14:66:17 | self | | classes.swift:58:3:68:3 | Inner | +| classes.swift:66:14:66:17 | self | | classes.swift:58:3:68:3 | Outer.Inner | +| classes.swift:66:14:66:17 | self | (parent:Inner) | classes.swift:57:1:69:1 | Outer | | classes.swift:79:7:79:11 | value | | {EXTERNAL LOCATION} | Int | | classes.swift:81:14:81:14 | v | | {EXTERNAL LOCATION} | Int | | classes.swift:82:5:82:9 | value | | {EXTERNAL LOCATION} | Int | @@ -273,6 +275,7 @@ inferCertainType | generics.swift:205:22:205:24 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | | generics.swift:207:15:207:17 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | | generics.swift:228:12:228:15 | self | | generics.swift:220:1:224:1 | MyProtocol2 | +| generics.swift:228:12:228:15 | self | MyType | generics.swift:221:3:221:23 | MyType | | generics.swift:233:7:233:11 | value | | generics.swift:232:15:232:15 | T | | generics.swift:235:10:235:14 | value | | generics.swift:232:15:232:15 | T | | generics.swift:236:5:236:8 | self | | generics.swift:232:1:238:1 | MyClass | @@ -366,6 +369,233 @@ inferCertainType | key_paths.swift:204:7:204:9 | arr | | {EXTERNAL LOCATION} | Array | | key_paths.swift:204:13:204:24 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | | key_paths.swift:205:15:205:17 | arr | | {EXTERNAL LOCATION} | Array | +| nested_types.swift:2:9:2:17 | baseValue | | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:4:10:4:18 | baseValue | | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:5:9:5:12 | self | | nested_types.swift:1:1:11:1 | Base | +| nested_types.swift:5:9:5:12 | self | TBase | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:5:26:5:34 | baseValue | | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:9:16:9:19 | self | | nested_types.swift:1:1:11:1 | Base | +| nested_types.swift:9:16:9:19 | self | TBase | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:15:13:15:22 | innerValue | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:16:13:16:22 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:18:14:18:23 | innerValue | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:18:34:18:43 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:19:13:19:16 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:19:13:19:16 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:19:13:19:16 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:19:13:19:16 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:19:31:19:40 | innerValue | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:20:13:20:16 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:20:13:20:16 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:20:13:20:16 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:20:13:20:16 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:20:31:20:40 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:21:35:21:44 | innerValue | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:24:26:24:35 | innerValue | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:29:20:29:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:29:20:29:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:29:20:29:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:29:20:29:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:33:20:33:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:33:20:33:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:33:20:33:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:33:20:33:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:37:52:37:55 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:37:52:37:55 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:37:52:37:55 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:37:52:37:55 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:37:81:37:84 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:37:81:37:84 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:37:81:37:84 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:37:81:37:84 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:41:20:41:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:41:20:41:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:41:20:41:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:41:20:41:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:45:20:45:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:45:20:45:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:45:20:45:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:45:20:45:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:51:29:51:38 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:52:49:52:58 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:59:14:59:14 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:59:14:59:14 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:59:14:59:14 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:59:14:59:14 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:63:14:63:14 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:63:14:63:14 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:63:14:63:14 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:63:14:63:14 | y | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:63:26:63:26 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:63:26:63:26 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:63:26:63:26 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:63:26:63:26 | z | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:64:21:64:21 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:64:21:64:21 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:64:21:64:21 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:64:21:64:21 | z | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:65:21:65:21 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:65:21:65:21 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:65:21:65:21 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:65:21:65:21 | z | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:77:9:77:9 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:77:9:77:9 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:77:9:77:9 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:77:9:77:9 | z | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:78:9:78:9 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:78:9:78:9 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:78:9:78:9 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:78:9:78:9 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:80:17:80:17 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:80:17:80:17 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:80:17:80:17 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:80:17:80:17 | z | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:81:17:81:17 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:81:17:81:17 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:81:17:81:17 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:81:17:81:17 | z | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:82:17:82:17 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:82:17:82:17 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:82:17:82:17 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:82:17:82:17 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:83:17:83:17 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:83:17:83:17 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:83:17:83:17 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:83:17:83:17 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:88:12:88:17 | fixed2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:88:12:88:17 | fixed2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:88:12:88:17 | fixed2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:88:12:88:17 | fixed2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:89:17:89:22 | fixed2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:89:17:89:22 | fixed2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:89:17:89:22 | fixed2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:89:17:89:22 | fixed2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:90:17:90:22 | fixed2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:90:17:90:22 | fixed2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:90:17:90:22 | fixed2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:90:17:90:22 | fixed2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:95:12:95:12 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:95:12:95:12 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:95:12:95:12 | x | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:95:12:95:12 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:96:21:96:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:96:21:96:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:96:21:96:21 | x | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:96:21:96:21 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:97:21:97:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:97:21:97:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:97:21:97:21 | x | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:97:21:97:21 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:102:13:102:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:102:13:102:13 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:102:13:102:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:102:13:102:13 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:103:21:103:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:103:21:103:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:103:21:103:21 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:103:21:103:21 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:104:21:104:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:104:21:104:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:104:21:104:21 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:104:21:104:21 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:108:29:108:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:108:29:108:33 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:108:29:108:33 | inner | (parent:Inner).TOuter | nested_types.swift:108:19:108:20 | Ta | +| nested_types.swift:108:29:108:33 | inner | TInner | nested_types.swift:108:23:108:24 | Tb | +| nested_types.swift:109:12:109:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:109:12:109:16 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:109:12:109:16 | inner | (parent:Inner).TOuter | nested_types.swift:108:19:108:20 | Ta | +| nested_types.swift:109:12:109:16 | inner | TInner | nested_types.swift:108:23:108:24 | Tb | +| nested_types.swift:112:29:112:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:112:29:112:33 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:112:29:112:33 | inner | (parent:Inner).TOuter | nested_types.swift:112:19:112:20 | Ta | +| nested_types.swift:112:29:112:33 | inner | TInner | nested_types.swift:112:23:112:24 | Tb | +| nested_types.swift:113:12:113:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:113:12:113:16 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:113:12:113:16 | inner | (parent:Inner).TOuter | nested_types.swift:112:19:112:20 | Ta | +| nested_types.swift:113:12:113:16 | inner | TInner | nested_types.swift:112:23:112:24 | Tb | +| nested_types.swift:160:13:160:16 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | +| nested_types.swift:160:13:160:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:160:13:160:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:160:13:160:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:160:13:160:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:161:13:161:16 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | +| nested_types.swift:161:13:161:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:161:13:161:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:161:13:161:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:161:13:161:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:165:20:165:23 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | +| nested_types.swift:165:20:165:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:165:20:165:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:165:20:165:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:165:20:165:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:169:20:169:23 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | +| nested_types.swift:169:20:169:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:169:20:169:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:169:20:169:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:169:20:169:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:179:14:179:14 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:179:14:179:14 | x | (parent:Inner) | nested_types.swift:178:1:183:1 | SubOuter | +| nested_types.swift:179:14:179:14 | x | (parent:Inner).TSubOuter | nested_types.swift:178:16:178:24 | TSubOuter | +| nested_types.swift:179:14:179:14 | x | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:180:19:180:19 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:180:19:180:19 | x | (parent:Inner) | nested_types.swift:178:1:183:1 | SubOuter | +| nested_types.swift:180:19:180:19 | x | (parent:Inner).TSubOuter | nested_types.swift:178:16:178:24 | TSubOuter | +| nested_types.swift:180:19:180:19 | x | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:185:54:185:57 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| nested_types.swift:193:5:193:13 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:193:5:193:13 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:193:5:193:13 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:193:5:193:13 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:194:11:194:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:194:11:194:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:194:11:194:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:194:11:194:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:195:11:195:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:195:11:195:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:195:11:195:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:195:11:195:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:205:13:205:13 | x | | nested_types.swift:204:5:206:5 | Node.Leaf | +| nested_types.swift:205:13:205:13 | x | (parent:Leaf) | nested_types.swift:203:1:207:1 | Node | +| nested_types.swift:221:11:221:11 | x | | nested_types.swift:215:1:224:1 | Box | +| nested_types.swift:221:11:221:11 | x | T | {EXTERNAL LOCATION} | Int | +| nested_types.swift:222:11:222:11 | y | | nested_types.swift:215:1:224:1 | Box | +| nested_types.swift:222:11:222:11 | y | T | nested_types.swift:215:11:215:11 | T | +| nested_types.swift:228:10:228:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:228:10:228:10 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:228:10:228:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:228:10:228:10 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:232:10:232:10 | x | | {EXTERNAL LOCATION} | String | +| nested_types.swift:238:10:238:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:238:10:238:10 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:238:10:238:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:238:10:238:10 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:238:35:238:35 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:238:35:238:35 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:238:35:238:35 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:238:35:238:35 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:239:13:239:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:239:13:239:13 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:239:13:239:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:239:13:239:13 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:240:13:240:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:240:13:240:13 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:240:13:240:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:240:13:240:13 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:241:13:241:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:241:13:241:13 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:241:13:241:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:241:13:241:13 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:242:13:242:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:242:13:242:13 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:242:13:242:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:242:13:242:13 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:247:10:247:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:247:10:247:10 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:248:17:248:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:248:17:248:17 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:249:17:249:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:249:17:249:17 | x | TInner | {EXTERNAL LOCATION} | Bool | | overload_resolution.swift:4:17:4:17 | x | | {EXTERNAL LOCATION} | Int | | overload_resolution.swift:8:17:8:17 | x | | {EXTERNAL LOCATION} | Double | | overload_resolution.swift:12:17:12:17 | x | | {EXTERNAL LOCATION} | String | @@ -685,6 +915,34 @@ inferCertainType | type_constraints.swift:256:14:256:18 | upper | | type_constraints.swift:254:12:254:24 | T | | type_constraints.swift:256:29:256:33 | upper | | type_constraints.swift:254:12:254:24 | T | | type_constraints.swift:257:10:257:14 | value | | type_constraints.swift:254:12:254:24 | T | +| variance.swift:7:18:7:18 | f | | {EXTERNAL LOCATION} | Function | +| variance.swift:7:18:7:18 | f | Args | {EXTERNAL LOCATION} | Tuple1 | +| variance.swift:7:18:7:18 | f | Args.T0 | variance.swift:5:1:5:21 | B | +| variance.swift:7:18:7:18 | f | Args.T0.Tb | variance.swift:7:10:7:11 | T1 | +| variance.swift:7:18:7:18 | f | Return | variance.swift:3:1:3:14 | A | +| variance.swift:7:18:7:18 | f | Return.Ta | variance.swift:7:14:7:15 | T2 | +| variance.swift:11:5:11:7 | lam | | {EXTERNAL LOCATION} | Function | +| variance.swift:11:5:11:7 | lam | Args | {EXTERNAL LOCATION} | Tuple1 | +| variance.swift:11:5:11:7 | lam | Args.T0 | variance.swift:3:1:3:14 | A | +| variance.swift:11:5:11:7 | lam | Args.T0.Ta | {EXTERNAL LOCATION} | Int | +| variance.swift:11:5:11:7 | lam | Return | variance.swift:5:1:5:21 | B | +| variance.swift:11:5:11:7 | lam | Return.Tb | {EXTERNAL LOCATION} | String | +| variance.swift:11:11:11:53 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| variance.swift:11:11:11:53 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| variance.swift:11:11:11:53 | FunctionExpr | Args.T0 | variance.swift:3:1:3:14 | A | +| variance.swift:11:11:11:53 | FunctionExpr | Args.T0.Ta | {EXTERNAL LOCATION} | Int | +| variance.swift:11:11:11:53 | FunctionExpr | Return | variance.swift:5:1:5:21 | B | +| variance.swift:11:11:11:53 | FunctionExpr | Return.Tb | {EXTERNAL LOCATION} | String | +| variance.swift:11:14:11:14 | a | | variance.swift:3:1:3:14 | A | +| variance.swift:11:14:11:14 | a | Ta | {EXTERNAL LOCATION} | Int | +| variance.swift:13:16:13:18 | lam | | {EXTERNAL LOCATION} | Function | +| variance.swift:13:16:13:18 | lam | Args | {EXTERNAL LOCATION} | Tuple1 | +| variance.swift:13:16:13:18 | lam | Args.T0 | variance.swift:3:1:3:14 | A | +| variance.swift:13:16:13:18 | lam | Args.T0.Ta | {EXTERNAL LOCATION} | Int | +| variance.swift:13:16:13:18 | lam | Return | variance.swift:5:1:5:21 | B | +| variance.swift:13:16:13:18 | lam | Return.Tb | {EXTERNAL LOCATION} | String | +| variance.swift:18:7:18:7 | x | | variance.swift:3:1:3:14 | A | +| variance.swift:18:7:18:7 | x | Ta | {EXTERNAL LOCATION} | Int | inferType | basics.swift:1:5:1:16 | topLevelDecl | | {EXTERNAL LOCATION} | Int | | basics.swift:1:25:1:25 | 0 | | {EXTERNAL LOCATION} | Int | @@ -834,19 +1092,25 @@ inferType | classes.swift:59:9:59:13 | value | | {EXTERNAL LOCATION} | Int | | classes.swift:61:10:61:14 | value | | {EXTERNAL LOCATION} | Int | | classes.swift:61:22:63:5 | Block | | {EXTERNAL LOCATION} | Int | -| classes.swift:62:7:62:10 | self | | classes.swift:58:3:68:3 | Inner | +| classes.swift:62:7:62:10 | self | | classes.swift:58:3:68:3 | Outer.Inner | +| classes.swift:62:7:62:10 | self | (parent:Inner) | classes.swift:57:1:69:1 | Outer | | classes.swift:62:7:62:16 | ... .value | | {EXTERNAL LOCATION} | Int | | classes.swift:62:7:62:24 | ... = ... | | {EXTERNAL LOCATION} | Int | | classes.swift:62:20:62:24 | value | | {EXTERNAL LOCATION} | Int | | classes.swift:65:28:67:5 | Block | | {EXTERNAL LOCATION} | Int | -| classes.swift:66:14:66:17 | self | | classes.swift:58:3:68:3 | Inner | +| classes.swift:66:14:66:17 | self | | classes.swift:58:3:68:3 | Outer.Inner | +| classes.swift:66:14:66:17 | self | (parent:Inner) | classes.swift:57:1:69:1 | Outer | | classes.swift:66:14:66:23 | ... .value | | {EXTERNAL LOCATION} | Int | -| classes.swift:72:7:72:11 | inner | | classes.swift:58:3:68:3 | Inner | -| classes.swift:72:15:72:25 | ... .Inner | | classes.swift:58:3:68:3 | Inner | -| classes.swift:72:15:72:36 | ... .Inner(...) | | classes.swift:58:3:68:3 | Inner | +| classes.swift:72:7:72:11 | inner | | classes.swift:58:3:68:3 | Outer.Inner | +| classes.swift:72:7:72:11 | inner | (parent:Inner) | classes.swift:57:1:69:1 | Outer | +| classes.swift:72:15:72:25 | ... .Inner | | classes.swift:58:3:68:3 | Outer.Inner | +| classes.swift:72:15:72:25 | ... .Inner | (parent:Inner) | classes.swift:57:1:69:1 | Outer | +| classes.swift:72:15:72:36 | ... .Inner(...) | | classes.swift:58:3:68:3 | Outer.Inner | +| classes.swift:72:15:72:36 | ... .Inner(...) | (parent:Inner) | classes.swift:57:1:69:1 | Outer | | classes.swift:72:34:72:35 | 99 | | {EXTERNAL LOCATION} | Int | | classes.swift:73:7:73:7 | v | | {EXTERNAL LOCATION} | Int | -| classes.swift:73:11:73:15 | inner | | classes.swift:58:3:68:3 | Inner | +| classes.swift:73:11:73:15 | inner | | classes.swift:58:3:68:3 | Outer.Inner | +| classes.swift:73:11:73:15 | inner | (parent:Inner) | classes.swift:57:1:69:1 | Outer | | classes.swift:73:11:73:26 | ... .getValue(...) | | {EXTERNAL LOCATION} | Int | | classes.swift:79:7:79:11 | value | | {EXTERNAL LOCATION} | Int | | classes.swift:79:20:79:20 | 0 | | {EXTERNAL LOCATION} | Int | @@ -1259,15 +1523,17 @@ inferType | constructors.swift:77:15:77:24 | FunctionExpr | | {EXTERNAL LOCATION} | Function | | constructors.swift:77:15:77:24 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | | constructors.swift:83:13:83:14 | e1 | | constructors.swift:79:1:85:1 | E1 | -| constructors.swift:83:18:83:18 | a | | constructors.swift:79:1:85:1 | E1 | +| constructors.swift:83:18:83:18 | a | | constructors.swift:80:10:80:15 | E1.a | +| constructors.swift:83:18:83:18 | a | (parent:a) | constructors.swift:79:1:85:1 | E1 | | constructors.swift:83:18:83:21 | a(...) | | constructors.swift:79:1:85:1 | E1 | | constructors.swift:83:20:83:20 | 0 | | {EXTERNAL LOCATION} | Int | | constructors.swift:89:5:89:6 | e2 | | constructors.swift:87:1:87:27 | E2 | | constructors.swift:89:5:89:6 | e2 | A | {EXTERNAL LOCATION} | Int | | constructors.swift:89:5:89:6 | e2 | B | {EXTERNAL LOCATION} | String | -| constructors.swift:89:25:89:28 | ... .a | | constructors.swift:87:1:87:27 | E2 | -| constructors.swift:89:25:89:28 | ... .a | A | {EXTERNAL LOCATION} | Int | -| constructors.swift:89:25:89:28 | ... .a | B | {EXTERNAL LOCATION} | String | +| constructors.swift:89:25:89:28 | ... .a | | constructors.swift:87:22:87:25 | E2.a | +| constructors.swift:89:25:89:28 | ... .a | (parent:a) | constructors.swift:87:1:87:27 | E2 | +| constructors.swift:89:25:89:28 | ... .a | (parent:a).A | {EXTERNAL LOCATION} | Int | +| constructors.swift:89:25:89:28 | ... .a | (parent:a).B | {EXTERNAL LOCATION} | String | | constructors.swift:89:25:89:31 | ... .a(...) | | constructors.swift:87:1:87:27 | E2 | | constructors.swift:89:25:89:31 | ... .a(...) | A | {EXTERNAL LOCATION} | Int | | constructors.swift:89:25:89:31 | ... .a(...) | B | {EXTERNAL LOCATION} | String | @@ -1402,8 +1668,9 @@ inferType | generics.swift:53:10:53:17 | ... .failure | T | generics.swift:45:13:45:13 | T | | generics.swift:60:7:60:7 | r | | generics.swift:45:1:57:1 | Result | | generics.swift:60:7:60:7 | r | T | {EXTERNAL LOCATION} | Int | -| generics.swift:60:11:60:24 | ... .success | | generics.swift:45:1:57:1 | Result | -| generics.swift:60:11:60:24 | ... .success | T | {EXTERNAL LOCATION} | Int | +| generics.swift:60:11:60:24 | ... .success | | generics.swift:46:8:46:17 | Result.success | +| generics.swift:60:11:60:24 | ... .success | (parent:success) | generics.swift:45:1:57:1 | Result | +| generics.swift:60:11:60:24 | ... .success | (parent:success).T | {EXTERNAL LOCATION} | Int | | generics.swift:60:11:60:28 | ... .success(...) | | generics.swift:45:1:57:1 | Result | | generics.swift:60:11:60:28 | ... .success(...) | T | {EXTERNAL LOCATION} | Int | | generics.swift:60:26:60:27 | 42 | | {EXTERNAL LOCATION} | Int | @@ -1696,7 +1963,9 @@ inferType | generics.swift:215:26:215:38 | ... .none | | {EXTERNAL LOCATION} | Optional | | generics.swift:215:26:215:38 | ... .none | Wrapped | {EXTERNAL LOCATION} | Int | | generics.swift:227:22:229:3 | Block | | generics.swift:220:1:224:1 | MyProtocol2 | +| generics.swift:227:22:229:3 | Block | MyType | generics.swift:221:3:221:23 | MyType | | generics.swift:228:12:228:15 | self | | generics.swift:220:1:224:1 | MyProtocol2 | +| generics.swift:228:12:228:15 | self | MyType | generics.swift:221:3:221:23 | MyType | | generics.swift:233:7:233:11 | value | | generics.swift:232:15:232:15 | T | | generics.swift:235:10:235:14 | value | | generics.swift:232:15:232:15 | T | | generics.swift:235:20:237:3 | Block | | generics.swift:232:15:232:15 | T | @@ -1705,6 +1974,8 @@ inferType | generics.swift:236:5:236:14 | ... .value | | generics.swift:232:15:232:15 | T | | generics.swift:236:5:236:22 | ... = ... | | generics.swift:232:15:232:15 | T | | generics.swift:236:18:236:22 | value | | generics.swift:232:15:232:15 | T | +| generics.swift:243:19:245:3 | Block | | generics.swift:232:15:232:15 | T | +| generics.swift:244:12:244:16 | value | | generics.swift:232:15:232:15 | T | | generics.swift:248:32:248:32 | c | | generics.swift:248:14:248:27 | T | | generics.swift:249:10:249:10 | c | | generics.swift:248:14:248:27 | T | | generics.swift:252:32:252:32 | c | | generics.swift:252:14:252:27 | T | @@ -2027,6 +2298,685 @@ inferType | lub.swift:14:15:14:15 | 3 | | {EXTERNAL LOCATION} | Int | | lub.swift:14:19:14:19 | b | | lub.swift:5:1:7:1 | B | | lub.swift:14:23:14:23 | c | | lub.swift:9:1:9:13 | C | +| nested_types.swift:2:9:2:17 | baseValue | | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:4:10:4:18 | baseValue | | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:4:28:6:5 | Block | | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:5:9:5:12 | self | | nested_types.swift:1:1:11:1 | Base | +| nested_types.swift:5:9:5:12 | self | TBase | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:5:9:5:22 | ... .baseValue | | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:5:9:5:34 | ... = ... | | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:5:26:5:34 | baseValue | | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:8:29:10:5 | Block | | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:9:16:9:19 | self | | nested_types.swift:1:1:11:1 | Base | +| nested_types.swift:9:16:9:19 | self | TBase | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:9:16:9:29 | ... .baseValue | | nested_types.swift:1:12:1:16 | TBase | +| nested_types.swift:15:13:15:22 | innerValue | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:16:13:16:22 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:18:14:18:23 | innerValue | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:18:34:18:43 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:18:54:22:9 | Block | | nested_types.swift:1:1:11:1 | Base | +| nested_types.swift:18:54:22:9 | Block | TBase | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:19:13:19:16 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:19:13:19:16 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:19:13:19:16 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:19:13:19:16 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:19:13:19:27 | ... .innerValue | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:19:13:19:40 | ... = ... | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:19:31:19:40 | innerValue | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:20:13:20:16 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:20:13:20:16 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:20:13:20:16 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:20:13:20:16 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:20:13:20:27 | ... .outerValue | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:20:13:20:40 | ... = ... | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:20:31:20:40 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:21:13:21:17 | super | | nested_types.swift:1:1:11:1 | Base | +| nested_types.swift:21:13:21:17 | super | TBase | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:21:13:21:45 | ... .init(...) | | nested_types.swift:1:1:11:1 | Base | +| nested_types.swift:21:13:21:45 | ... .init(...) | TBase | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:21:35:21:44 | innerValue | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:24:26:24:35 | innerValue | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:25:24:25:64 | "Convenience initializer not implemented" | | {EXTERNAL LOCATION} | String | +| nested_types.swift:28:35:30:9 | Block | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:29:20:29:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:29:20:29:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:29:20:29:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:29:20:29:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:29:20:29:34 | ... .innerValue | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:32:35:34:9 | Block | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:33:20:33:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:33:20:33:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:33:20:33:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:33:20:33:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:33:20:33:34 | ... .outerValue | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:36:52:38:9 | Block | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:36:52:38:9 | Block | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:36:52:38:9 | Block | (parent:Inner).TOuter | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:36:52:38:9 | Block | TInner | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:37:20:37:38 | ... .Inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:37:20:37:38 | ... .Inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:37:20:37:38 | ... .Inner | (parent:Inner).TOuter | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:37:20:37:38 | ... .Inner | TInner | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:37:20:37:96 | ... .Inner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:37:20:37:96 | ... .Inner(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:37:20:37:96 | ... .Inner(...) | (parent:Inner).TOuter | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:37:20:37:96 | ... .Inner(...) | TInner | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:37:52:37:55 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:37:52:37:55 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:37:52:37:55 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:37:52:37:55 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:37:52:37:66 | ... .outerValue | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:37:81:37:84 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:37:81:37:84 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:37:81:37:84 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:37:81:37:84 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:37:81:37:95 | ... .innerValue | | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:40:42:42:9 | Block | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:40:42:42:9 | Block | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:40:42:42:9 | Block | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:40:42:42:9 | Block | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:41:20:41:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:41:20:41:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:41:20:41:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:41:20:41:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:44:34:46:9 | Block | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:44:34:46:9 | Block | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:44:34:46:9 | Block | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:44:34:46:9 | Block | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:45:20:45:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:45:20:45:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:45:20:45:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:45:20:45:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:51:29:51:38 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:51:63:53:5 | Block | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:51:63:53:5 | Block | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:51:63:53:5 | Block | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:51:63:53:5 | Block | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:52:16:52:20 | Inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:52:16:52:20 | Inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:52:16:52:20 | Inner | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:52:16:52:20 | Inner | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:52:16:52:59 | Inner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:52:16:52:59 | Inner(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:52:16:52:59 | Inner(...) | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:52:16:52:59 | Inner(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:52:34:52:34 | 0 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:52:49:52:58 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:59:14:59:14 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:59:14:59:14 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:59:14:59:14 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:59:14:59:14 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:63:14:63:14 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:63:14:63:14 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:63:14:63:14 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:63:14:63:14 | y | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:63:26:63:26 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:63:26:63:26 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:63:26:63:26 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:63:26:63:26 | z | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:64:13:64:17 | outer | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:64:21:64:21 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:64:21:64:21 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:64:21:64:21 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:64:21:64:21 | z | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:64:21:64:32 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:65:13:65:17 | inner | | {EXTERNAL LOCATION} | String | +| nested_types.swift:65:21:65:21 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:65:21:65:21 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:65:21:65:21 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:65:21:65:21 | z | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:65:21:65:32 | ... .getInner(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:77:9:77:9 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:77:9:77:9 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:77:9:77:9 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:77:9:77:9 | z | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:78:9:78:9 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:78:9:78:9 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:78:9:78:9 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:78:9:78:9 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:80:13:80:13 | a | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:80:17:80:17 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:80:17:80:17 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:80:17:80:17 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:80:17:80:17 | z | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:80:17:80:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:81:13:81:13 | b | | {EXTERNAL LOCATION} | String | +| nested_types.swift:81:17:81:17 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:81:17:81:17 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:81:17:81:17 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:81:17:81:17 | z | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:81:17:81:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:82:13:82:13 | c | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:82:17:82:17 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:82:17:82:17 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:82:17:82:17 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:82:17:82:17 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:82:17:82:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:83:13:83:13 | d | | {EXTERNAL LOCATION} | String | +| nested_types.swift:83:17:83:17 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:83:17:83:17 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:83:17:83:17 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:83:17:83:17 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:83:17:83:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:88:12:88:17 | fixed2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:88:12:88:17 | fixed2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:88:12:88:17 | fixed2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:88:12:88:17 | fixed2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:89:13:89:13 | a | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:89:17:89:22 | fixed2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:89:17:89:22 | fixed2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:89:17:89:22 | fixed2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:89:17:89:22 | fixed2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:89:17:89:33 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:90:13:90:13 | b | | {EXTERNAL LOCATION} | String | +| nested_types.swift:90:17:90:22 | fixed2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:90:17:90:22 | fixed2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:90:17:90:22 | fixed2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:90:17:90:22 | fixed2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:90:17:90:33 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:95:12:95:12 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:95:12:95:12 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:95:12:95:12 | x | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:95:12:95:12 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:96:13:96:17 | outer | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:96:21:96:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:96:21:96:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:96:21:96:21 | x | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:96:21:96:21 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:96:21:96:32 | ... .getOuter(...) | | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:97:13:97:17 | inner | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:97:21:97:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:97:21:97:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:97:21:97:21 | x | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:97:21:97:21 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:97:21:97:32 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:102:13:102:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:102:13:102:13 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:102:13:102:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:102:13:102:13 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:103:13:103:17 | outer | | {EXTERNAL LOCATION} | String | +| nested_types.swift:103:21:103:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:103:21:103:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:103:21:103:21 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:103:21:103:21 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:103:21:103:32 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:104:13:104:17 | inner | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:104:21:104:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:104:21:104:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:104:21:104:21 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:104:21:104:21 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:104:21:104:32 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:108:29:108:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:108:29:108:33 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:108:29:108:33 | inner | (parent:Inner).TOuter | nested_types.swift:108:19:108:20 | Ta | +| nested_types.swift:108:29:108:33 | inner | TInner | nested_types.swift:108:23:108:24 | Tb | +| nested_types.swift:108:63:110:1 | Block | | nested_types.swift:108:23:108:24 | Tb | +| nested_types.swift:109:12:109:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:109:12:109:16 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:109:12:109:16 | inner | (parent:Inner).TOuter | nested_types.swift:108:19:108:20 | Ta | +| nested_types.swift:109:12:109:16 | inner | TInner | nested_types.swift:108:23:108:24 | Tb | +| nested_types.swift:109:12:109:27 | ... .getInner(...) | | nested_types.swift:108:23:108:24 | Tb | +| nested_types.swift:112:29:112:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:112:29:112:33 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:112:29:112:33 | inner | (parent:Inner).TOuter | nested_types.swift:112:19:112:20 | Ta | +| nested_types.swift:112:29:112:33 | inner | TInner | nested_types.swift:112:23:112:24 | Tb | +| nested_types.swift:112:63:114:1 | Block | | nested_types.swift:112:19:112:20 | Ta | +| nested_types.swift:113:12:113:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:113:12:113:16 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:113:12:113:16 | inner | (parent:Inner).TOuter | nested_types.swift:112:19:112:20 | Ta | +| nested_types.swift:113:12:113:16 | inner | TInner | nested_types.swift:112:23:112:24 | Tb | +| nested_types.swift:113:12:113:27 | ... .getOuter(...) | | nested_types.swift:112:19:112:20 | Ta | +| nested_types.swift:116:5:116:10 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:5:116:10 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:116:5:116:10 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:116:5:116:10 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:116:14:116:24 | ... .Inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:14:116:24 | ... .Inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:116:14:116:24 | ... .Inner | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:116:14:116:24 | ... .Inner | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:116:14:116:56 | ... .Inner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:14:116:56 | ... .Inner(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:116:14:116:56 | ... .Inner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:116:14:116:56 | ... .Inner(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:116:38:116:39 | 42 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:116:54:116:55 | "" | | {EXTERNAL LOCATION} | String | +| nested_types.swift:117:5:117:7 | x1a | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:117:11:117:16 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:117:11:117:16 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:117:11:117:16 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:117:11:117:16 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:117:11:117:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:118:5:118:7 | x1b | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:118:11:118:30 | extractInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:118:24:118:29 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:118:24:118:29 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:118:24:118:29 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:118:24:118:29 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:119:5:119:7 | y1a | | {EXTERNAL LOCATION} | String | +| nested_types.swift:119:11:119:16 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:119:11:119:16 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:119:11:119:16 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:119:11:119:16 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:119:11:119:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:120:5:120:7 | y1b | | {EXTERNAL LOCATION} | String | +| nested_types.swift:120:11:120:30 | extractOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:120:24:120:29 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:120:24:120:29 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:120:24:120:29 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:120:24:120:29 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:121:5:121:6 | b1 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:121:10:121:15 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:121:10:121:15 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:121:10:121:15 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:121:10:121:15 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:121:10:121:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:123:5:123:10 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:123:5:123:10 | inner2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:123:5:123:10 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:123:5:123:10 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:123:14:123:32 | ... .Inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:123:14:123:32 | ... .Inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:123:14:123:32 | ... .Inner | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:123:14:123:32 | ... .Inner | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:123:14:123:48 | ... .Inner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:123:14:123:48 | ... .Inner(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:123:14:123:48 | ... .Inner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:123:14:123:48 | ... .Inner(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:123:46:123:47 | 42 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:124:5:124:7 | x2a | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:124:11:124:16 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:124:11:124:16 | inner2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:124:11:124:16 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:124:11:124:16 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:124:11:124:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:125:5:125:7 | x2b | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:125:11:125:30 | extractInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:125:24:125:29 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:125:24:125:29 | inner2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:125:24:125:29 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:125:24:125:29 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:126:5:126:7 | y2a | | {EXTERNAL LOCATION} | String | +| nested_types.swift:126:11:126:16 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:126:11:126:16 | inner2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:126:11:126:16 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:126:11:126:16 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:126:11:126:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:127:5:127:7 | y2b | | {EXTERNAL LOCATION} | String | +| nested_types.swift:127:11:127:30 | extractOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:127:24:127:29 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:127:24:127:29 | inner2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:127:24:127:29 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:127:24:127:29 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:128:5:128:6 | b2 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:128:10:128:15 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:128:10:128:15 | inner2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:128:10:128:15 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:128:10:128:15 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:128:10:128:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:130:5:130:11 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:130:5:130:11 | swapped | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:130:5:130:11 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:130:5:130:11 | swapped | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:130:15:130:20 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:130:15:130:20 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:130:15:130:20 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:130:15:130:20 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:130:15:130:27 | ... .swap(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:130:15:130:27 | ... .swap(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:130:15:130:27 | ... .swap(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:130:15:130:27 | ... .swap(...) | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:131:5:131:6 | x3 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:131:10:131:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:131:10:131:16 | swapped | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:131:10:131:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:131:10:131:16 | swapped | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:131:10:131:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:132:5:132:6 | y3 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:132:10:132:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:132:10:132:16 | swapped | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:132:10:132:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:132:10:132:16 | swapped | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:132:10:132:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:133:5:133:6 | b3 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:133:10:133:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:133:10:133:16 | swapped | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:133:10:133:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:133:10:133:16 | swapped | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:133:10:133:26 | ... .getBase(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:135:5:135:10 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:135:5:135:10 | inner4 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:135:5:135:10 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:135:5:135:10 | inner4 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:135:14:135:19 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:135:14:135:19 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:135:14:135:19 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:135:14:135:19 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:135:14:135:30 | ... .getSelf1(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:135:14:135:30 | ... .getSelf1(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:135:14:135:30 | ... .getSelf1(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:135:14:135:30 | ... .getSelf1(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:136:5:136:6 | x4 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:136:10:136:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:136:10:136:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:136:10:136:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:136:10:136:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:136:10:136:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:137:5:137:6 | y4 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:137:10:137:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:137:10:137:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:137:10:137:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:137:10:137:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:137:10:137:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:138:5:138:6 | b4 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:138:10:138:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:138:10:138:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:138:10:138:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:138:10:138:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:138:10:138:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:140:5:140:10 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:140:5:140:10 | inner5 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:140:5:140:10 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:140:5:140:10 | inner5 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:140:14:140:19 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:140:14:140:19 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:140:14:140:19 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:140:14:140:19 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:140:14:140:30 | ... .getSelf2(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:140:14:140:30 | ... .getSelf2(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:140:14:140:30 | ... .getSelf2(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:140:14:140:30 | ... .getSelf2(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:141:5:141:6 | x5 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:141:10:141:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:141:10:141:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:141:10:141:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:141:10:141:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:141:10:141:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:142:5:142:6 | y5 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:142:10:142:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:142:10:142:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:142:10:142:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:142:10:142:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:142:10:142:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:143:5:143:6 | b5 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:143:10:143:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:143:10:143:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:143:10:143:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:143:10:143:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:143:10:143:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:145:5:145:10 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:145:5:145:10 | inner6 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:145:5:145:10 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:145:5:145:10 | inner6 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:145:14:145:49 | ... .createInner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:145:14:145:49 | ... .createInner(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:145:14:145:49 | ... .createInner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:145:14:145:49 | ... .createInner(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:145:44:145:48 | false | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:146:5:146:6 | x6 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:146:10:146:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:146:10:146:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:146:10:146:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:146:10:146:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:146:10:146:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:147:5:147:6 | y6 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:147:10:147:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:147:10:147:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:147:10:147:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:147:10:147:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:147:10:147:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:148:5:148:6 | b6 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:148:10:148:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:148:10:148:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:148:10:148:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:148:10:148:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:148:10:148:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:150:5:150:10 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:150:5:150:10 | inner7 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:150:5:150:10 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:150:5:150:10 | inner7 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:150:14:150:29 | ... .InnerAlias | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:150:14:150:29 | ... .InnerAlias | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:150:14:150:29 | ... .InnerAlias | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:150:14:150:29 | ... .InnerAlias | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:150:14:150:63 | ... .InnerAlias(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:150:14:150:63 | ... .InnerAlias(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:150:14:150:63 | ... .InnerAlias(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:150:14:150:63 | ... .InnerAlias(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:150:43:150:43 | 0 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:150:58:150:62 | false | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:151:5:151:7 | x11 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:151:11:151:16 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:151:11:151:16 | inner7 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:151:11:151:16 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:151:11:151:16 | inner7 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:151:11:151:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:152:5:152:7 | y11 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:152:11:152:16 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:152:11:152:16 | inner7 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:152:11:152:16 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:152:11:152:16 | inner7 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:152:11:152:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:160:13:160:16 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | +| nested_types.swift:160:13:160:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:160:13:160:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:160:13:160:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:160:13:160:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:161:13:161:16 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | +| nested_types.swift:161:13:161:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:161:13:161:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:161:13:161:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:161:13:161:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:165:20:165:23 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | +| nested_types.swift:165:20:165:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:165:20:165:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:165:20:165:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:165:20:165:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:169:20:169:23 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | +| nested_types.swift:169:20:169:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:169:20:169:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:169:20:169:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:169:20:169:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:174:5:174:13 | innerMost | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | +| nested_types.swift:174:5:174:13 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:174:5:174:13 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:174:17:174:37 | ... .InnerMost | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | +| nested_types.swift:174:17:174:37 | ... .InnerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:174:17:174:37 | ... .InnerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:174:17:174:51 | ... .InnerMost(...) | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | +| nested_types.swift:174:17:174:51 | ... .InnerMost(...) | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:174:17:174:51 | ... .InnerMost(...) | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:174:42:174:43 | "" | | {EXTERNAL LOCATION} | String | +| nested_types.swift:174:49:174:50 | 42 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:175:10:175:18 | innerMost | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | +| nested_types.swift:175:10:175:18 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:175:10:175:18 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:176:10:176:18 | innerMost | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | +| nested_types.swift:176:10:176:18 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:176:10:176:18 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:179:14:179:14 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:179:14:179:14 | x | (parent:Inner) | nested_types.swift:178:1:183:1 | SubOuter | +| nested_types.swift:179:14:179:14 | x | (parent:Inner).TSubOuter | nested_types.swift:178:16:178:24 | TSubOuter | +| nested_types.swift:179:14:179:14 | x | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:180:19:180:19 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:180:19:180:19 | x | (parent:Inner) | nested_types.swift:178:1:183:1 | SubOuter | +| nested_types.swift:180:19:180:19 | x | (parent:Inner).TSubOuter | nested_types.swift:178:16:178:24 | TSubOuter | +| nested_types.swift:180:19:180:19 | x | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:185:5:185:12 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:185:5:185:12 | subOuter | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:185:5:185:12 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | +| nested_types.swift:185:5:185:12 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:185:5:185:12 | subOuter | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:185:16:185:58 | ... .createInner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:185:16:185:58 | ... .createInner(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:185:16:185:58 | ... .createInner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | +| nested_types.swift:185:16:185:58 | ... .createInner(...) | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:185:16:185:58 | ... .createInner(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:185:54:185:57 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| nested_types.swift:185:54:185:57 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:185:55:185:56 | 42 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:186:5:186:6 | x8 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:186:10:186:17 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:186:10:186:17 | subOuter | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:186:10:186:17 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | +| nested_types.swift:186:10:186:17 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:186:10:186:17 | subOuter | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:186:10:186:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:187:5:187:6 | y8 | | {EXTERNAL LOCATION} | Array | +| nested_types.swift:187:5:187:6 | y8 | Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:187:10:187:17 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:187:10:187:17 | subOuter | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:187:10:187:17 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | +| nested_types.swift:187:10:187:17 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:187:10:187:17 | subOuter | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:187:10:187:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Array | +| nested_types.swift:187:10:187:28 | ... .getOuter(...) | Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:189:5:189:12 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:189:5:189:12 | subInner | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:189:5:189:12 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:189:5:189:12 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:189:16:189:29 | ... .SubInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:189:16:189:29 | ... .SubInner | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:189:16:189:29 | ... .SubInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:189:16:189:29 | ... .SubInner | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:189:16:189:62 | ... .SubInner(...) | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:189:16:189:62 | ... .SubInner(...) | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:189:16:189:62 | ... .SubInner(...) | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:189:16:189:62 | ... .SubInner(...) | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:189:43:189:46 | true | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:189:61:189:61 | 0 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:190:5:190:6 | x9 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:190:10:190:17 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:190:10:190:17 | subInner | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:190:10:190:17 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:190:10:190:17 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:190:10:190:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:191:5:191:6 | y9 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:191:10:191:17 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:191:10:191:17 | subInner | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:191:10:191:17 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:191:10:191:17 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:191:10:191:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:193:5:193:13 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:193:5:193:13 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:193:5:193:13 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:193:5:193:13 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:193:46:193:59 | ... .SubInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:193:46:193:59 | ... .SubInner | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:193:46:193:59 | ... .SubInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:193:46:193:59 | ... .SubInner | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:193:46:193:74 | ... .SubInner(...) | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:193:46:193:74 | ... .SubInner(...) | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:193:46:193:74 | ... .SubInner(...) | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:193:46:193:74 | ... .SubInner(...) | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:193:73:193:73 | 1 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:194:5:194:7 | x12 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:194:11:194:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:194:11:194:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:194:11:194:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:194:11:194:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:194:11:194:30 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:195:5:195:7 | y12 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:195:11:195:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:195:11:195:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:195:11:195:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:195:11:195:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:195:11:195:30 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:199:5:199:19 | subInnerOutside | | nested_types.swift:197:1:197:70 | SubInnerOutside | +| nested_types.swift:199:5:199:19 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:199:23:199:37 | SubInnerOutside | | nested_types.swift:197:1:197:70 | SubInnerOutside | +| nested_types.swift:199:23:199:37 | SubInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:199:23:199:74 | SubInnerOutside(...) | | nested_types.swift:197:1:197:70 | SubInnerOutside | +| nested_types.swift:199:23:199:74 | SubInnerOutside(...) | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:199:51:199:54 | true | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:199:69:199:73 | false | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:200:5:200:7 | x10 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:200:11:200:25 | subInnerOutside | | nested_types.swift:197:1:197:70 | SubInnerOutside | +| nested_types.swift:200:11:200:25 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:200:11:200:36 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:201:5:201:7 | y10 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:201:11:201:25 | subInnerOutside | | nested_types.swift:197:1:197:70 | SubInnerOutside | +| nested_types.swift:201:11:201:25 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:201:11:201:36 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:205:13:205:13 | x | | nested_types.swift:204:5:206:5 | Node.Leaf | +| nested_types.swift:205:13:205:13 | x | (parent:Leaf) | nested_types.swift:203:1:207:1 | Node | +| nested_types.swift:205:23:205:26 | Leaf | | nested_types.swift:204:5:206:5 | Node.Leaf | +| nested_types.swift:205:23:205:26 | Leaf | (parent:Leaf) | nested_types.swift:203:1:207:1 | Node | +| nested_types.swift:205:23:205:28 | Leaf(...) | | nested_types.swift:204:5:206:5 | Node.Leaf | +| nested_types.swift:205:23:205:28 | Leaf(...) | (parent:Leaf) | nested_types.swift:203:1:207:1 | Node | +| nested_types.swift:211:5:211:10 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:211:5:211:10 | holder | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:211:5:211:10 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:211:5:211:10 | holder | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:211:14:211:25 | ... .Fixed | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:211:14:211:25 | ... .Fixed | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:211:14:211:25 | ... .Fixed | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:211:14:211:25 | ... .Fixed | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:211:14:211:41 | ... .Fixed(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:211:14:211:41 | ... .Fixed(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:211:14:211:41 | ... .Fixed(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:211:14:211:41 | ... .Fixed(...) | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:211:39:211:40 | "" | | {EXTERNAL LOCATION} | String | +| nested_types.swift:212:5:212:7 | x13 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:212:11:212:16 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:212:11:212:16 | holder | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:212:11:212:16 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:212:11:212:16 | holder | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:212:11:212:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:213:5:213:7 | y13 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:213:11:213:16 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:213:11:213:16 | holder | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:213:11:213:16 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:213:11:213:16 | holder | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:213:11:213:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:221:11:221:11 | x | | nested_types.swift:215:1:224:1 | Box | +| nested_types.swift:221:11:221:11 | x | T | {EXTERNAL LOCATION} | Int | +| nested_types.swift:222:11:222:11 | y | | nested_types.swift:215:1:224:1 | Box | +| nested_types.swift:222:11:222:11 | y | T | nested_types.swift:215:11:215:11 | T | +| nested_types.swift:228:10:228:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:228:10:228:10 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:228:10:228:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:228:10:228:10 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:232:10:232:10 | x | | {EXTERNAL LOCATION} | String | +| nested_types.swift:238:10:238:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:238:10:238:10 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:238:10:238:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:238:10:238:10 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:238:35:238:35 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:238:35:238:35 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:238:35:238:35 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:238:35:238:35 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:239:9:239:9 | a | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:239:13:239:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:239:13:239:13 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:239:13:239:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:239:13:239:13 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:239:13:239:24 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:240:9:240:9 | b | | {EXTERNAL LOCATION} | String | +| nested_types.swift:240:13:240:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:240:13:240:13 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:240:13:240:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:240:13:240:13 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:240:13:240:24 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:241:9:241:9 | c | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:241:13:241:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:241:13:241:13 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:241:13:241:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:241:13:241:13 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:241:13:241:24 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:242:9:242:9 | d | | {EXTERNAL LOCATION} | String | +| nested_types.swift:242:13:242:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:242:13:242:13 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:242:13:242:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:242:13:242:13 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:242:13:242:24 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:247:10:247:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:247:10:247:10 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:248:17:248:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:248:17:248:17 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:249:9:249:13 | inner | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:249:17:249:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:249:17:249:17 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:249:17:249:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | | overload_resolution.swift:4:17:4:17 | x | | {EXTERNAL LOCATION} | Int | | overload_resolution.swift:4:35:6:3 | Block | | {EXTERNAL LOCATION} | String | | overload_resolution.swift:5:12:5:16 | "int" | | {EXTERNAL LOCATION} | String | @@ -2584,8 +3534,9 @@ inferType | pattern_matching.swift:29:42:33:1 | Block | T | {EXTERNAL LOCATION} | Bool | | pattern_matching.swift:30:7:30:7 | x | | pattern_matching.swift:7:1:11:1 | PatternMatch | | pattern_matching.swift:30:7:30:7 | x | T | {EXTERNAL LOCATION} | Int | -| pattern_matching.swift:30:11:30:28 | ... .value | | pattern_matching.swift:7:1:11:1 | PatternMatch | -| pattern_matching.swift:30:11:30:28 | ... .value | T | {EXTERNAL LOCATION} | Int | +| pattern_matching.swift:30:11:30:28 | ... .value | | pattern_matching.swift:9:8:9:15 | PatternMatch.value | +| pattern_matching.swift:30:11:30:28 | ... .value | (parent:value) | pattern_matching.swift:7:1:11:1 | PatternMatch | +| pattern_matching.swift:30:11:30:28 | ... .value | (parent:value).T | {EXTERNAL LOCATION} | Int | | pattern_matching.swift:30:11:30:32 | ... .value(...) | | pattern_matching.swift:7:1:11:1 | PatternMatch | | pattern_matching.swift:30:11:30:32 | ... .value(...) | T | {EXTERNAL LOCATION} | Int | | pattern_matching.swift:30:30:30:31 | 42 | | {EXTERNAL LOCATION} | Int | @@ -3026,10 +3977,13 @@ inferType | type_constraints.swift:208:12:208:17 | values | | {EXTERNAL LOCATION} | Array | | type_constraints.swift:208:12:208:17 | values | Element | type_constraints.swift:200:20:200:20 | T | | type_constraints.swift:214:12:214:17 | values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:214:12:214:17 | values | Element | type_constraints.swift:200:20:200:20 | T | | type_constraints.swift:214:19:214:19 | 0 | | {EXTERNAL LOCATION} | Int | | type_constraints.swift:214:24:214:29 | values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:214:24:214:29 | values | Element | type_constraints.swift:200:20:200:20 | T | | type_constraints.swift:214:31:214:31 | 1 | | {EXTERNAL LOCATION} | Int | | type_constraints.swift:220:12:220:17 | values | | {EXTERNAL LOCATION} | Array | +| type_constraints.swift:220:12:220:17 | values | Element | type_constraints.swift:200:20:200:20 | T | | type_constraints.swift:220:35:222:5 | FunctionExpr | | {EXTERNAL LOCATION} | Function | | type_constraints.swift:227:7:227:12 | intAcc | | type_constraints.swift:200:1:210:1 | Accumulator | | type_constraints.swift:227:7:227:12 | intAcc | T | {EXTERNAL LOCATION} | Int | @@ -3117,4 +4071,47 @@ inferType | type_constraints.swift:263:18:263:20 | "m" | | {EXTERNAL LOCATION} | String | | type_constraints.swift:263:28:263:30 | "a" | | {EXTERNAL LOCATION} | String | | type_constraints.swift:263:38:263:40 | "z" | | {EXTERNAL LOCATION} | String | +| variance.swift:7:18:7:18 | f | | {EXTERNAL LOCATION} | Function | +| variance.swift:7:18:7:18 | f | Args | {EXTERNAL LOCATION} | Tuple1 | +| variance.swift:7:18:7:18 | f | Args.T0 | variance.swift:5:1:5:21 | B | +| variance.swift:7:18:7:18 | f | Args.T0.Tb | variance.swift:7:10:7:11 | T1 | +| variance.swift:7:18:7:18 | f | Return | variance.swift:3:1:3:14 | A | +| variance.swift:7:18:7:18 | f | Return.Ta | variance.swift:7:14:7:15 | T2 | +| variance.swift:11:5:11:7 | lam | | {EXTERNAL LOCATION} | Function | +| variance.swift:11:5:11:7 | lam | Args | {EXTERNAL LOCATION} | Tuple1 | +| variance.swift:11:5:11:7 | lam | Args.T0 | variance.swift:3:1:3:14 | A | +| variance.swift:11:5:11:7 | lam | Args.T0.Ta | {EXTERNAL LOCATION} | Int | +| variance.swift:11:5:11:7 | lam | Return | variance.swift:5:1:5:21 | B | +| variance.swift:11:5:11:7 | lam | Return.Tb | {EXTERNAL LOCATION} | String | +| variance.swift:11:11:11:53 | FunctionExpr | | {EXTERNAL LOCATION} | Function | +| variance.swift:11:11:11:53 | FunctionExpr | Args | {EXTERNAL LOCATION} | Tuple1 | +| variance.swift:11:11:11:53 | FunctionExpr | Args.T0 | variance.swift:3:1:3:14 | A | +| variance.swift:11:11:11:53 | FunctionExpr | Args.T0.Ta | {EXTERNAL LOCATION} | Int | +| variance.swift:11:11:11:53 | FunctionExpr | Return | variance.swift:5:1:5:21 | B | +| variance.swift:11:11:11:53 | FunctionExpr | Return.Tb | {EXTERNAL LOCATION} | String | +| variance.swift:11:14:11:14 | a | | variance.swift:3:1:3:14 | A | +| variance.swift:11:14:11:14 | a | Ta | {EXTERNAL LOCATION} | Int | +| variance.swift:11:41:11:49 | GenericTypeExpr | | variance.swift:5:1:5:21 | B | +| variance.swift:11:41:11:49 | GenericTypeExpr | Tb | {EXTERNAL LOCATION} | String | +| variance.swift:11:41:11:51 | ...(...) | | variance.swift:5:1:5:21 | B | +| variance.swift:11:41:11:51 | ...(...) | Tb | {EXTERNAL LOCATION} | String | +| variance.swift:11:41:11:51 | Block | | variance.swift:5:1:5:21 | B | +| variance.swift:11:41:11:51 | Block | Tb | {EXTERNAL LOCATION} | String | +| variance.swift:13:5:13:5 | x | | {EXTERNAL LOCATION} | Tuple2 | +| variance.swift:13:9:13:19 | foo(...) | | {EXTERNAL LOCATION} | Tuple2 | +| variance.swift:13:16:13:18 | lam | | {EXTERNAL LOCATION} | Function | +| variance.swift:13:16:13:18 | lam | Args | {EXTERNAL LOCATION} | Tuple1 | +| variance.swift:13:16:13:18 | lam | Args.T0 | variance.swift:3:1:3:14 | A | +| variance.swift:13:16:13:18 | lam | Args.T0.Ta | {EXTERNAL LOCATION} | Int | +| variance.swift:13:16:13:18 | lam | Return | variance.swift:5:1:5:21 | B | +| variance.swift:13:16:13:18 | lam | Return.Tb | {EXTERNAL LOCATION} | String | +| variance.swift:15:23:15:29 | Block | | variance.swift:5:1:5:21 | B | +| variance.swift:15:23:15:29 | Block | Tb | variance.swift:15:10:15:10 | T | +| variance.swift:15:25:15:25 | B | | variance.swift:5:1:5:21 | B | +| variance.swift:15:25:15:25 | B | Tb | variance.swift:15:10:15:10 | T | +| variance.swift:15:25:15:27 | B(...) | | variance.swift:5:1:5:21 | B | +| variance.swift:15:25:15:27 | B(...) | Tb | variance.swift:15:10:15:10 | T | +| variance.swift:18:7:18:7 | x | | variance.swift:3:1:3:14 | A | +| variance.swift:18:7:18:7 | x | Ta | {EXTERNAL LOCATION} | Int | +| variance.swift:18:19:18:23 | bar(...) | | variance.swift:5:1:5:21 | B | testFailures diff --git a/unified/ql/test/library-tests/type-inference/variance.swift b/unified/ql/test/library-tests/type-inference/variance.swift new file mode 100644 index 000000000000..11d19d3b6054 --- /dev/null +++ b/unified/ql/test/library-tests/type-inference/variance.swift @@ -0,0 +1,19 @@ +// variance is not currently supported + +class A {} + +class B: A {} + +func foo(f: (B) -> A) -> (T1, T2) { + fatalError() // placeholder implementation +} + +let lam = { (a: A) -> B in B() } // $ target=A.init + +let x = foo(f: lam) // $ target=foo $ MISSING: type=x@Tuple2:Int type=x@Tuple2:String + +func bar() -> B { B() } // $ target=A.init + +func baz() { + let x: A = bar() // $ target=bar $ MISSING: type=bar(...)@B:Int +} From 3175532f6fbbc13dd6fd16ce790e1931ff51e3ba Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 26 Oct 2026 17:07:59 +0100 Subject: [PATCH 2/4] wip --- .../internal/typeinference/TypeMention.qll | 28 +- .../type-inference/nested_types.swift | 9 +- .../type-inference/type-inference.expected | 1306 +++++++++-------- 3 files changed, 709 insertions(+), 634 deletions(-) diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll index 53e2256aa90b..1e13b943f678 100644 --- a/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll @@ -60,7 +60,7 @@ abstract private class TypeMentionImpl extends AstNode { bindingset[this, qualifier] pragma[inline_late] predicate isValidParentType(TypeMention qualifier) { - this.isValidParentType0(qualifier.getClassLikeDeclaration()) + this.isValidParentType0(qualifier.getClassLikeDeclaration().getEnclosingClassResolved*()) } /** @@ -128,17 +128,35 @@ abstract private class ExprTypeMentionImpl extends TypeMentionImpl, Expr { abstract Type getTypeAtImpl(TypePath path); + pragma[nomagic] + private ClassLikeDeclaration getQualifierTypeAt(TypePath path) { + result = + this.getParentQualifier().getTypeAt(path).(ClassLikeDeclarationType).getClassLikeDeclaration() + } + + pragma[nomagic] + private predicate isNestedClass( + ClassLikeDeclaration cls, ParentTypeParameterType tp, ClassLikeDeclaration parent + ) { + cls = this.getClassLikeDeclaration() and + tp = TParentTypeParameterType(cls) and + parent = tp.getParent() + } + final override Type getTypeAt(TypePath path) { // recursion guard to check that `getType` does not recursively depend on `getTypeAt` (exists(this.getType()) implies any()) and result = this.getTypeAtImpl(path) or // A mention of a nested type with an explicit qualifier - exists(TypeMention qualifier, ClassLikeDeclaration cls, TypePath suffix | + exists( + TypeMention qualifier, ClassLikeDeclaration cls, ParentTypeParameterType tp, TypePath prefix, + TypePath suffix + | qualifier = this.getParentQualifier() and - cls = this.getClassLikeDeclaration() and - path = TypePath::cons(TParentTypeParameterType(cls), suffix) and - result = qualifier.getTypeAt(suffix) + this.isNestedClass(cls, tp, this.getQualifierTypeAt(prefix)) and + path = TypePath::cons(tp, suffix) and + result = qualifier.getTypeAt(prefix.appendInverse(suffix)) ) or // A mention of a nested type without an explicit qualifier implicitly mentions diff --git a/unified/ql/test/library-tests/type-inference/nested_types.swift b/unified/ql/test/library-tests/type-inference/nested_types.swift index 185c29a0eebf..6a6eb81e29fc 100644 --- a/unified/ql/test/library-tests/type-inference/nested_types.swift +++ b/unified/ql/test/library-tests/type-inference/nested_types.swift @@ -103,6 +103,13 @@ class Outer { let outer = x.getOuter() // $ target=Outer.Inner.getOuter type=outer:String let inner = x.getInner() // $ target=Outer.Inner.getInner type=inner:Int } + + typealias Pair = (Inner, Inner) + + func f3(p: Pair) { + let outer = p.0.getOuter() // $ target=Outer.Inner.getOuter field=Tuple2.0 $ MISSING: type=outer:TOuter + let inner = p.0.getInner() // $ target=Outer.Inner.getInner field=Tuple2.0 type=inner:Int + } } func extractInner(_ inner: Outer.Inner) -> Tb { @@ -245,6 +252,6 @@ func f(_ x: H.InnerAlias, _ y: H2.InnerAlias) { typealias G = Outer.Holder func f(_ x: G.InnerAlias) { - let outer = x.getOuter() // $ target=Outer.Inner.getOuter $ MISSING: type=outer:String + let outer = x.getOuter() // $ target=Outer.Inner.getOuter type=outer:String let inner = x.getInner() // $ target=Outer.Inner.getInner type=inner:Bool } diff --git a/unified/ql/test/library-tests/type-inference/type-inference.expected b/unified/ql/test/library-tests/type-inference/type-inference.expected index e8041ff05497..ac055d369a3d 100644 --- a/unified/ql/test/library-tests/type-inference/type-inference.expected +++ b/unified/ql/test/library-tests/type-inference/type-inference.expected @@ -381,221 +381,242 @@ inferCertainType | nested_types.swift:18:14:18:23 | innerValue | | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:18:34:18:43 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:19:13:19:16 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:19:13:19:16 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:19:13:19:16 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:19:13:19:16 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:19:13:19:16 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:19:31:19:40 | innerValue | | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:20:13:20:16 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:20:13:20:16 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:20:13:20:16 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:20:13:20:16 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:20:13:20:16 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:20:31:20:40 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:21:35:21:44 | innerValue | | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:24:26:24:35 | innerValue | | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:29:20:29:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:29:20:29:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:29:20:29:23 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:29:20:29:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:29:20:29:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:33:20:33:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:33:20:33:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:33:20:33:23 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:33:20:33:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:33:20:33:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:37:52:37:55 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:37:52:37:55 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:37:52:37:55 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:37:52:37:55 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:37:52:37:55 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:37:81:37:84 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:37:81:37:84 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:37:81:37:84 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:37:81:37:84 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:37:81:37:84 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:41:20:41:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:41:20:41:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:41:20:41:23 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:41:20:41:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:41:20:41:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:45:20:45:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:45:20:45:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:45:20:45:23 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:45:20:45:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:45:20:45:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:51:29:51:38 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:52:49:52:58 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:59:14:59:14 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:59:14:59:14 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:59:14:59:14 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:59:14:59:14 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:59:14:59:14 | x | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:63:14:63:14 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:63:14:63:14 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:63:14:63:14 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:63:14:63:14 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | | nested_types.swift:63:14:63:14 | y | TInner | {EXTERNAL LOCATION} | String | | nested_types.swift:63:26:63:26 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:63:26:63:26 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:63:26:63:26 | z | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:63:26:63:26 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | | nested_types.swift:63:26:63:26 | z | TInner | {EXTERNAL LOCATION} | String | | nested_types.swift:64:21:64:21 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:64:21:64:21 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:64:21:64:21 | z | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:64:21:64:21 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | | nested_types.swift:64:21:64:21 | z | TInner | {EXTERNAL LOCATION} | String | | nested_types.swift:65:21:65:21 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:65:21:65:21 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:65:21:65:21 | z | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:65:21:65:21 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | | nested_types.swift:65:21:65:21 | z | TInner | {EXTERNAL LOCATION} | String | | nested_types.swift:77:9:77:9 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:77:9:77:9 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:77:9:77:9 | z | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:77:9:77:9 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:77:9:77:9 | z | TInner | {EXTERNAL LOCATION} | Bool | | nested_types.swift:78:9:78:9 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:78:9:78:9 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:78:9:78:9 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:78:9:78:9 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:78:9:78:9 | y | TInner | {EXTERNAL LOCATION} | Bool | | nested_types.swift:80:17:80:17 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:80:17:80:17 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:80:17:80:17 | z | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:80:17:80:17 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:80:17:80:17 | z | TInner | {EXTERNAL LOCATION} | Bool | | nested_types.swift:81:17:81:17 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:81:17:81:17 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:81:17:81:17 | z | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:81:17:81:17 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:81:17:81:17 | z | TInner | {EXTERNAL LOCATION} | Bool | | nested_types.swift:82:17:82:17 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:82:17:82:17 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:82:17:82:17 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:82:17:82:17 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:82:17:82:17 | y | TInner | {EXTERNAL LOCATION} | Bool | | nested_types.swift:83:17:83:17 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:83:17:83:17 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:83:17:83:17 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:83:17:83:17 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:83:17:83:17 | y | TInner | {EXTERNAL LOCATION} | Bool | | nested_types.swift:88:12:88:17 | fixed2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:88:12:88:17 | fixed2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:88:12:88:17 | fixed2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:88:12:88:17 | fixed2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:88:12:88:17 | fixed2 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:89:17:89:22 | fixed2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:89:17:89:22 | fixed2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:89:17:89:22 | fixed2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:89:17:89:22 | fixed2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:89:17:89:22 | fixed2 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:90:17:90:22 | fixed2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:90:17:90:22 | fixed2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:90:17:90:22 | fixed2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:90:17:90:22 | fixed2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:90:17:90:22 | fixed2 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:95:12:95:12 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:95:12:95:12 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:95:12:95:12 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:95:12:95:12 | x | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:95:12:95:12 | x | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:96:21:96:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:96:21:96:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:96:21:96:21 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:96:21:96:21 | x | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:96:21:96:21 | x | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:97:21:97:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:97:21:97:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:97:21:97:21 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:97:21:97:21 | x | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:97:21:97:21 | x | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:102:13:102:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:102:13:102:13 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:102:13:102:13 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:102:13:102:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:102:13:102:13 | x | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:103:21:103:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:103:21:103:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:103:21:103:21 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:103:21:103:21 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:103:21:103:21 | x | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:104:21:104:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:104:21:104:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:104:21:104:21 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:104:21:104:21 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:104:21:104:21 | x | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:108:29:108:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:108:29:108:33 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:108:29:108:33 | inner | (parent:Inner).TOuter | nested_types.swift:108:19:108:20 | Ta | -| nested_types.swift:108:29:108:33 | inner | TInner | nested_types.swift:108:23:108:24 | Tb | -| nested_types.swift:109:12:109:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:109:12:109:16 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:109:12:109:16 | inner | (parent:Inner).TOuter | nested_types.swift:108:19:108:20 | Ta | -| nested_types.swift:109:12:109:16 | inner | TInner | nested_types.swift:108:23:108:24 | Tb | -| nested_types.swift:112:29:112:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:112:29:112:33 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:112:29:112:33 | inner | (parent:Inner).TOuter | nested_types.swift:112:19:112:20 | Ta | -| nested_types.swift:112:29:112:33 | inner | TInner | nested_types.swift:112:23:112:24 | Tb | -| nested_types.swift:113:12:113:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:113:12:113:16 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:113:12:113:16 | inner | (parent:Inner).TOuter | nested_types.swift:112:19:112:20 | Ta | -| nested_types.swift:113:12:113:16 | inner | TInner | nested_types.swift:112:23:112:24 | Tb | -| nested_types.swift:160:13:160:16 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | -| nested_types.swift:160:13:160:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:160:13:160:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:160:13:160:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:160:13:160:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:161:13:161:16 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | -| nested_types.swift:161:13:161:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:161:13:161:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:161:13:161:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:161:13:161:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:165:20:165:23 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | -| nested_types.swift:165:20:165:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:165:20:165:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:165:20:165:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:165:20:165:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:169:20:169:23 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | -| nested_types.swift:169:20:169:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:169:20:169:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:169:20:169:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:169:20:169:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:179:14:179:14 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:179:14:179:14 | x | (parent:Inner) | nested_types.swift:178:1:183:1 | SubOuter | -| nested_types.swift:179:14:179:14 | x | (parent:Inner).TSubOuter | nested_types.swift:178:16:178:24 | TSubOuter | -| nested_types.swift:179:14:179:14 | x | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:180:19:180:19 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:180:19:180:19 | x | (parent:Inner) | nested_types.swift:178:1:183:1 | SubOuter | -| nested_types.swift:180:19:180:19 | x | (parent:Inner).TSubOuter | nested_types.swift:178:16:178:24 | TSubOuter | -| nested_types.swift:180:19:180:19 | x | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:185:54:185:57 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | -| nested_types.swift:193:5:193:13 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:193:5:193:13 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:193:5:193:13 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:193:5:193:13 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:194:11:194:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:194:11:194:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:194:11:194:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:194:11:194:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:195:11:195:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:195:11:195:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:195:11:195:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:195:11:195:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:205:13:205:13 | x | | nested_types.swift:204:5:206:5 | Node.Leaf | -| nested_types.swift:205:13:205:13 | x | (parent:Leaf) | nested_types.swift:203:1:207:1 | Node | -| nested_types.swift:221:11:221:11 | x | | nested_types.swift:215:1:224:1 | Box | -| nested_types.swift:221:11:221:11 | x | T | {EXTERNAL LOCATION} | Int | -| nested_types.swift:222:11:222:11 | y | | nested_types.swift:215:1:224:1 | Box | -| nested_types.swift:222:11:222:11 | y | T | nested_types.swift:215:11:215:11 | T | -| nested_types.swift:228:10:228:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:228:10:228:10 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:228:10:228:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:228:10:228:10 | x | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:232:10:232:10 | x | | {EXTERNAL LOCATION} | String | -| nested_types.swift:238:10:238:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:238:10:238:10 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:238:10:238:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:238:10:238:10 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:238:35:238:35 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:238:35:238:35 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:238:35:238:35 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:238:35:238:35 | y | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:239:13:239:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:239:13:239:13 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:239:13:239:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:239:13:239:13 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:240:13:240:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:240:13:240:13 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:240:13:240:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:240:13:240:13 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:241:13:241:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:241:13:241:13 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:241:13:241:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:241:13:241:13 | y | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:242:13:242:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:242:13:242:13 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:242:13:242:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:242:13:242:13 | y | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:247:10:247:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:247:10:247:10 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:248:17:248:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:248:17:248:17 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:249:17:249:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:249:17:249:17 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:109:13:109:13 | p | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:109:13:109:13 | p | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:109:13:109:13 | p | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:109:13:109:13 | p | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:109:13:109:13 | p | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:110:21:110:21 | p | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:110:21:110:21 | p | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:110:21:110:21 | p | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:110:21:110:21 | p | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:110:21:110:21 | p | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:111:21:111:21 | p | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:111:21:111:21 | p | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:111:21:111:21 | p | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:111:21:111:21 | p | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:111:21:111:21 | p | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:115:29:115:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:115:29:115:33 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:115:29:115:33 | inner | (parent:Inner).TOuter | nested_types.swift:115:19:115:20 | Ta | +| nested_types.swift:115:29:115:33 | inner | TInner | nested_types.swift:115:23:115:24 | Tb | +| nested_types.swift:116:12:116:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:12:116:16 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:116:12:116:16 | inner | (parent:Inner).TOuter | nested_types.swift:115:19:115:20 | Ta | +| nested_types.swift:116:12:116:16 | inner | TInner | nested_types.swift:115:23:115:24 | Tb | +| nested_types.swift:119:29:119:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:119:29:119:33 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:119:29:119:33 | inner | (parent:Inner).TOuter | nested_types.swift:119:19:119:20 | Ta | +| nested_types.swift:119:29:119:33 | inner | TInner | nested_types.swift:119:23:119:24 | Tb | +| nested_types.swift:120:12:120:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:120:12:120:16 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:120:12:120:16 | inner | (parent:Inner).TOuter | nested_types.swift:119:19:119:20 | Ta | +| nested_types.swift:120:12:120:16 | inner | TInner | nested_types.swift:119:23:119:24 | Tb | +| nested_types.swift:167:13:167:16 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | +| nested_types.swift:167:13:167:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:167:13:167:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:167:13:167:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:167:13:167:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:168:13:168:16 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | +| nested_types.swift:168:13:168:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:168:13:168:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:168:13:168:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:168:13:168:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:172:20:172:23 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | +| nested_types.swift:172:20:172:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:172:20:172:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:172:20:172:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:172:20:172:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:176:20:176:23 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | +| nested_types.swift:176:20:176:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:176:20:176:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:176:20:176:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:176:20:176:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:186:14:186:14 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:186:14:186:14 | x | (parent:Inner) | nested_types.swift:185:1:190:1 | SubOuter | +| nested_types.swift:186:14:186:14 | x | (parent:Inner).TSubOuter | nested_types.swift:185:16:185:24 | TSubOuter | +| nested_types.swift:186:14:186:14 | x | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:187:19:187:19 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:187:19:187:19 | x | (parent:Inner) | nested_types.swift:185:1:190:1 | SubOuter | +| nested_types.swift:187:19:187:19 | x | (parent:Inner).TSubOuter | nested_types.swift:185:16:185:24 | TSubOuter | +| nested_types.swift:187:19:187:19 | x | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:192:54:192:57 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| nested_types.swift:200:5:200:13 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:200:5:200:13 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:200:5:200:13 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:200:5:200:13 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:201:11:201:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:201:11:201:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:201:11:201:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:201:11:201:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:202:11:202:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:202:11:202:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:202:11:202:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:202:11:202:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:212:13:212:13 | x | | nested_types.swift:211:5:213:5 | Node.Leaf | +| nested_types.swift:212:13:212:13 | x | (parent:Leaf) | nested_types.swift:210:1:214:1 | Node | +| nested_types.swift:228:11:228:11 | x | | nested_types.swift:222:1:231:1 | Box | +| nested_types.swift:228:11:228:11 | x | T | {EXTERNAL LOCATION} | Int | +| nested_types.swift:229:11:229:11 | y | | nested_types.swift:222:1:231:1 | Box | +| nested_types.swift:229:11:229:11 | y | T | nested_types.swift:222:11:222:11 | T | +| nested_types.swift:235:10:235:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:235:10:235:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:235:10:235:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:235:10:235:10 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:239:10:239:10 | x | | {EXTERNAL LOCATION} | String | +| nested_types.swift:245:10:245:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:245:10:245:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:245:10:245:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:245:10:245:10 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:245:35:245:35 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:245:35:245:35 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:245:35:245:35 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:245:35:245:35 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:246:13:246:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:246:13:246:13 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:246:13:246:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:246:13:246:13 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:247:13:247:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:247:13:247:13 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:247:13:247:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:247:13:247:13 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:248:13:248:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:248:13:248:13 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:248:13:248:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:248:13:248:13 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:249:13:249:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:249:13:249:13 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:249:13:249:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:249:13:249:13 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:254:10:254:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:254:10:254:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:254:10:254:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:254:10:254:10 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:255:17:255:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:255:17:255:17 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:255:17:255:17 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:255:17:255:17 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:256:17:256:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:256:17:256:17 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:256:17:256:17 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:256:17:256:17 | x | TInner | {EXTERNAL LOCATION} | Bool | | overload_resolution.swift:4:17:4:17 | x | | {EXTERNAL LOCATION} | Int | | overload_resolution.swift:8:17:8:17 | x | | {EXTERNAL LOCATION} | Double | | overload_resolution.swift:12:17:12:17 | x | | {EXTERNAL LOCATION} | String | @@ -2317,14 +2338,14 @@ inferType | nested_types.swift:18:54:22:9 | Block | | nested_types.swift:1:1:11:1 | Base | | nested_types.swift:18:54:22:9 | Block | TBase | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:19:13:19:16 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:19:13:19:16 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:19:13:19:16 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:19:13:19:16 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:19:13:19:16 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:19:13:19:27 | ... .innerValue | | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:19:13:19:40 | ... = ... | | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:19:31:19:40 | innerValue | | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:20:13:20:16 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:20:13:20:16 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:20:13:20:16 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:20:13:20:16 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:20:13:20:16 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:20:13:20:27 | ... .outerValue | | nested_types.swift:13:13:13:18 | TOuter | @@ -2339,644 +2360,673 @@ inferType | nested_types.swift:25:24:25:64 | "Convenience initializer not implemented" | | {EXTERNAL LOCATION} | String | | nested_types.swift:28:35:30:9 | Block | | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:29:20:29:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:29:20:29:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:29:20:29:23 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:29:20:29:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:29:20:29:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:29:20:29:34 | ... .innerValue | | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:32:35:34:9 | Block | | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:33:20:33:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:33:20:33:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:33:20:33:23 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:33:20:33:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:33:20:33:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:33:20:33:34 | ... .outerValue | | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:36:52:38:9 | Block | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:36:52:38:9 | Block | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:36:52:38:9 | Block | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:36:52:38:9 | Block | (parent:Inner).TOuter | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:36:52:38:9 | Block | TInner | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:37:20:37:38 | ... .Inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:37:20:37:38 | ... .Inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:37:20:37:38 | ... .Inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:37:20:37:38 | ... .Inner | (parent:Inner).TOuter | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:37:20:37:38 | ... .Inner | TInner | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:37:20:37:96 | ... .Inner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:37:20:37:96 | ... .Inner(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:37:20:37:96 | ... .Inner(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:37:20:37:96 | ... .Inner(...) | (parent:Inner).TOuter | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:37:20:37:96 | ... .Inner(...) | TInner | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:37:52:37:55 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:37:52:37:55 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:37:52:37:55 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:37:52:37:55 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:37:52:37:55 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:37:52:37:66 | ... .outerValue | | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:37:81:37:84 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:37:81:37:84 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:37:81:37:84 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:37:81:37:84 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:37:81:37:84 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:37:81:37:95 | ... .innerValue | | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:40:42:42:9 | Block | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:40:42:42:9 | Block | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:40:42:42:9 | Block | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:40:42:42:9 | Block | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:40:42:42:9 | Block | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:41:20:41:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:41:20:41:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:41:20:41:23 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:41:20:41:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:41:20:41:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:44:34:46:9 | Block | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:44:34:46:9 | Block | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:44:34:46:9 | Block | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:44:34:46:9 | Block | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:44:34:46:9 | Block | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:45:20:45:23 | self | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:45:20:45:23 | self | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:45:20:45:23 | self | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:45:20:45:23 | self | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:45:20:45:23 | self | TInner | nested_types.swift:14:17:14:22 | TInner | | nested_types.swift:51:29:51:38 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:51:63:53:5 | Block | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:51:63:53:5 | Block | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:51:63:53:5 | Block | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:51:63:53:5 | Block | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:51:63:53:5 | Block | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:52:16:52:20 | Inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:52:16:52:20 | Inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:52:16:52:20 | Inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:52:16:52:20 | Inner | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:52:16:52:20 | Inner | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:52:16:52:59 | Inner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:52:16:52:59 | Inner(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:52:16:52:59 | Inner(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:52:16:52:59 | Inner(...) | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:52:16:52:59 | Inner(...) | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:52:34:52:34 | 0 | | {EXTERNAL LOCATION} | Int | | nested_types.swift:52:49:52:58 | outerValue | | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:59:14:59:14 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:59:14:59:14 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:59:14:59:14 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:59:14:59:14 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:59:14:59:14 | x | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:63:14:63:14 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:63:14:63:14 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:63:14:63:14 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:63:14:63:14 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | | nested_types.swift:63:14:63:14 | y | TInner | {EXTERNAL LOCATION} | String | | nested_types.swift:63:26:63:26 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:63:26:63:26 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:63:26:63:26 | z | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:63:26:63:26 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | | nested_types.swift:63:26:63:26 | z | TInner | {EXTERNAL LOCATION} | String | | nested_types.swift:64:13:64:17 | outer | | {EXTERNAL LOCATION} | Int | | nested_types.swift:64:21:64:21 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:64:21:64:21 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:64:21:64:21 | z | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:64:21:64:21 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | | nested_types.swift:64:21:64:21 | z | TInner | {EXTERNAL LOCATION} | String | | nested_types.swift:64:21:64:32 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | | nested_types.swift:65:13:65:17 | inner | | {EXTERNAL LOCATION} | String | | nested_types.swift:65:21:65:21 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:65:21:65:21 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:65:21:65:21 | z | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:65:21:65:21 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | | nested_types.swift:65:21:65:21 | z | TInner | {EXTERNAL LOCATION} | String | | nested_types.swift:65:21:65:32 | ... .getInner(...) | | {EXTERNAL LOCATION} | String | | nested_types.swift:77:9:77:9 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:77:9:77:9 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:77:9:77:9 | z | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:77:9:77:9 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:77:9:77:9 | z | TInner | {EXTERNAL LOCATION} | Bool | | nested_types.swift:78:9:78:9 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:78:9:78:9 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:78:9:78:9 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:78:9:78:9 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:78:9:78:9 | y | TInner | {EXTERNAL LOCATION} | Bool | | nested_types.swift:80:13:80:13 | a | | {EXTERNAL LOCATION} | Bool | | nested_types.swift:80:17:80:17 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:80:17:80:17 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:80:17:80:17 | z | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:80:17:80:17 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:80:17:80:17 | z | TInner | {EXTERNAL LOCATION} | Bool | | nested_types.swift:80:17:80:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | | nested_types.swift:81:13:81:13 | b | | {EXTERNAL LOCATION} | String | | nested_types.swift:81:17:81:17 | z | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:81:17:81:17 | z | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:81:17:81:17 | z | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:81:17:81:17 | z | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:81:17:81:17 | z | TInner | {EXTERNAL LOCATION} | Bool | | nested_types.swift:81:17:81:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | | nested_types.swift:82:13:82:13 | c | | {EXTERNAL LOCATION} | Bool | | nested_types.swift:82:17:82:17 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:82:17:82:17 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:82:17:82:17 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:82:17:82:17 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:82:17:82:17 | y | TInner | {EXTERNAL LOCATION} | Bool | | nested_types.swift:82:17:82:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | | nested_types.swift:83:13:83:13 | d | | {EXTERNAL LOCATION} | String | | nested_types.swift:83:17:83:17 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:83:17:83:17 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:83:17:83:17 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:83:17:83:17 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:83:17:83:17 | y | TInner | {EXTERNAL LOCATION} | Bool | | nested_types.swift:83:17:83:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | | nested_types.swift:88:12:88:17 | fixed2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:88:12:88:17 | fixed2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:88:12:88:17 | fixed2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:88:12:88:17 | fixed2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:88:12:88:17 | fixed2 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:89:13:89:13 | a | | {EXTERNAL LOCATION} | Int | | nested_types.swift:89:17:89:22 | fixed2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:89:17:89:22 | fixed2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:89:17:89:22 | fixed2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:89:17:89:22 | fixed2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:89:17:89:22 | fixed2 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:89:17:89:33 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | | nested_types.swift:90:13:90:13 | b | | {EXTERNAL LOCATION} | String | | nested_types.swift:90:17:90:22 | fixed2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:90:17:90:22 | fixed2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:90:17:90:22 | fixed2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:90:17:90:22 | fixed2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:90:17:90:22 | fixed2 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:90:17:90:33 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | | nested_types.swift:95:12:95:12 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:95:12:95:12 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:95:12:95:12 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:95:12:95:12 | x | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:95:12:95:12 | x | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:96:13:96:17 | outer | | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:96:21:96:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:96:21:96:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:96:21:96:21 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:96:21:96:21 | x | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:96:21:96:21 | x | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:96:21:96:32 | ... .getOuter(...) | | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:97:13:97:17 | inner | | {EXTERNAL LOCATION} | Int | | nested_types.swift:97:21:97:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:97:21:97:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:97:21:97:21 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:97:21:97:21 | x | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:97:21:97:21 | x | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:97:21:97:32 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | | nested_types.swift:102:13:102:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:102:13:102:13 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:102:13:102:13 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:102:13:102:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:102:13:102:13 | x | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:103:13:103:17 | outer | | {EXTERNAL LOCATION} | String | | nested_types.swift:103:21:103:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:103:21:103:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:103:21:103:21 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:103:21:103:21 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:103:21:103:21 | x | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:103:21:103:32 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | | nested_types.swift:104:13:104:17 | inner | | {EXTERNAL LOCATION} | Int | | nested_types.swift:104:21:104:21 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:104:21:104:21 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | +| nested_types.swift:104:21:104:21 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:104:21:104:21 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:104:21:104:21 | x | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:104:21:104:32 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:108:29:108:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:108:29:108:33 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:108:29:108:33 | inner | (parent:Inner).TOuter | nested_types.swift:108:19:108:20 | Ta | -| nested_types.swift:108:29:108:33 | inner | TInner | nested_types.swift:108:23:108:24 | Tb | -| nested_types.swift:108:63:110:1 | Block | | nested_types.swift:108:23:108:24 | Tb | -| nested_types.swift:109:12:109:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:109:12:109:16 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:109:12:109:16 | inner | (parent:Inner).TOuter | nested_types.swift:108:19:108:20 | Ta | -| nested_types.swift:109:12:109:16 | inner | TInner | nested_types.swift:108:23:108:24 | Tb | -| nested_types.swift:109:12:109:27 | ... .getInner(...) | | nested_types.swift:108:23:108:24 | Tb | -| nested_types.swift:112:29:112:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:112:29:112:33 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:112:29:112:33 | inner | (parent:Inner).TOuter | nested_types.swift:112:19:112:20 | Ta | -| nested_types.swift:112:29:112:33 | inner | TInner | nested_types.swift:112:23:112:24 | Tb | -| nested_types.swift:112:63:114:1 | Block | | nested_types.swift:112:19:112:20 | Ta | -| nested_types.swift:113:12:113:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:113:12:113:16 | inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:113:12:113:16 | inner | (parent:Inner).TOuter | nested_types.swift:112:19:112:20 | Ta | -| nested_types.swift:113:12:113:16 | inner | TInner | nested_types.swift:112:23:112:24 | Tb | -| nested_types.swift:113:12:113:27 | ... .getOuter(...) | | nested_types.swift:112:19:112:20 | Ta | -| nested_types.swift:116:5:116:10 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:116:5:116:10 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:116:5:116:10 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:116:5:116:10 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:116:14:116:24 | ... .Inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:116:14:116:24 | ... .Inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:116:14:116:24 | ... .Inner | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:116:14:116:24 | ... .Inner | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:116:14:116:56 | ... .Inner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:116:14:116:56 | ... .Inner(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:116:14:116:56 | ... .Inner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:116:14:116:56 | ... .Inner(...) | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:116:38:116:39 | 42 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:116:54:116:55 | "" | | {EXTERNAL LOCATION} | String | -| nested_types.swift:117:5:117:7 | x1a | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:117:11:117:16 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:117:11:117:16 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:117:11:117:16 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:117:11:117:16 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:117:11:117:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:118:5:118:7 | x1b | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:118:11:118:30 | extractInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:118:24:118:29 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:118:24:118:29 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:118:24:118:29 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:118:24:118:29 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:119:5:119:7 | y1a | | {EXTERNAL LOCATION} | String | -| nested_types.swift:119:11:119:16 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:119:11:119:16 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:119:11:119:16 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:119:11:119:16 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:119:11:119:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:120:5:120:7 | y1b | | {EXTERNAL LOCATION} | String | -| nested_types.swift:120:11:120:30 | extractOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:120:24:120:29 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:120:24:120:29 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:120:24:120:29 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:120:24:120:29 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:121:5:121:6 | b1 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:121:10:121:15 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:121:10:121:15 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:121:10:121:15 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:121:10:121:15 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:121:10:121:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:123:5:123:10 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:123:5:123:10 | inner2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:123:5:123:10 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:123:5:123:10 | inner2 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:123:14:123:32 | ... .Inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:123:14:123:32 | ... .Inner | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:123:14:123:32 | ... .Inner | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:123:14:123:32 | ... .Inner | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:123:14:123:48 | ... .Inner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:123:14:123:48 | ... .Inner(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:123:14:123:48 | ... .Inner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:123:14:123:48 | ... .Inner(...) | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:123:46:123:47 | 42 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:124:5:124:7 | x2a | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:124:11:124:16 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:124:11:124:16 | inner2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:124:11:124:16 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:124:11:124:16 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:109:13:109:13 | p | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:109:13:109:13 | p | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:109:13:109:13 | p | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:109:13:109:13 | p | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:109:13:109:13 | p | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:110:21:110:21 | p | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:110:21:110:21 | p | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:110:21:110:21 | p | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:110:21:110:21 | p | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:110:21:110:21 | p | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:110:21:110:23 | ... .0 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:110:21:110:23 | ... .0 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:111:13:111:17 | inner | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:111:21:111:21 | p | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:111:21:111:21 | p | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:111:21:111:21 | p | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:111:21:111:21 | p | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:111:21:111:21 | p | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:111:21:111:23 | ... .0 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:111:21:111:23 | ... .0 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:111:21:111:34 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:115:29:115:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:115:29:115:33 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:115:29:115:33 | inner | (parent:Inner).TOuter | nested_types.swift:115:19:115:20 | Ta | +| nested_types.swift:115:29:115:33 | inner | TInner | nested_types.swift:115:23:115:24 | Tb | +| nested_types.swift:115:63:117:1 | Block | | nested_types.swift:115:23:115:24 | Tb | +| nested_types.swift:116:12:116:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:12:116:16 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:116:12:116:16 | inner | (parent:Inner).TOuter | nested_types.swift:115:19:115:20 | Ta | +| nested_types.swift:116:12:116:16 | inner | TInner | nested_types.swift:115:23:115:24 | Tb | +| nested_types.swift:116:12:116:27 | ... .getInner(...) | | nested_types.swift:115:23:115:24 | Tb | +| nested_types.swift:119:29:119:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:119:29:119:33 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:119:29:119:33 | inner | (parent:Inner).TOuter | nested_types.swift:119:19:119:20 | Ta | +| nested_types.swift:119:29:119:33 | inner | TInner | nested_types.swift:119:23:119:24 | Tb | +| nested_types.swift:119:63:121:1 | Block | | nested_types.swift:119:19:119:20 | Ta | +| nested_types.swift:120:12:120:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:120:12:120:16 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:120:12:120:16 | inner | (parent:Inner).TOuter | nested_types.swift:119:19:119:20 | Ta | +| nested_types.swift:120:12:120:16 | inner | TInner | nested_types.swift:119:23:119:24 | Tb | +| nested_types.swift:120:12:120:27 | ... .getOuter(...) | | nested_types.swift:119:19:119:20 | Ta | +| nested_types.swift:123:5:123:10 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:123:5:123:10 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:123:5:123:10 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:123:5:123:10 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:123:14:123:24 | ... .Inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:123:14:123:24 | ... .Inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:123:14:123:24 | ... .Inner | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:123:14:123:24 | ... .Inner | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:123:14:123:56 | ... .Inner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:123:14:123:56 | ... .Inner(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:123:14:123:56 | ... .Inner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:123:14:123:56 | ... .Inner(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:123:38:123:39 | 42 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:123:54:123:55 | "" | | {EXTERNAL LOCATION} | String | +| nested_types.swift:124:5:124:7 | x1a | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:124:11:124:16 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:124:11:124:16 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:124:11:124:16 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:124:11:124:16 | inner1 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:124:11:124:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:125:5:125:7 | x2b | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:125:5:125:7 | x1b | | {EXTERNAL LOCATION} | Int | | nested_types.swift:125:11:125:30 | extractInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:125:24:125:29 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:125:24:125:29 | inner2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:125:24:125:29 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:125:24:125:29 | inner2 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:126:5:126:7 | y2a | | {EXTERNAL LOCATION} | String | -| nested_types.swift:126:11:126:16 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:126:11:126:16 | inner2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:126:11:126:16 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:126:11:126:16 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:125:24:125:29 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:125:24:125:29 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:125:24:125:29 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:125:24:125:29 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:126:5:126:7 | y1a | | {EXTERNAL LOCATION} | String | +| nested_types.swift:126:11:126:16 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:126:11:126:16 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:126:11:126:16 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:126:11:126:16 | inner1 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:126:11:126:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:127:5:127:7 | y2b | | {EXTERNAL LOCATION} | String | +| nested_types.swift:127:5:127:7 | y1b | | {EXTERNAL LOCATION} | String | | nested_types.swift:127:11:127:30 | extractOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:127:24:127:29 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:127:24:127:29 | inner2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:127:24:127:29 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:127:24:127:29 | inner2 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:128:5:128:6 | b2 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:128:10:128:15 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:128:10:128:15 | inner2 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:128:10:128:15 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:128:10:128:15 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:127:24:127:29 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:127:24:127:29 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:127:24:127:29 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:127:24:127:29 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:128:5:128:6 | b1 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:128:10:128:15 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:128:10:128:15 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:128:10:128:15 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:128:10:128:15 | inner1 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:128:10:128:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:130:5:130:11 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:130:5:130:11 | swapped | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:130:5:130:11 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:130:5:130:11 | swapped | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:130:15:130:20 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:130:15:130:20 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:130:15:130:20 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:130:15:130:20 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:130:15:130:27 | ... .swap(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:130:15:130:27 | ... .swap(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:130:15:130:27 | ... .swap(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:130:15:130:27 | ... .swap(...) | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:131:5:131:6 | x3 | | {EXTERNAL LOCATION} | String | -| nested_types.swift:131:10:131:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:131:10:131:16 | swapped | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:131:10:131:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:131:10:131:16 | swapped | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:131:10:131:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:132:5:132:6 | y3 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:132:10:132:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:132:10:132:16 | swapped | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:132:10:132:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:132:10:132:16 | swapped | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:132:10:132:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:133:5:133:6 | b3 | | {EXTERNAL LOCATION} | String | -| nested_types.swift:133:10:133:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:133:10:133:16 | swapped | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:133:10:133:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:133:10:133:16 | swapped | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:133:10:133:26 | ... .getBase(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:135:5:135:10 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:135:5:135:10 | inner4 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:135:5:135:10 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:135:5:135:10 | inner4 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:135:14:135:19 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:135:14:135:19 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:135:14:135:19 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:135:14:135:19 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:135:14:135:30 | ... .getSelf1(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:135:14:135:30 | ... .getSelf1(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:135:14:135:30 | ... .getSelf1(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:135:14:135:30 | ... .getSelf1(...) | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:136:5:136:6 | x4 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:136:10:136:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:136:10:136:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:136:10:136:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:136:10:136:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:136:10:136:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:137:5:137:6 | y4 | | {EXTERNAL LOCATION} | String | -| nested_types.swift:137:10:137:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:137:10:137:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:137:10:137:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:137:10:137:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:137:10:137:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:138:5:138:6 | b4 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:138:10:138:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:138:10:138:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:138:10:138:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:138:10:138:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:138:10:138:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:140:5:140:10 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:140:5:140:10 | inner5 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:140:5:140:10 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:140:5:140:10 | inner5 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:140:14:140:19 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:140:14:140:19 | inner1 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:140:14:140:19 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:140:14:140:19 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:140:14:140:30 | ... .getSelf2(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:140:14:140:30 | ... .getSelf2(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:140:14:140:30 | ... .getSelf2(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:140:14:140:30 | ... .getSelf2(...) | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:141:5:141:6 | x5 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:141:10:141:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:141:10:141:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:141:10:141:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:141:10:141:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:141:10:141:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:142:5:142:6 | y5 | | {EXTERNAL LOCATION} | String | -| nested_types.swift:142:10:142:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:142:10:142:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:142:10:142:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:142:10:142:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:142:10:142:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:143:5:143:6 | b5 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:143:10:143:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:143:10:143:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:143:10:143:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:143:10:143:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:143:10:143:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:145:5:145:10 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:145:5:145:10 | inner6 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:145:5:145:10 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:145:5:145:10 | inner6 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:145:14:145:49 | ... .createInner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:145:14:145:49 | ... .createInner(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:145:14:145:49 | ... .createInner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:145:14:145:49 | ... .createInner(...) | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:145:44:145:48 | false | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:146:5:146:6 | x6 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:146:10:146:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:146:10:146:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:146:10:146:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:146:10:146:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:146:10:146:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:147:5:147:6 | y6 | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:147:10:147:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:147:10:147:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:147:10:147:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:147:10:147:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:147:10:147:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:148:5:148:6 | b6 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:148:10:148:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:148:10:148:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:148:10:148:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:148:10:148:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:148:10:148:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:150:5:150:10 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:150:5:150:10 | inner7 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:150:5:150:10 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:150:5:150:10 | inner7 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:150:14:150:29 | ... .InnerAlias | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:150:14:150:29 | ... .InnerAlias | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:150:14:150:29 | ... .InnerAlias | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:150:14:150:29 | ... .InnerAlias | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:150:14:150:63 | ... .InnerAlias(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:150:14:150:63 | ... .InnerAlias(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:150:14:150:63 | ... .InnerAlias(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:150:14:150:63 | ... .InnerAlias(...) | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:150:43:150:43 | 0 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:150:58:150:62 | false | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:151:5:151:7 | x11 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:151:11:151:16 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:151:11:151:16 | inner7 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:151:11:151:16 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:151:11:151:16 | inner7 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:151:11:151:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:152:5:152:7 | y11 | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:152:11:152:16 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:152:11:152:16 | inner7 | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:152:11:152:16 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:152:11:152:16 | inner7 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:152:11:152:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:160:13:160:16 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | -| nested_types.swift:160:13:160:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:160:13:160:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:160:13:160:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:160:13:160:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:161:13:161:16 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | -| nested_types.swift:161:13:161:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:161:13:161:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:161:13:161:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:161:13:161:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:165:20:165:23 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | -| nested_types.swift:165:20:165:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:165:20:165:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:165:20:165:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:165:20:165:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:169:20:169:23 | self | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | -| nested_types.swift:169:20:169:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:169:20:169:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:169:20:169:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:169:20:169:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:174:5:174:13 | innerMost | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | -| nested_types.swift:174:5:174:13 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:174:5:174:13 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:174:17:174:37 | ... .InnerMost | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | -| nested_types.swift:174:17:174:37 | ... .InnerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:174:17:174:37 | ... .InnerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:174:17:174:51 | ... .InnerMost(...) | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | -| nested_types.swift:174:17:174:51 | ... .InnerMost(...) | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:174:17:174:51 | ... .InnerMost(...) | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:174:42:174:43 | "" | | {EXTERNAL LOCATION} | String | -| nested_types.swift:174:49:174:50 | 42 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:175:10:175:18 | innerMost | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | -| nested_types.swift:175:10:175:18 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:175:10:175:18 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:176:10:176:18 | innerMost | | nested_types.swift:155:5:171:5 | Outer.Inner.InnerMost | -| nested_types.swift:176:10:176:18 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:176:10:176:18 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:179:14:179:14 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:179:14:179:14 | x | (parent:Inner) | nested_types.swift:178:1:183:1 | SubOuter | -| nested_types.swift:179:14:179:14 | x | (parent:Inner).TSubOuter | nested_types.swift:178:16:178:24 | TSubOuter | -| nested_types.swift:179:14:179:14 | x | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:180:19:180:19 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:180:19:180:19 | x | (parent:Inner) | nested_types.swift:178:1:183:1 | SubOuter | -| nested_types.swift:180:19:180:19 | x | (parent:Inner).TSubOuter | nested_types.swift:178:16:178:24 | TSubOuter | -| nested_types.swift:180:19:180:19 | x | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:185:5:185:12 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:185:5:185:12 | subOuter | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:185:5:185:12 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | -| nested_types.swift:185:5:185:12 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | -| nested_types.swift:185:5:185:12 | subOuter | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:185:16:185:58 | ... .createInner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:185:16:185:58 | ... .createInner(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:185:16:185:58 | ... .createInner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | -| nested_types.swift:185:16:185:58 | ... .createInner(...) | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | -| nested_types.swift:185:16:185:58 | ... .createInner(...) | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:185:54:185:57 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | -| nested_types.swift:185:54:185:57 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | -| nested_types.swift:185:55:185:56 | 42 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:186:5:186:6 | x8 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:186:10:186:17 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:186:10:186:17 | subOuter | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:186:10:186:17 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | -| nested_types.swift:186:10:186:17 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | -| nested_types.swift:186:10:186:17 | subOuter | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:186:10:186:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:187:5:187:6 | y8 | | {EXTERNAL LOCATION} | Array | -| nested_types.swift:187:5:187:6 | y8 | Element | {EXTERNAL LOCATION} | Int | -| nested_types.swift:187:10:187:17 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:187:10:187:17 | subOuter | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:187:10:187:17 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | -| nested_types.swift:187:10:187:17 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | -| nested_types.swift:187:10:187:17 | subOuter | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:187:10:187:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Array | -| nested_types.swift:187:10:187:28 | ... .getOuter(...) | Element | {EXTERNAL LOCATION} | Int | -| nested_types.swift:189:5:189:12 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:189:5:189:12 | subInner | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:189:5:189:12 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:189:5:189:12 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:189:16:189:29 | ... .SubInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:189:16:189:29 | ... .SubInner | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:189:16:189:29 | ... .SubInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:189:16:189:29 | ... .SubInner | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:189:16:189:62 | ... .SubInner(...) | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:189:16:189:62 | ... .SubInner(...) | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:189:16:189:62 | ... .SubInner(...) | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:189:16:189:62 | ... .SubInner(...) | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:189:43:189:46 | true | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:189:61:189:61 | 0 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:190:5:190:6 | x9 | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:190:10:190:17 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:190:10:190:17 | subInner | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:190:10:190:17 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:190:10:190:17 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:190:10:190:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:191:5:191:6 | y9 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:191:10:191:17 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:191:10:191:17 | subInner | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:191:10:191:17 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:191:10:191:17 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:191:10:191:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:193:5:193:13 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:193:5:193:13 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:193:5:193:13 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:193:5:193:13 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:193:46:193:59 | ... .SubInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:193:46:193:59 | ... .SubInner | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:193:46:193:59 | ... .SubInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:193:46:193:59 | ... .SubInner | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:193:46:193:74 | ... .SubInner(...) | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:193:46:193:74 | ... .SubInner(...) | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:193:46:193:74 | ... .SubInner(...) | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:193:46:193:74 | ... .SubInner(...) | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:193:73:193:73 | 1 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:194:5:194:7 | x12 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:194:11:194:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:194:11:194:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:194:11:194:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:194:11:194:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:194:11:194:30 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:195:5:195:7 | y12 | | {EXTERNAL LOCATION} | String | -| nested_types.swift:195:11:195:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:195:11:195:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:195:11:195:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:195:11:195:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:195:11:195:30 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:199:5:199:19 | subInnerOutside | | nested_types.swift:197:1:197:70 | SubInnerOutside | -| nested_types.swift:199:5:199:19 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:199:23:199:37 | SubInnerOutside | | nested_types.swift:197:1:197:70 | SubInnerOutside | -| nested_types.swift:199:23:199:37 | SubInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:199:23:199:74 | SubInnerOutside(...) | | nested_types.swift:197:1:197:70 | SubInnerOutside | -| nested_types.swift:199:23:199:74 | SubInnerOutside(...) | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:199:51:199:54 | true | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:199:69:199:73 | false | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:200:5:200:7 | x10 | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:200:11:200:25 | subInnerOutside | | nested_types.swift:197:1:197:70 | SubInnerOutside | -| nested_types.swift:200:11:200:25 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:200:11:200:36 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:201:5:201:7 | y10 | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:201:11:201:25 | subInnerOutside | | nested_types.swift:197:1:197:70 | SubInnerOutside | -| nested_types.swift:201:11:201:25 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:201:11:201:36 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:205:13:205:13 | x | | nested_types.swift:204:5:206:5 | Node.Leaf | -| nested_types.swift:205:13:205:13 | x | (parent:Leaf) | nested_types.swift:203:1:207:1 | Node | -| nested_types.swift:205:23:205:26 | Leaf | | nested_types.swift:204:5:206:5 | Node.Leaf | -| nested_types.swift:205:23:205:26 | Leaf | (parent:Leaf) | nested_types.swift:203:1:207:1 | Node | -| nested_types.swift:205:23:205:28 | Leaf(...) | | nested_types.swift:204:5:206:5 | Node.Leaf | -| nested_types.swift:205:23:205:28 | Leaf(...) | (parent:Leaf) | nested_types.swift:203:1:207:1 | Node | -| nested_types.swift:211:5:211:10 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:211:5:211:10 | holder | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:211:5:211:10 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:211:5:211:10 | holder | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:211:14:211:25 | ... .Fixed | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:211:14:211:25 | ... .Fixed | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:211:14:211:25 | ... .Fixed | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:211:14:211:25 | ... .Fixed | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:211:14:211:41 | ... .Fixed(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:211:14:211:41 | ... .Fixed(...) | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:211:14:211:41 | ... .Fixed(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:211:14:211:41 | ... .Fixed(...) | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:211:39:211:40 | "" | | {EXTERNAL LOCATION} | String | -| nested_types.swift:212:5:212:7 | x13 | | {EXTERNAL LOCATION} | String | -| nested_types.swift:212:11:212:16 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:212:11:212:16 | holder | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:212:11:212:16 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:212:11:212:16 | holder | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:212:11:212:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:213:5:213:7 | y13 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:213:11:213:16 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:213:11:213:16 | holder | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:213:11:213:16 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:213:11:213:16 | holder | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:213:11:213:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:221:11:221:11 | x | | nested_types.swift:215:1:224:1 | Box | -| nested_types.swift:221:11:221:11 | x | T | {EXTERNAL LOCATION} | Int | -| nested_types.swift:222:11:222:11 | y | | nested_types.swift:215:1:224:1 | Box | -| nested_types.swift:222:11:222:11 | y | T | nested_types.swift:215:11:215:11 | T | -| nested_types.swift:228:10:228:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:228:10:228:10 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:228:10:228:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:228:10:228:10 | x | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:232:10:232:10 | x | | {EXTERNAL LOCATION} | String | -| nested_types.swift:238:10:238:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:238:10:238:10 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:238:10:238:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:238:10:238:10 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:238:35:238:35 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:238:35:238:35 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:238:35:238:35 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:238:35:238:35 | y | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:239:9:239:9 | a | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:239:13:239:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:239:13:239:13 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:239:13:239:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:239:13:239:13 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:239:13:239:24 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:240:9:240:9 | b | | {EXTERNAL LOCATION} | String | -| nested_types.swift:240:13:240:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:240:13:240:13 | x | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:240:13:240:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:240:13:240:13 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:240:13:240:24 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:241:9:241:9 | c | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:241:13:241:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:241:13:241:13 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:241:13:241:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:241:13:241:13 | y | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:241:13:241:24 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:242:9:242:9 | d | | {EXTERNAL LOCATION} | String | -| nested_types.swift:242:13:242:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:242:13:242:13 | y | (parent:Inner) | nested_types.swift:13:1:106:1 | Outer | -| nested_types.swift:242:13:242:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:242:13:242:13 | y | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:242:13:242:24 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:247:10:247:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:247:10:247:10 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:248:17:248:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:248:17:248:17 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:249:9:249:13 | inner | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:249:17:249:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:249:17:249:17 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:249:17:249:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:130:5:130:10 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:130:5:130:10 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:130:5:130:10 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:130:5:130:10 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:130:14:130:32 | ... .Inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:130:14:130:32 | ... .Inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:130:14:130:32 | ... .Inner | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:130:14:130:32 | ... .Inner | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:130:14:130:48 | ... .Inner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:130:14:130:48 | ... .Inner(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:130:14:130:48 | ... .Inner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:130:14:130:48 | ... .Inner(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:130:46:130:47 | 42 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:131:5:131:7 | x2a | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:131:11:131:16 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:131:11:131:16 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:131:11:131:16 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:131:11:131:16 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:131:11:131:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:132:5:132:7 | x2b | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:132:11:132:30 | extractInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:132:24:132:29 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:132:24:132:29 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:132:24:132:29 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:132:24:132:29 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:133:5:133:7 | y2a | | {EXTERNAL LOCATION} | String | +| nested_types.swift:133:11:133:16 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:133:11:133:16 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:133:11:133:16 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:133:11:133:16 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:133:11:133:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:134:5:134:7 | y2b | | {EXTERNAL LOCATION} | String | +| nested_types.swift:134:11:134:30 | extractOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:134:24:134:29 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:134:24:134:29 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:134:24:134:29 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:134:24:134:29 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:135:5:135:6 | b2 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:135:10:135:15 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:135:10:135:15 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:135:10:135:15 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:135:10:135:15 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:135:10:135:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:137:5:137:11 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:137:5:137:11 | swapped | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:137:5:137:11 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:137:5:137:11 | swapped | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:137:15:137:20 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:137:15:137:20 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:137:15:137:20 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:137:15:137:20 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:137:15:137:27 | ... .swap(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:137:15:137:27 | ... .swap(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:137:15:137:27 | ... .swap(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:137:15:137:27 | ... .swap(...) | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:138:5:138:6 | x3 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:138:10:138:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:138:10:138:16 | swapped | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:138:10:138:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:138:10:138:16 | swapped | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:138:10:138:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:139:5:139:6 | y3 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:139:10:139:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:139:10:139:16 | swapped | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:139:10:139:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:139:10:139:16 | swapped | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:139:10:139:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:140:5:140:6 | b3 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:140:10:140:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:140:10:140:16 | swapped | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:140:10:140:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:140:10:140:16 | swapped | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:140:10:140:26 | ... .getBase(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:142:5:142:10 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:142:5:142:10 | inner4 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:142:5:142:10 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:142:5:142:10 | inner4 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:142:14:142:19 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:142:14:142:19 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:142:14:142:19 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:142:14:142:19 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:142:14:142:30 | ... .getSelf1(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:142:14:142:30 | ... .getSelf1(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:142:14:142:30 | ... .getSelf1(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:142:14:142:30 | ... .getSelf1(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:143:5:143:6 | x4 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:143:10:143:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:143:10:143:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:143:10:143:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:143:10:143:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:143:10:143:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:144:5:144:6 | y4 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:144:10:144:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:144:10:144:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:144:10:144:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:144:10:144:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:144:10:144:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:145:5:145:6 | b4 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:145:10:145:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:145:10:145:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:145:10:145:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:145:10:145:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:145:10:145:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:147:5:147:10 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:147:5:147:10 | inner5 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:147:5:147:10 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:147:5:147:10 | inner5 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:147:14:147:19 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:147:14:147:19 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:147:14:147:19 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:147:14:147:19 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:147:14:147:30 | ... .getSelf2(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:147:14:147:30 | ... .getSelf2(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:147:14:147:30 | ... .getSelf2(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:147:14:147:30 | ... .getSelf2(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:148:5:148:6 | x5 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:148:10:148:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:148:10:148:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:148:10:148:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:148:10:148:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:148:10:148:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:149:5:149:6 | y5 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:149:10:149:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:149:10:149:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:149:10:149:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:149:10:149:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:149:10:149:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:150:5:150:6 | b5 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:150:10:150:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:150:10:150:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:150:10:150:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:150:10:150:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:150:10:150:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:152:5:152:10 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:152:5:152:10 | inner6 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:152:5:152:10 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:152:5:152:10 | inner6 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:152:14:152:49 | ... .createInner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:152:14:152:49 | ... .createInner(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:152:14:152:49 | ... .createInner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:152:14:152:49 | ... .createInner(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:152:44:152:48 | false | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:153:5:153:6 | x6 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:153:10:153:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:153:10:153:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:153:10:153:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:153:10:153:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:153:10:153:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:154:5:154:6 | y6 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:154:10:154:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:154:10:154:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:154:10:154:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:154:10:154:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:154:10:154:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:155:5:155:6 | b6 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:155:10:155:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:155:10:155:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:155:10:155:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:155:10:155:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:155:10:155:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:157:5:157:10 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:157:5:157:10 | inner7 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:157:5:157:10 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:157:5:157:10 | inner7 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:157:14:157:29 | ... .InnerAlias | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:157:14:157:29 | ... .InnerAlias | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:157:14:157:29 | ... .InnerAlias | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:157:14:157:29 | ... .InnerAlias | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:157:14:157:63 | ... .InnerAlias(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:157:14:157:63 | ... .InnerAlias(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:157:14:157:63 | ... .InnerAlias(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:157:14:157:63 | ... .InnerAlias(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:157:43:157:43 | 0 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:157:58:157:62 | false | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:158:5:158:7 | x11 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:158:11:158:16 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:158:11:158:16 | inner7 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:158:11:158:16 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:158:11:158:16 | inner7 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:158:11:158:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:159:5:159:7 | y11 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:159:11:159:16 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:159:11:159:16 | inner7 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:159:11:159:16 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:159:11:159:16 | inner7 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:159:11:159:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:167:13:167:16 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | +| nested_types.swift:167:13:167:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:167:13:167:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:167:13:167:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:167:13:167:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:168:13:168:16 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | +| nested_types.swift:168:13:168:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:168:13:168:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:168:13:168:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:168:13:168:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:172:20:172:23 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | +| nested_types.swift:172:20:172:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:172:20:172:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:172:20:172:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:172:20:172:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:176:20:176:23 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | +| nested_types.swift:176:20:176:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:176:20:176:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:176:20:176:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:176:20:176:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:181:5:181:13 | innerMost | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | +| nested_types.swift:181:5:181:13 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:181:5:181:13 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:181:17:181:37 | ... .InnerMost | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | +| nested_types.swift:181:17:181:37 | ... .InnerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:181:17:181:37 | ... .InnerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:181:17:181:51 | ... .InnerMost(...) | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | +| nested_types.swift:181:17:181:51 | ... .InnerMost(...) | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:181:17:181:51 | ... .InnerMost(...) | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:181:42:181:43 | "" | | {EXTERNAL LOCATION} | String | +| nested_types.swift:181:49:181:50 | 42 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:182:10:182:18 | innerMost | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | +| nested_types.swift:182:10:182:18 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:182:10:182:18 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:183:10:183:18 | innerMost | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | +| nested_types.swift:183:10:183:18 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:183:10:183:18 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:186:14:186:14 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:186:14:186:14 | x | (parent:Inner) | nested_types.swift:185:1:190:1 | SubOuter | +| nested_types.swift:186:14:186:14 | x | (parent:Inner).TSubOuter | nested_types.swift:185:16:185:24 | TSubOuter | +| nested_types.swift:186:14:186:14 | x | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:187:19:187:19 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:187:19:187:19 | x | (parent:Inner) | nested_types.swift:185:1:190:1 | SubOuter | +| nested_types.swift:187:19:187:19 | x | (parent:Inner).TSubOuter | nested_types.swift:185:16:185:24 | TSubOuter | +| nested_types.swift:187:19:187:19 | x | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:192:5:192:12 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:192:5:192:12 | subOuter | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:192:5:192:12 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | +| nested_types.swift:192:5:192:12 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:192:5:192:12 | subOuter | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:192:16:192:58 | ... .createInner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:192:16:192:58 | ... .createInner(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:192:16:192:58 | ... .createInner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | +| nested_types.swift:192:16:192:58 | ... .createInner(...) | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:192:16:192:58 | ... .createInner(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:192:54:192:57 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| nested_types.swift:192:54:192:57 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:192:55:192:56 | 42 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:193:5:193:6 | x8 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:193:10:193:17 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:193:10:193:17 | subOuter | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:193:10:193:17 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | +| nested_types.swift:193:10:193:17 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:193:10:193:17 | subOuter | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:193:10:193:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:194:5:194:6 | y8 | | {EXTERNAL LOCATION} | Array | +| nested_types.swift:194:5:194:6 | y8 | Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:194:10:194:17 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:194:10:194:17 | subOuter | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:194:10:194:17 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | +| nested_types.swift:194:10:194:17 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:194:10:194:17 | subOuter | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:194:10:194:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Array | +| nested_types.swift:194:10:194:28 | ... .getOuter(...) | Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:196:5:196:12 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:196:5:196:12 | subInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:196:5:196:12 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:196:5:196:12 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:196:16:196:29 | ... .SubInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:196:16:196:29 | ... .SubInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:196:16:196:29 | ... .SubInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:196:16:196:29 | ... .SubInner | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:196:16:196:62 | ... .SubInner(...) | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:196:16:196:62 | ... .SubInner(...) | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:196:16:196:62 | ... .SubInner(...) | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:196:16:196:62 | ... .SubInner(...) | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:196:43:196:46 | true | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:196:61:196:61 | 0 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:197:5:197:6 | x9 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:197:10:197:17 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:197:10:197:17 | subInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:197:10:197:17 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:197:10:197:17 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:197:10:197:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:198:5:198:6 | y9 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:198:10:198:17 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:198:10:198:17 | subInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:198:10:198:17 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:198:10:198:17 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:198:10:198:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:200:5:200:13 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:200:5:200:13 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:200:5:200:13 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:200:5:200:13 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:200:46:200:59 | ... .SubInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:200:46:200:59 | ... .SubInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:200:46:200:59 | ... .SubInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:200:46:200:59 | ... .SubInner | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:200:46:200:74 | ... .SubInner(...) | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:200:46:200:74 | ... .SubInner(...) | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:200:46:200:74 | ... .SubInner(...) | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:200:46:200:74 | ... .SubInner(...) | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:200:73:200:73 | 1 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:201:5:201:7 | x12 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:201:11:201:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:201:11:201:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:201:11:201:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:201:11:201:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:201:11:201:30 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:202:5:202:7 | y12 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:202:11:202:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:202:11:202:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:202:11:202:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:202:11:202:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:202:11:202:30 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:206:5:206:19 | subInnerOutside | | nested_types.swift:204:1:204:70 | SubInnerOutside | +| nested_types.swift:206:5:206:19 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:206:23:206:37 | SubInnerOutside | | nested_types.swift:204:1:204:70 | SubInnerOutside | +| nested_types.swift:206:23:206:37 | SubInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:206:23:206:74 | SubInnerOutside(...) | | nested_types.swift:204:1:204:70 | SubInnerOutside | +| nested_types.swift:206:23:206:74 | SubInnerOutside(...) | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:206:51:206:54 | true | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:206:69:206:73 | false | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:207:5:207:7 | x10 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:207:11:207:25 | subInnerOutside | | nested_types.swift:204:1:204:70 | SubInnerOutside | +| nested_types.swift:207:11:207:25 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:207:11:207:36 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:208:5:208:7 | y10 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:208:11:208:25 | subInnerOutside | | nested_types.swift:204:1:204:70 | SubInnerOutside | +| nested_types.swift:208:11:208:25 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:208:11:208:36 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:212:13:212:13 | x | | nested_types.swift:211:5:213:5 | Node.Leaf | +| nested_types.swift:212:13:212:13 | x | (parent:Leaf) | nested_types.swift:210:1:214:1 | Node | +| nested_types.swift:212:23:212:26 | Leaf | | nested_types.swift:211:5:213:5 | Node.Leaf | +| nested_types.swift:212:23:212:26 | Leaf | (parent:Leaf) | nested_types.swift:210:1:214:1 | Node | +| nested_types.swift:212:23:212:28 | Leaf(...) | | nested_types.swift:211:5:213:5 | Node.Leaf | +| nested_types.swift:212:23:212:28 | Leaf(...) | (parent:Leaf) | nested_types.swift:210:1:214:1 | Node | +| nested_types.swift:218:5:218:10 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:218:5:218:10 | holder | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:218:5:218:10 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:218:5:218:10 | holder | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:218:14:218:25 | ... .Fixed | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:218:14:218:25 | ... .Fixed | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:218:14:218:25 | ... .Fixed | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:218:14:218:25 | ... .Fixed | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:218:14:218:41 | ... .Fixed(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:218:14:218:41 | ... .Fixed(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:218:14:218:41 | ... .Fixed(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:218:14:218:41 | ... .Fixed(...) | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:218:39:218:40 | "" | | {EXTERNAL LOCATION} | String | +| nested_types.swift:219:5:219:7 | x13 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:219:11:219:16 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:219:11:219:16 | holder | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:219:11:219:16 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:219:11:219:16 | holder | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:219:11:219:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:220:5:220:7 | y13 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:220:11:220:16 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:220:11:220:16 | holder | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:220:11:220:16 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:220:11:220:16 | holder | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:220:11:220:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:228:11:228:11 | x | | nested_types.swift:222:1:231:1 | Box | +| nested_types.swift:228:11:228:11 | x | T | {EXTERNAL LOCATION} | Int | +| nested_types.swift:229:11:229:11 | y | | nested_types.swift:222:1:231:1 | Box | +| nested_types.swift:229:11:229:11 | y | T | nested_types.swift:222:11:222:11 | T | +| nested_types.swift:235:10:235:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:235:10:235:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:235:10:235:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:235:10:235:10 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:239:10:239:10 | x | | {EXTERNAL LOCATION} | String | +| nested_types.swift:245:10:245:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:245:10:245:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:245:10:245:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:245:10:245:10 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:245:35:245:35 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:245:35:245:35 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:245:35:245:35 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:245:35:245:35 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:246:9:246:9 | a | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:246:13:246:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:246:13:246:13 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:246:13:246:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:246:13:246:13 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:246:13:246:24 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:247:9:247:9 | b | | {EXTERNAL LOCATION} | String | +| nested_types.swift:247:13:247:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:247:13:247:13 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:247:13:247:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:247:13:247:13 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:247:13:247:24 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:248:9:248:9 | c | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:248:13:248:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:248:13:248:13 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:248:13:248:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:248:13:248:13 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:248:13:248:24 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:249:9:249:9 | d | | {EXTERNAL LOCATION} | String | +| nested_types.swift:249:13:249:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:249:13:249:13 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:249:13:249:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:249:13:249:13 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:249:13:249:24 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:254:10:254:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:254:10:254:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:254:10:254:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:254:10:254:10 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:255:9:255:13 | outer | | {EXTERNAL LOCATION} | String | +| nested_types.swift:255:17:255:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:255:17:255:17 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:255:17:255:17 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:255:17:255:17 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:255:17:255:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:256:9:256:13 | inner | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:256:17:256:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:256:17:256:17 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:256:17:256:17 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:256:17:256:17 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:256:17:256:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | | overload_resolution.swift:4:17:4:17 | x | | {EXTERNAL LOCATION} | Int | | overload_resolution.swift:4:35:6:3 | Block | | {EXTERNAL LOCATION} | String | | overload_resolution.swift:5:12:5:16 | "int" | | {EXTERNAL LOCATION} | String | From ddae01ca7602cb7a212fc94a81e103ca1c9c58bd Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 26 Oct 2026 21:50:13 +0100 Subject: [PATCH 3/4] wip2 --- .../unified/internal/typeinference/Type.qll | 14 + .../TypeInferenceConsistency.qll | 5 + .../internal/typeinference/TypeMention.qll | 45 +- .../type-inference/nested_types.swift | 9 + .../type-inference/type-inference.expected | 1222 +++++++++-------- 5 files changed, 708 insertions(+), 587 deletions(-) diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/Type.qll b/unified/ql/lib/codeql/unified/internal/typeinference/Type.qll index 3d826390564c..4c0d105c9554 100644 --- a/unified/ql/lib/codeql/unified/internal/typeinference/Type.qll +++ b/unified/ql/lib/codeql/unified/internal/typeinference/Type.qll @@ -165,6 +165,8 @@ class ClosureParameterPseudoType extends PseudoType, TClosureParameterPseudoType /** A type parameter. */ abstract class TypeParameter extends TypeImpl { + abstract AstNode getScope(); + override TypeParameter getPositionalTypeParameter(int i) { none() } abstract AstNode getDeclaringItem(); @@ -187,6 +189,12 @@ class TypeParameterType extends TypeParameter, TTypeParameterType { Unified::TypeParameter getTypeParameter() { result = typeParam } + override AstNode getScope() { + result = typeParam.getParent() + or + result.(ClassLikeDeclaration).resolve().getEnclosingClassResolved*() = typeParam.getParent() + } + override ClassLikeDeclaration getDeclaringItem() { typeParam = result.getATypeParameter() } override Identifier getNameNode() { result = typeParam.getNameNode() } @@ -208,6 +216,8 @@ class AssociatedTypeParameterType extends TypeParameter, TAssociatedTypeParamete Unified::AssociatedTypeDeclaration getAssociatedTypeDeclaration() { result = assocTypeDecl } + override AstNode getScope() { result.(ClassLikeDeclaration).resolve() = c } + override ClassLikeDeclaration getDeclaringItem() { result = c } override Identifier getNameNode() { result = assocTypeDecl.getNameNode() } @@ -233,6 +243,8 @@ class ParentTypeParameterType extends TypeParameter, TParentTypeParameterType { ClassLikeDeclaration getParent() { isNestedType(c, result) } + override AstNode getScope() { none() } + override ClassLikeDeclaration getDeclaringItem() { result = c } override Identifier getNameNode() { none() } @@ -250,6 +262,8 @@ class UnknownTypeTypeParameter extends TypeParameter, TUnknownTypeTypeParameter UnknownTypeTypeParameter() { this = TUnknownTypeTypeParameter(i) } + override AstNode getScope() { none() } + override AstNode getDeclaringItem() { none() } override Identifier getNameNode() { none() } diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll index 2253419c1ab6..3c2ee0d2dc2c 100644 --- a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll @@ -18,3 +18,8 @@ query predicate nonUniqueCertainType(AstNode n, TypePath path) { Consistency::nonUniqueCertainType(n, path) and n.fromSource() } + +query predicate typeParameterEscape(AstNode n, TypePath path, TypeParameter tp) { + tp = inferType(n, path) and + forex(AstNode scope | tp.getScope() = scope | not n.getParent*() = scope) +} diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll index 1e13b943f678..a3e70ac0cdf0 100644 --- a/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll @@ -5,10 +5,18 @@ private import TypeInferencePlugin as Plugin private import codeql.unified.internal.StaticNameBinding private import codeql.unified.internal.ExprPositions +// private predicate isTypeParameterAlias(TypeAliasDeclaration alias, int i) { +// exists(Unified::TypeParameter tp | +// tp = alias.getTypeParameter(i) and +// tp.getNameNode() = getTypeFromRef(alias.getType()) +// ) +// } final class TypeMention = TypeMentionImpl; /** An AST node that mentions a type. */ abstract private class TypeMentionImpl extends AstNode { + abstract TypeMention resolve(); + /** * Gets the type mentioned at the root of this type mention. * @@ -131,15 +139,13 @@ abstract private class ExprTypeMentionImpl extends TypeMentionImpl, Expr { pragma[nomagic] private ClassLikeDeclaration getQualifierTypeAt(TypePath path) { result = - this.getParentQualifier().getTypeAt(path).(ClassLikeDeclarationType).getClassLikeDeclaration() + this.getParentQualifier().getTypeAt(path).(ClassLikeDeclarationType).getClassLikeDeclaration() and + forall(TypeParameter tp | tp = path.getElement(_) | tp instanceof ParentTypeParameterType) } pragma[nomagic] - private predicate isNestedClass( - ClassLikeDeclaration cls, ParentTypeParameterType tp, ClassLikeDeclaration parent - ) { - cls = this.getClassLikeDeclaration() and - tp = TParentTypeParameterType(cls) and + private predicate isNestedClass(ParentTypeParameterType tp, ClassLikeDeclaration parent) { + tp = TParentTypeParameterType(this.getClassLikeDeclaration()) and parent = tp.getParent() } @@ -149,12 +155,9 @@ abstract private class ExprTypeMentionImpl extends TypeMentionImpl, Expr { result = this.getTypeAtImpl(path) or // A mention of a nested type with an explicit qualifier - exists( - TypeMention qualifier, ClassLikeDeclaration cls, ParentTypeParameterType tp, TypePath prefix, - TypePath suffix - | + exists(TypeMention qualifier, ParentTypeParameterType tp, TypePath prefix, TypePath suffix | qualifier = this.getParentQualifier() and - this.isNestedClass(cls, tp, this.getQualifierTypeAt(prefix)) and + this.isNestedClass(tp, this.getQualifierTypeAt(prefix)) and path = TypePath::cons(tp, suffix) and result = qualifier.getTypeAt(prefix.appendInverse(suffix)) ) @@ -188,7 +191,11 @@ abstract private class ExprTypeMentionImpl extends TypeMentionImpl, Expr { pragma[nomagic] private ClassLikeDeclaration getImplicitEnclosingCand(ParentTypeParameterType tp) { not this.hasParentQualifier() and - not this.getParent*() = any(TypeAliasDeclaration alias).getType() and + not exists(TypeAliasDeclaration alias | + this.getParent*() = alias.getType() //and + // not this.getParent*() = any(GenericTypeExpr g).getATypeArgument() and + // not this.getParent*() = any(TupleExpr t).getAnElement() + ) and tp = TParentTypeParameterType(this.getClassLikeDeclaration()) and result = this.getEnclosingClassResolved+() } @@ -233,6 +240,8 @@ class AliasExprTypeMention extends ExprTypeMentionImpl { ) } + override TypeMention resolve() { result = this } + override TypeMention getAlias() { result = alias.getType() } override Type getType() { result = alias.getType().(TypeMention).getType() } @@ -350,6 +359,8 @@ private class NonAliasExprTypeMention extends ExprTypeMentionImpl { ) } + override TypeMention resolve() { result = this } + override TypeMention getAlias() { none() } } @@ -382,6 +393,16 @@ private class GenericTypeExprTypeMention extends TypeMentionImpl, GenericTypeExp ) } + override TypeMention resolve() { + exists(int i | + this.getBase().(AliasExprTypeMention).isTypeParameterAlias(i) and + result = this.getTypeArgument(i).(TypeMention).resolve() + ) + or + base = this.getBase() and + result = this + } + override Type getType() { result = base.getType() } override TypeMention getAParentQualifierCand() { result = base.getAParentQualifierCand() } diff --git a/unified/ql/test/library-tests/type-inference/nested_types.swift b/unified/ql/test/library-tests/type-inference/nested_types.swift index 6a6eb81e29fc..2079e41ee272 100644 --- a/unified/ql/test/library-tests/type-inference/nested_types.swift +++ b/unified/ql/test/library-tests/type-inference/nested_types.swift @@ -112,6 +112,15 @@ class Outer { } } +class Foo: Outer { + func f(x: Pair, y: Outer.Pair) { + var a = x.0.getInner() // $ target=Outer.Inner.getInner field=Tuple2.0 type=a:Int + var b = x.0.getOuter() // $ target=Outer.Inner.getOuter field=Tuple2.0 $ MISSING: type=b:String + var c = y.0.getInner() // $ target=Outer.Inner.getInner field=Tuple2.0 type=c:Int + var d = y.0.getOuter() // $ target=Outer.Inner.getOuter field=Tuple2.0 $ MISSING: type=d:Bool + } +} + func extractInner(_ inner: Outer.Inner) -> Tb { return inner.getInner() // $ target=Outer.Inner.getInner } diff --git a/unified/ql/test/library-tests/type-inference/type-inference.expected b/unified/ql/test/library-tests/type-inference/type-inference.expected index ac055d369a3d..ae35e312a436 100644 --- a/unified/ql/test/library-tests/type-inference/type-inference.expected +++ b/unified/ql/test/library-tests/type-inference/type-inference.expected @@ -513,110 +513,140 @@ inferCertainType | nested_types.swift:111:21:111:21 | p | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:111:21:111:21 | p | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | | nested_types.swift:111:21:111:21 | p | T1.TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:115:29:115:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:115:29:115:33 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:115:29:115:33 | inner | (parent:Inner).TOuter | nested_types.swift:115:19:115:20 | Ta | -| nested_types.swift:115:29:115:33 | inner | TInner | nested_types.swift:115:23:115:24 | Tb | -| nested_types.swift:116:12:116:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:116:12:116:16 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:116:12:116:16 | inner | (parent:Inner).TOuter | nested_types.swift:115:19:115:20 | Ta | -| nested_types.swift:116:12:116:16 | inner | TInner | nested_types.swift:115:23:115:24 | Tb | -| nested_types.swift:119:29:119:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:119:29:119:33 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:119:29:119:33 | inner | (parent:Inner).TOuter | nested_types.swift:119:19:119:20 | Ta | -| nested_types.swift:119:29:119:33 | inner | TInner | nested_types.swift:119:23:119:24 | Tb | -| nested_types.swift:120:12:120:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:120:12:120:16 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:120:12:120:16 | inner | (parent:Inner).TOuter | nested_types.swift:119:19:119:20 | Ta | -| nested_types.swift:120:12:120:16 | inner | TInner | nested_types.swift:119:23:119:24 | Tb | -| nested_types.swift:167:13:167:16 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | -| nested_types.swift:167:13:167:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:167:13:167:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:167:13:167:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:167:13:167:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:168:13:168:16 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | -| nested_types.swift:168:13:168:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:168:13:168:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:168:13:168:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:168:13:168:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:172:20:172:23 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | -| nested_types.swift:172:20:172:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:172:20:172:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:172:20:172:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:172:20:172:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:176:20:176:23 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | -| nested_types.swift:176:20:176:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:176:20:176:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:176:20:176:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:176:20:176:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:186:14:186:14 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:186:14:186:14 | x | (parent:Inner) | nested_types.swift:185:1:190:1 | SubOuter | -| nested_types.swift:186:14:186:14 | x | (parent:Inner).TSubOuter | nested_types.swift:185:16:185:24 | TSubOuter | -| nested_types.swift:186:14:186:14 | x | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:187:19:187:19 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:187:19:187:19 | x | (parent:Inner) | nested_types.swift:185:1:190:1 | SubOuter | -| nested_types.swift:187:19:187:19 | x | (parent:Inner).TSubOuter | nested_types.swift:185:16:185:24 | TSubOuter | -| nested_types.swift:187:19:187:19 | x | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:192:54:192:57 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | -| nested_types.swift:200:5:200:13 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:200:5:200:13 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:200:5:200:13 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:200:5:200:13 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:201:11:201:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:201:11:201:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:201:11:201:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:201:11:201:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:202:11:202:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:202:11:202:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:202:11:202:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:202:11:202:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:212:13:212:13 | x | | nested_types.swift:211:5:213:5 | Node.Leaf | -| nested_types.swift:212:13:212:13 | x | (parent:Leaf) | nested_types.swift:210:1:214:1 | Node | -| nested_types.swift:228:11:228:11 | x | | nested_types.swift:222:1:231:1 | Box | -| nested_types.swift:228:11:228:11 | x | T | {EXTERNAL LOCATION} | Int | -| nested_types.swift:229:11:229:11 | y | | nested_types.swift:222:1:231:1 | Box | -| nested_types.swift:229:11:229:11 | y | T | nested_types.swift:222:11:222:11 | T | -| nested_types.swift:235:10:235:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:235:10:235:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:235:10:235:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:235:10:235:10 | x | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:239:10:239:10 | x | | {EXTERNAL LOCATION} | String | -| nested_types.swift:245:10:245:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:245:10:245:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:245:10:245:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:245:10:245:10 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:245:35:245:35 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:245:35:245:35 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:245:35:245:35 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:245:35:245:35 | y | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:246:13:246:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:246:13:246:13 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:246:13:246:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:246:13:246:13 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:247:13:247:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:247:13:247:13 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:247:13:247:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:247:13:247:13 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:248:13:248:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:248:13:248:13 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:248:13:248:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:248:13:248:13 | y | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:249:13:249:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:249:13:249:13 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:249:13:249:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:249:13:249:13 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:116:12:116:12 | x | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:116:12:116:12 | x | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:12:116:12 | x | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:116:12:116:12 | x | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:12:116:12 | x | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:116:21:116:21 | y | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:116:21:116:21 | y | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:21:116:21 | y | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:116:21:116:21 | y | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:21:116:21 | y | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:117:17:117:17 | x | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:117:17:117:17 | x | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:117:17:117:17 | x | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:117:17:117:17 | x | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:117:17:117:17 | x | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:118:17:118:17 | x | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:118:17:118:17 | x | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:118:17:118:17 | x | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:118:17:118:17 | x | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:118:17:118:17 | x | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:119:17:119:17 | y | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:119:17:119:17 | y | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:119:17:119:17 | y | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:119:17:119:17 | y | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:119:17:119:17 | y | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:120:17:120:17 | y | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:120:17:120:17 | y | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:120:17:120:17 | y | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:120:17:120:17 | y | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:120:17:120:17 | y | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:124:29:124:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:124:29:124:33 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:124:29:124:33 | inner | (parent:Inner).TOuter | nested_types.swift:124:19:124:20 | Ta | +| nested_types.swift:124:29:124:33 | inner | TInner | nested_types.swift:124:23:124:24 | Tb | +| nested_types.swift:125:12:125:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:125:12:125:16 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:125:12:125:16 | inner | (parent:Inner).TOuter | nested_types.swift:124:19:124:20 | Ta | +| nested_types.swift:125:12:125:16 | inner | TInner | nested_types.swift:124:23:124:24 | Tb | +| nested_types.swift:128:29:128:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:128:29:128:33 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:128:29:128:33 | inner | (parent:Inner).TOuter | nested_types.swift:128:19:128:20 | Ta | +| nested_types.swift:128:29:128:33 | inner | TInner | nested_types.swift:128:23:128:24 | Tb | +| nested_types.swift:129:12:129:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:129:12:129:16 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:129:12:129:16 | inner | (parent:Inner).TOuter | nested_types.swift:128:19:128:20 | Ta | +| nested_types.swift:129:12:129:16 | inner | TInner | nested_types.swift:128:23:128:24 | Tb | +| nested_types.swift:176:13:176:16 | self | | nested_types.swift:171:5:187:5 | Outer.Inner.InnerMost | +| nested_types.swift:176:13:176:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:176:13:176:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:176:13:176:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:176:13:176:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:177:13:177:16 | self | | nested_types.swift:171:5:187:5 | Outer.Inner.InnerMost | +| nested_types.swift:177:13:177:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:177:13:177:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:177:13:177:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:177:13:177:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:181:20:181:23 | self | | nested_types.swift:171:5:187:5 | Outer.Inner.InnerMost | +| nested_types.swift:181:20:181:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:181:20:181:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:181:20:181:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:181:20:181:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:185:20:185:23 | self | | nested_types.swift:171:5:187:5 | Outer.Inner.InnerMost | +| nested_types.swift:185:20:185:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:185:20:185:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:185:20:185:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:185:20:185:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:195:14:195:14 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:195:14:195:14 | x | (parent:Inner) | nested_types.swift:194:1:199:1 | SubOuter | +| nested_types.swift:195:14:195:14 | x | (parent:Inner).TSubOuter | nested_types.swift:194:16:194:24 | TSubOuter | +| nested_types.swift:195:14:195:14 | x | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:196:19:196:19 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:196:19:196:19 | x | (parent:Inner) | nested_types.swift:194:1:199:1 | SubOuter | +| nested_types.swift:196:19:196:19 | x | (parent:Inner).TSubOuter | nested_types.swift:194:16:194:24 | TSubOuter | +| nested_types.swift:196:19:196:19 | x | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:201:54:201:57 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| nested_types.swift:209:5:209:13 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:209:5:209:13 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:209:5:209:13 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:209:5:209:13 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:210:11:210:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:210:11:210:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:210:11:210:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:210:11:210:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:211:11:211:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:211:11:211:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:211:11:211:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:211:11:211:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:221:13:221:13 | x | | nested_types.swift:220:5:222:5 | Node.Leaf | +| nested_types.swift:221:13:221:13 | x | (parent:Leaf) | nested_types.swift:219:1:223:1 | Node | +| nested_types.swift:237:11:237:11 | x | | nested_types.swift:231:1:240:1 | Box | +| nested_types.swift:237:11:237:11 | x | T | {EXTERNAL LOCATION} | Int | +| nested_types.swift:238:11:238:11 | y | | nested_types.swift:231:1:240:1 | Box | +| nested_types.swift:238:11:238:11 | y | T | nested_types.swift:231:11:231:11 | T | +| nested_types.swift:244:10:244:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:244:10:244:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:244:10:244:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:244:10:244:10 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:248:10:248:10 | x | | {EXTERNAL LOCATION} | String | | nested_types.swift:254:10:254:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | | nested_types.swift:254:10:254:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:254:10:254:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:254:10:254:10 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:255:17:255:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:255:17:255:17 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:255:17:255:17 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:255:17:255:17 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:256:17:256:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:256:17:256:17 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:256:17:256:17 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:256:17:256:17 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:254:35:254:35 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:254:35:254:35 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:254:35:254:35 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:254:35:254:35 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:255:13:255:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:255:13:255:13 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:255:13:255:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:255:13:255:13 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:256:13:256:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:256:13:256:13 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:256:13:256:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:256:13:256:13 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:257:13:257:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:257:13:257:13 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:257:13:257:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:257:13:257:13 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:258:13:258:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:258:13:258:13 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:258:13:258:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:258:13:258:13 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:263:10:263:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:263:10:263:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:263:10:263:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:263:10:263:10 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:264:17:264:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:264:17:264:17 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:264:17:264:17 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:264:17:264:17 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:265:17:265:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:265:17:265:17 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:265:17:265:17 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:265:17:265:17 | x | TInner | {EXTERNAL LOCATION} | Bool | | overload_resolution.swift:4:17:4:17 | x | | {EXTERNAL LOCATION} | Int | | overload_resolution.swift:8:17:8:17 | x | | {EXTERNAL LOCATION} | Double | | overload_resolution.swift:12:17:12:17 | x | | {EXTERNAL LOCATION} | String | @@ -2548,485 +2578,527 @@ inferType | nested_types.swift:111:21:111:23 | ... .0 | | nested_types.swift:14:5:47:5 | Outer.Inner | | nested_types.swift:111:21:111:23 | ... .0 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:111:21:111:34 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:115:29:115:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:115:29:115:33 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:115:29:115:33 | inner | (parent:Inner).TOuter | nested_types.swift:115:19:115:20 | Ta | -| nested_types.swift:115:29:115:33 | inner | TInner | nested_types.swift:115:23:115:24 | Tb | -| nested_types.swift:115:63:117:1 | Block | | nested_types.swift:115:23:115:24 | Tb | -| nested_types.swift:116:12:116:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:116:12:116:16 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:116:12:116:16 | inner | (parent:Inner).TOuter | nested_types.swift:115:19:115:20 | Ta | -| nested_types.swift:116:12:116:16 | inner | TInner | nested_types.swift:115:23:115:24 | Tb | -| nested_types.swift:116:12:116:27 | ... .getInner(...) | | nested_types.swift:115:23:115:24 | Tb | -| nested_types.swift:119:29:119:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:119:29:119:33 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:119:29:119:33 | inner | (parent:Inner).TOuter | nested_types.swift:119:19:119:20 | Ta | -| nested_types.swift:119:29:119:33 | inner | TInner | nested_types.swift:119:23:119:24 | Tb | -| nested_types.swift:119:63:121:1 | Block | | nested_types.swift:119:19:119:20 | Ta | -| nested_types.swift:120:12:120:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:120:12:120:16 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:120:12:120:16 | inner | (parent:Inner).TOuter | nested_types.swift:119:19:119:20 | Ta | -| nested_types.swift:120:12:120:16 | inner | TInner | nested_types.swift:119:23:119:24 | Tb | -| nested_types.swift:120:12:120:27 | ... .getOuter(...) | | nested_types.swift:119:19:119:20 | Ta | -| nested_types.swift:123:5:123:10 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:123:5:123:10 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:123:5:123:10 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:123:5:123:10 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:123:14:123:24 | ... .Inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:123:14:123:24 | ... .Inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:123:14:123:24 | ... .Inner | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:123:14:123:24 | ... .Inner | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:123:14:123:56 | ... .Inner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:123:14:123:56 | ... .Inner(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:123:14:123:56 | ... .Inner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:123:14:123:56 | ... .Inner(...) | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:123:38:123:39 | 42 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:123:54:123:55 | "" | | {EXTERNAL LOCATION} | String | -| nested_types.swift:124:5:124:7 | x1a | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:124:11:124:16 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:124:11:124:16 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:124:11:124:16 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:124:11:124:16 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:124:11:124:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:125:5:125:7 | x1b | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:125:11:125:30 | extractInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:125:24:125:29 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:125:24:125:29 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:125:24:125:29 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:125:24:125:29 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:126:5:126:7 | y1a | | {EXTERNAL LOCATION} | String | -| nested_types.swift:126:11:126:16 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:126:11:126:16 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:126:11:126:16 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:126:11:126:16 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:126:11:126:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:127:5:127:7 | y1b | | {EXTERNAL LOCATION} | String | -| nested_types.swift:127:11:127:30 | extractOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:127:24:127:29 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:127:24:127:29 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:127:24:127:29 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:127:24:127:29 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:128:5:128:6 | b1 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:128:10:128:15 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:128:10:128:15 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:128:10:128:15 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:128:10:128:15 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:128:10:128:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:130:5:130:10 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:130:5:130:10 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:130:5:130:10 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:130:5:130:10 | inner2 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:130:14:130:32 | ... .Inner | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:130:14:130:32 | ... .Inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:130:14:130:32 | ... .Inner | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:130:14:130:32 | ... .Inner | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:130:14:130:48 | ... .Inner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:130:14:130:48 | ... .Inner(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:130:14:130:48 | ... .Inner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:130:14:130:48 | ... .Inner(...) | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:130:46:130:47 | 42 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:131:5:131:7 | x2a | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:131:11:131:16 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:131:11:131:16 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:131:11:131:16 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:131:11:131:16 | inner2 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:131:11:131:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:132:5:132:7 | x2b | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:132:11:132:30 | extractInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:132:24:132:29 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:132:24:132:29 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:132:24:132:29 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:132:24:132:29 | inner2 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:133:5:133:7 | y2a | | {EXTERNAL LOCATION} | String | -| nested_types.swift:133:11:133:16 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:133:11:133:16 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:133:11:133:16 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:133:11:133:16 | inner2 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:133:11:133:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:134:5:134:7 | y2b | | {EXTERNAL LOCATION} | String | -| nested_types.swift:134:11:134:30 | extractOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:134:24:134:29 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:134:24:134:29 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:134:24:134:29 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:134:24:134:29 | inner2 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:135:5:135:6 | b2 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:135:10:135:15 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:135:10:135:15 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:135:10:135:15 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:135:10:135:15 | inner2 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:135:10:135:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:137:5:137:11 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:137:5:137:11 | swapped | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:137:5:137:11 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:137:5:137:11 | swapped | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:137:15:137:20 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:137:15:137:20 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:137:15:137:20 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:137:15:137:20 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:137:15:137:27 | ... .swap(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:137:15:137:27 | ... .swap(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:137:15:137:27 | ... .swap(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:137:15:137:27 | ... .swap(...) | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:138:5:138:6 | x3 | | {EXTERNAL LOCATION} | String | -| nested_types.swift:138:10:138:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:138:10:138:16 | swapped | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:138:10:138:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:138:10:138:16 | swapped | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:138:10:138:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:139:5:139:6 | y3 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:139:10:139:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:139:10:139:16 | swapped | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:139:10:139:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:139:10:139:16 | swapped | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:139:10:139:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:140:5:140:6 | b3 | | {EXTERNAL LOCATION} | String | -| nested_types.swift:140:10:140:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:140:10:140:16 | swapped | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:140:10:140:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:140:10:140:16 | swapped | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:140:10:140:26 | ... .getBase(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:142:5:142:10 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:142:5:142:10 | inner4 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:142:5:142:10 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:142:5:142:10 | inner4 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:142:14:142:19 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:142:14:142:19 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:142:14:142:19 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:142:14:142:19 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:142:14:142:30 | ... .getSelf1(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:142:14:142:30 | ... .getSelf1(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:142:14:142:30 | ... .getSelf1(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:142:14:142:30 | ... .getSelf1(...) | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:143:5:143:6 | x4 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:143:10:143:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:143:10:143:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:143:10:143:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:143:10:143:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:143:10:143:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:144:5:144:6 | y4 | | {EXTERNAL LOCATION} | String | -| nested_types.swift:144:10:144:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:144:10:144:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:144:10:144:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:144:10:144:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:144:10:144:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:145:5:145:6 | b4 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:145:10:145:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:145:10:145:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:145:10:145:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:145:10:145:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:145:10:145:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:147:5:147:10 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:147:5:147:10 | inner5 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:147:5:147:10 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:147:5:147:10 | inner5 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:147:14:147:19 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:147:14:147:19 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:147:14:147:19 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:147:14:147:19 | inner1 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:147:14:147:30 | ... .getSelf2(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:147:14:147:30 | ... .getSelf2(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:147:14:147:30 | ... .getSelf2(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:147:14:147:30 | ... .getSelf2(...) | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:148:5:148:6 | x5 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:148:10:148:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:148:10:148:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:148:10:148:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:148:10:148:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:148:10:148:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:149:5:149:6 | y5 | | {EXTERNAL LOCATION} | String | -| nested_types.swift:149:10:149:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:149:10:149:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:149:10:149:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:149:10:149:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:149:10:149:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:150:5:150:6 | b5 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:150:10:150:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:150:10:150:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:150:10:150:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:150:10:150:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:150:10:150:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:152:5:152:10 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:152:5:152:10 | inner6 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:152:5:152:10 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:152:5:152:10 | inner6 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:152:14:152:49 | ... .createInner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:152:14:152:49 | ... .createInner(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:152:14:152:49 | ... .createInner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:152:14:152:49 | ... .createInner(...) | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:152:44:152:48 | false | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:153:5:153:6 | x6 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:153:10:153:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:153:10:153:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:153:10:153:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:153:10:153:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:153:10:153:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:154:5:154:6 | y6 | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:154:10:154:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:154:10:154:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:154:10:154:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:154:10:154:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:154:10:154:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:155:5:155:6 | b6 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:155:10:155:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:155:10:155:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:155:10:155:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:155:10:155:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:155:10:155:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:157:5:157:10 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:157:5:157:10 | inner7 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:157:5:157:10 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:157:5:157:10 | inner7 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:157:14:157:29 | ... .InnerAlias | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:157:14:157:29 | ... .InnerAlias | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:157:14:157:29 | ... .InnerAlias | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:157:14:157:29 | ... .InnerAlias | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:157:14:157:63 | ... .InnerAlias(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:157:14:157:63 | ... .InnerAlias(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:157:14:157:63 | ... .InnerAlias(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:157:14:157:63 | ... .InnerAlias(...) | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:157:43:157:43 | 0 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:157:58:157:62 | false | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:158:5:158:7 | x11 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:158:11:158:16 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:158:11:158:16 | inner7 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:158:11:158:16 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:158:11:158:16 | inner7 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:158:11:158:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:159:5:159:7 | y11 | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:159:11:159:16 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:159:11:159:16 | inner7 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:159:11:159:16 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:159:11:159:16 | inner7 | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:159:11:159:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:167:13:167:16 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | -| nested_types.swift:167:13:167:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:167:13:167:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:167:13:167:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:167:13:167:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:168:13:168:16 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | -| nested_types.swift:168:13:168:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:168:13:168:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:168:13:168:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:168:13:168:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:172:20:172:23 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | -| nested_types.swift:172:20:172:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:172:20:172:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:172:20:172:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:172:20:172:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:176:20:176:23 | self | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | -| nested_types.swift:176:20:176:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:176:20:176:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:176:20:176:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | -| nested_types.swift:176:20:176:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | -| nested_types.swift:181:5:181:13 | innerMost | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | -| nested_types.swift:181:5:181:13 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:181:5:181:13 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:181:17:181:37 | ... .InnerMost | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | -| nested_types.swift:181:17:181:37 | ... .InnerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:181:17:181:37 | ... .InnerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:181:17:181:51 | ... .InnerMost(...) | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | -| nested_types.swift:181:17:181:51 | ... .InnerMost(...) | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:181:17:181:51 | ... .InnerMost(...) | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:181:42:181:43 | "" | | {EXTERNAL LOCATION} | String | -| nested_types.swift:181:49:181:50 | 42 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:182:10:182:18 | innerMost | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | -| nested_types.swift:182:10:182:18 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:182:10:182:18 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:183:10:183:18 | innerMost | | nested_types.swift:162:5:178:5 | Outer.Inner.InnerMost | -| nested_types.swift:183:10:183:18 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:183:10:183:18 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:186:14:186:14 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:186:14:186:14 | x | (parent:Inner) | nested_types.swift:185:1:190:1 | SubOuter | -| nested_types.swift:186:14:186:14 | x | (parent:Inner).TSubOuter | nested_types.swift:185:16:185:24 | TSubOuter | -| nested_types.swift:186:14:186:14 | x | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:187:19:187:19 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:187:19:187:19 | x | (parent:Inner) | nested_types.swift:185:1:190:1 | SubOuter | -| nested_types.swift:187:19:187:19 | x | (parent:Inner).TSubOuter | nested_types.swift:185:16:185:24 | TSubOuter | -| nested_types.swift:187:19:187:19 | x | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:192:5:192:12 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:192:5:192:12 | subOuter | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:192:5:192:12 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | -| nested_types.swift:192:5:192:12 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | -| nested_types.swift:192:5:192:12 | subOuter | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:192:16:192:58 | ... .createInner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:192:16:192:58 | ... .createInner(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:192:16:192:58 | ... .createInner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | -| nested_types.swift:192:16:192:58 | ... .createInner(...) | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | -| nested_types.swift:192:16:192:58 | ... .createInner(...) | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:192:54:192:57 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | -| nested_types.swift:192:54:192:57 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | -| nested_types.swift:192:55:192:56 | 42 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:193:5:193:6 | x8 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:193:10:193:17 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:193:10:193:17 | subOuter | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:193:10:193:17 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | -| nested_types.swift:193:10:193:17 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | -| nested_types.swift:193:10:193:17 | subOuter | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:193:10:193:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:194:5:194:6 | y8 | | {EXTERNAL LOCATION} | Array | -| nested_types.swift:194:5:194:6 | y8 | Element | {EXTERNAL LOCATION} | Int | -| nested_types.swift:194:10:194:17 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:194:10:194:17 | subOuter | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:194:10:194:17 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | -| nested_types.swift:194:10:194:17 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | -| nested_types.swift:194:10:194:17 | subOuter | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:194:10:194:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Array | -| nested_types.swift:194:10:194:28 | ... .getOuter(...) | Element | {EXTERNAL LOCATION} | Int | -| nested_types.swift:196:5:196:12 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:196:5:196:12 | subInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:196:5:196:12 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:196:5:196:12 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:196:16:196:29 | ... .SubInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:196:16:196:29 | ... .SubInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:196:16:196:29 | ... .SubInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:196:16:196:29 | ... .SubInner | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:196:16:196:62 | ... .SubInner(...) | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:196:16:196:62 | ... .SubInner(...) | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:196:16:196:62 | ... .SubInner(...) | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:196:16:196:62 | ... .SubInner(...) | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:196:43:196:46 | true | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:196:61:196:61 | 0 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:197:5:197:6 | x9 | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:197:10:197:17 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:197:10:197:17 | subInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:197:10:197:17 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:197:10:197:17 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:197:10:197:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:198:5:198:6 | y9 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:198:10:198:17 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:198:10:198:17 | subInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:198:10:198:17 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:198:10:198:17 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:198:10:198:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:200:5:200:13 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:200:5:200:13 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:200:5:200:13 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:200:5:200:13 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:200:46:200:59 | ... .SubInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:200:46:200:59 | ... .SubInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:200:46:200:59 | ... .SubInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:200:46:200:59 | ... .SubInner | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:200:46:200:74 | ... .SubInner(...) | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:200:46:200:74 | ... .SubInner(...) | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:200:46:200:74 | ... .SubInner(...) | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:200:46:200:74 | ... .SubInner(...) | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:200:73:200:73 | 1 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:201:5:201:7 | x12 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:201:11:201:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:201:11:201:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:201:11:201:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:201:11:201:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:201:11:201:30 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:202:5:202:7 | y12 | | {EXTERNAL LOCATION} | String | -| nested_types.swift:202:11:202:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | -| nested_types.swift:202:11:202:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:202:11:202:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:202:11:202:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:202:11:202:30 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:206:5:206:19 | subInnerOutside | | nested_types.swift:204:1:204:70 | SubInnerOutside | -| nested_types.swift:206:5:206:19 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:206:23:206:37 | SubInnerOutside | | nested_types.swift:204:1:204:70 | SubInnerOutside | -| nested_types.swift:206:23:206:37 | SubInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:206:23:206:74 | SubInnerOutside(...) | | nested_types.swift:204:1:204:70 | SubInnerOutside | -| nested_types.swift:206:23:206:74 | SubInnerOutside(...) | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:206:51:206:54 | true | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:206:69:206:73 | false | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:207:5:207:7 | x10 | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:207:11:207:25 | subInnerOutside | | nested_types.swift:204:1:204:70 | SubInnerOutside | -| nested_types.swift:207:11:207:25 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:207:11:207:36 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:208:5:208:7 | y10 | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:208:11:208:25 | subInnerOutside | | nested_types.swift:204:1:204:70 | SubInnerOutside | -| nested_types.swift:208:11:208:25 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:208:11:208:36 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:212:13:212:13 | x | | nested_types.swift:211:5:213:5 | Node.Leaf | -| nested_types.swift:212:13:212:13 | x | (parent:Leaf) | nested_types.swift:210:1:214:1 | Node | -| nested_types.swift:212:23:212:26 | Leaf | | nested_types.swift:211:5:213:5 | Node.Leaf | -| nested_types.swift:212:23:212:26 | Leaf | (parent:Leaf) | nested_types.swift:210:1:214:1 | Node | -| nested_types.swift:212:23:212:28 | Leaf(...) | | nested_types.swift:211:5:213:5 | Node.Leaf | -| nested_types.swift:212:23:212:28 | Leaf(...) | (parent:Leaf) | nested_types.swift:210:1:214:1 | Node | -| nested_types.swift:218:5:218:10 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:218:5:218:10 | holder | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:218:5:218:10 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:218:5:218:10 | holder | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:218:14:218:25 | ... .Fixed | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:218:14:218:25 | ... .Fixed | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:218:14:218:25 | ... .Fixed | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:218:14:218:25 | ... .Fixed | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:218:14:218:41 | ... .Fixed(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:218:14:218:41 | ... .Fixed(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:218:14:218:41 | ... .Fixed(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:218:14:218:41 | ... .Fixed(...) | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:218:39:218:40 | "" | | {EXTERNAL LOCATION} | String | -| nested_types.swift:219:5:219:7 | x13 | | {EXTERNAL LOCATION} | String | -| nested_types.swift:219:11:219:16 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:219:11:219:16 | holder | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:219:11:219:16 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:219:11:219:16 | holder | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:219:11:219:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:220:5:220:7 | y13 | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:220:11:220:16 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:220:11:220:16 | holder | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:220:11:220:16 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | -| nested_types.swift:220:11:220:16 | holder | TInner | {EXTERNAL LOCATION} | String | -| nested_types.swift:220:11:220:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | -| nested_types.swift:228:11:228:11 | x | | nested_types.swift:222:1:231:1 | Box | -| nested_types.swift:228:11:228:11 | x | T | {EXTERNAL LOCATION} | Int | -| nested_types.swift:229:11:229:11 | y | | nested_types.swift:222:1:231:1 | Box | -| nested_types.swift:229:11:229:11 | y | T | nested_types.swift:222:11:222:11 | T | -| nested_types.swift:235:10:235:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:235:10:235:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:235:10:235:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:235:10:235:10 | x | TInner | {EXTERNAL LOCATION} | Int | -| nested_types.swift:239:10:239:10 | x | | {EXTERNAL LOCATION} | String | -| nested_types.swift:245:10:245:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:245:10:245:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:245:10:245:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:245:10:245:10 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:245:35:245:35 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:245:35:245:35 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:245:35:245:35 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:245:35:245:35 | y | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:246:9:246:9 | a | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:246:13:246:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:246:13:246:13 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:246:13:246:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:246:13:246:13 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:246:13:246:24 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:247:9:247:9 | b | | {EXTERNAL LOCATION} | String | -| nested_types.swift:247:13:247:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:247:13:247:13 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:247:13:247:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:247:13:247:13 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:247:13:247:24 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:248:9:248:9 | c | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:248:13:248:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:248:13:248:13 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:248:13:248:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:248:13:248:13 | y | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:248:13:248:24 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:249:9:249:9 | d | | {EXTERNAL LOCATION} | String | -| nested_types.swift:249:13:249:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:249:13:249:13 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:249:13:249:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:249:13:249:13 | y | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:249:13:249:24 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:116:12:116:12 | x | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:116:12:116:12 | x | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:12:116:12 | x | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:116:12:116:12 | x | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:12:116:12 | x | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:116:21:116:21 | y | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:116:21:116:21 | y | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:21:116:21 | y | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:116:21:116:21 | y | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:21:116:21 | y | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:117:13:117:13 | a | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:117:17:117:17 | x | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:117:17:117:17 | x | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:117:17:117:17 | x | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:117:17:117:17 | x | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:117:17:117:17 | x | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:117:17:117:19 | ... .0 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:117:17:117:19 | ... .0 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:117:17:117:30 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:118:17:118:17 | x | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:118:17:118:17 | x | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:118:17:118:17 | x | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:118:17:118:17 | x | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:118:17:118:17 | x | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:118:17:118:19 | ... .0 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:118:17:118:19 | ... .0 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:119:13:119:13 | c | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:119:17:119:17 | y | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:119:17:119:17 | y | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:119:17:119:17 | y | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:119:17:119:17 | y | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:119:17:119:17 | y | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:119:17:119:19 | ... .0 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:119:17:119:19 | ... .0 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:119:17:119:30 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:120:17:120:17 | y | | {EXTERNAL LOCATION} | Tuple2 | +| nested_types.swift:120:17:120:17 | y | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:120:17:120:17 | y | T0.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:120:17:120:17 | y | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:120:17:120:17 | y | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:120:17:120:19 | ... .0 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:120:17:120:19 | ... .0 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:124:29:124:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:124:29:124:33 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:124:29:124:33 | inner | (parent:Inner).TOuter | nested_types.swift:124:19:124:20 | Ta | +| nested_types.swift:124:29:124:33 | inner | TInner | nested_types.swift:124:23:124:24 | Tb | +| nested_types.swift:124:63:126:1 | Block | | nested_types.swift:124:23:124:24 | Tb | +| nested_types.swift:125:12:125:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:125:12:125:16 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:125:12:125:16 | inner | (parent:Inner).TOuter | nested_types.swift:124:19:124:20 | Ta | +| nested_types.swift:125:12:125:16 | inner | TInner | nested_types.swift:124:23:124:24 | Tb | +| nested_types.swift:125:12:125:27 | ... .getInner(...) | | nested_types.swift:124:23:124:24 | Tb | +| nested_types.swift:128:29:128:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:128:29:128:33 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:128:29:128:33 | inner | (parent:Inner).TOuter | nested_types.swift:128:19:128:20 | Ta | +| nested_types.swift:128:29:128:33 | inner | TInner | nested_types.swift:128:23:128:24 | Tb | +| nested_types.swift:128:63:130:1 | Block | | nested_types.swift:128:19:128:20 | Ta | +| nested_types.swift:129:12:129:16 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:129:12:129:16 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:129:12:129:16 | inner | (parent:Inner).TOuter | nested_types.swift:128:19:128:20 | Ta | +| nested_types.swift:129:12:129:16 | inner | TInner | nested_types.swift:128:23:128:24 | Tb | +| nested_types.swift:129:12:129:27 | ... .getOuter(...) | | nested_types.swift:128:19:128:20 | Ta | +| nested_types.swift:132:5:132:10 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:132:5:132:10 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:132:5:132:10 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:132:5:132:10 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:132:14:132:24 | ... .Inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:132:14:132:24 | ... .Inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:132:14:132:24 | ... .Inner | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:132:14:132:24 | ... .Inner | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:132:14:132:56 | ... .Inner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:132:14:132:56 | ... .Inner(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:132:14:132:56 | ... .Inner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:132:14:132:56 | ... .Inner(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:132:38:132:39 | 42 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:132:54:132:55 | "" | | {EXTERNAL LOCATION} | String | +| nested_types.swift:133:5:133:7 | x1a | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:133:11:133:16 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:133:11:133:16 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:133:11:133:16 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:133:11:133:16 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:133:11:133:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:134:5:134:7 | x1b | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:134:11:134:30 | extractInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:134:24:134:29 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:134:24:134:29 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:134:24:134:29 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:134:24:134:29 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:135:5:135:7 | y1a | | {EXTERNAL LOCATION} | String | +| nested_types.swift:135:11:135:16 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:135:11:135:16 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:135:11:135:16 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:135:11:135:16 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:135:11:135:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:136:5:136:7 | y1b | | {EXTERNAL LOCATION} | String | +| nested_types.swift:136:11:136:30 | extractOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:136:24:136:29 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:136:24:136:29 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:136:24:136:29 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:136:24:136:29 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:137:5:137:6 | b1 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:137:10:137:15 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:137:10:137:15 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:137:10:137:15 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:137:10:137:15 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:137:10:137:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:139:5:139:10 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:139:5:139:10 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:139:5:139:10 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:139:5:139:10 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:139:14:139:32 | ... .Inner | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:139:14:139:32 | ... .Inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:139:14:139:32 | ... .Inner | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:139:14:139:32 | ... .Inner | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:139:14:139:48 | ... .Inner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:139:14:139:48 | ... .Inner(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:139:14:139:48 | ... .Inner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:139:14:139:48 | ... .Inner(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:139:46:139:47 | 42 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:140:5:140:7 | x2a | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:140:11:140:16 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:140:11:140:16 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:140:11:140:16 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:140:11:140:16 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:140:11:140:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:141:5:141:7 | x2b | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:141:11:141:30 | extractInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:141:24:141:29 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:141:24:141:29 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:141:24:141:29 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:141:24:141:29 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:142:5:142:7 | y2a | | {EXTERNAL LOCATION} | String | +| nested_types.swift:142:11:142:16 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:142:11:142:16 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:142:11:142:16 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:142:11:142:16 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:142:11:142:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:143:5:143:7 | y2b | | {EXTERNAL LOCATION} | String | +| nested_types.swift:143:11:143:30 | extractOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:143:24:143:29 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:143:24:143:29 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:143:24:143:29 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:143:24:143:29 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:144:5:144:6 | b2 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:144:10:144:15 | inner2 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:144:10:144:15 | inner2 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:144:10:144:15 | inner2 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:144:10:144:15 | inner2 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:144:10:144:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:146:5:146:11 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:146:5:146:11 | swapped | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:146:5:146:11 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:146:5:146:11 | swapped | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:146:15:146:20 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:146:15:146:20 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:146:15:146:20 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:146:15:146:20 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:146:15:146:27 | ... .swap(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:146:15:146:27 | ... .swap(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:146:15:146:27 | ... .swap(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:146:15:146:27 | ... .swap(...) | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:147:5:147:6 | x3 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:147:10:147:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:147:10:147:16 | swapped | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:147:10:147:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:147:10:147:16 | swapped | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:147:10:147:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:148:5:148:6 | y3 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:148:10:148:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:148:10:148:16 | swapped | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:148:10:148:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:148:10:148:16 | swapped | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:148:10:148:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:149:5:149:6 | b3 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:149:10:149:16 | swapped | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:149:10:149:16 | swapped | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:149:10:149:16 | swapped | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:149:10:149:16 | swapped | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:149:10:149:26 | ... .getBase(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:151:5:151:10 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:151:5:151:10 | inner4 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:151:5:151:10 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:151:5:151:10 | inner4 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:151:14:151:19 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:151:14:151:19 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:151:14:151:19 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:151:14:151:19 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:151:14:151:30 | ... .getSelf1(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:151:14:151:30 | ... .getSelf1(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:151:14:151:30 | ... .getSelf1(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:151:14:151:30 | ... .getSelf1(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:152:5:152:6 | x4 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:152:10:152:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:152:10:152:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:152:10:152:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:152:10:152:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:152:10:152:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:153:5:153:6 | y4 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:153:10:153:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:153:10:153:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:153:10:153:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:153:10:153:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:153:10:153:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:154:5:154:6 | b4 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:154:10:154:15 | inner4 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:154:10:154:15 | inner4 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:154:10:154:15 | inner4 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:154:10:154:15 | inner4 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:154:10:154:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:156:5:156:10 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:156:5:156:10 | inner5 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:156:5:156:10 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:156:5:156:10 | inner5 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:156:14:156:19 | inner1 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:156:14:156:19 | inner1 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:156:14:156:19 | inner1 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:156:14:156:19 | inner1 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:156:14:156:30 | ... .getSelf2(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:156:14:156:30 | ... .getSelf2(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:156:14:156:30 | ... .getSelf2(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:156:14:156:30 | ... .getSelf2(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:157:5:157:6 | x5 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:157:10:157:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:157:10:157:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:157:10:157:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:157:10:157:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:157:10:157:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:158:5:158:6 | y5 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:158:10:158:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:158:10:158:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:158:10:158:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:158:10:158:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:158:10:158:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:159:5:159:6 | b5 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:159:10:159:15 | inner5 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:159:10:159:15 | inner5 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:159:10:159:15 | inner5 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:159:10:159:15 | inner5 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:159:10:159:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:161:5:161:10 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:161:5:161:10 | inner6 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:161:5:161:10 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:161:5:161:10 | inner6 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:161:14:161:49 | ... .createInner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:161:14:161:49 | ... .createInner(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:161:14:161:49 | ... .createInner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:161:14:161:49 | ... .createInner(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:161:44:161:48 | false | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:162:5:162:6 | x6 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:162:10:162:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:162:10:162:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:162:10:162:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:162:10:162:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:162:10:162:26 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:163:5:163:6 | y6 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:163:10:163:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:163:10:163:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:163:10:163:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:163:10:163:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:163:10:163:26 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:164:5:164:6 | b6 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:164:10:164:15 | inner6 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:164:10:164:15 | inner6 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:164:10:164:15 | inner6 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:164:10:164:15 | inner6 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:164:10:164:25 | ... .getBase(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:166:5:166:10 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:166:5:166:10 | inner7 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:166:5:166:10 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:166:5:166:10 | inner7 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:166:14:166:29 | ... .InnerAlias | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:166:14:166:29 | ... .InnerAlias | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:166:14:166:29 | ... .InnerAlias | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:166:14:166:29 | ... .InnerAlias | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:166:14:166:63 | ... .InnerAlias(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:166:14:166:63 | ... .InnerAlias(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:166:14:166:63 | ... .InnerAlias(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:166:14:166:63 | ... .InnerAlias(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:166:43:166:43 | 0 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:166:58:166:62 | false | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:167:5:167:7 | x11 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:167:11:167:16 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:167:11:167:16 | inner7 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:167:11:167:16 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:167:11:167:16 | inner7 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:167:11:167:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:168:5:168:7 | y11 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:168:11:168:16 | inner7 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:168:11:168:16 | inner7 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:168:11:168:16 | inner7 | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:168:11:168:16 | inner7 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:168:11:168:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:176:13:176:16 | self | | nested_types.swift:171:5:187:5 | Outer.Inner.InnerMost | +| nested_types.swift:176:13:176:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:176:13:176:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:176:13:176:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:176:13:176:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:177:13:177:16 | self | | nested_types.swift:171:5:187:5 | Outer.Inner.InnerMost | +| nested_types.swift:177:13:177:16 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:177:13:177:16 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:177:13:177:16 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:177:13:177:16 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:181:20:181:23 | self | | nested_types.swift:171:5:187:5 | Outer.Inner.InnerMost | +| nested_types.swift:181:20:181:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:181:20:181:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:181:20:181:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:181:20:181:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:185:20:185:23 | self | | nested_types.swift:171:5:187:5 | Outer.Inner.InnerMost | +| nested_types.swift:185:20:185:23 | self | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:185:20:185:23 | self | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:185:20:185:23 | self | (parent:InnerMost).(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | +| nested_types.swift:185:20:185:23 | self | (parent:InnerMost).TInner | nested_types.swift:14:17:14:22 | TInner | +| nested_types.swift:190:5:190:13 | innerMost | | nested_types.swift:171:5:187:5 | Outer.Inner.InnerMost | +| nested_types.swift:190:5:190:13 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:190:5:190:13 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:190:17:190:37 | ... .InnerMost | | nested_types.swift:171:5:187:5 | Outer.Inner.InnerMost | +| nested_types.swift:190:17:190:37 | ... .InnerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:190:17:190:37 | ... .InnerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:190:17:190:51 | ... .InnerMost(...) | | nested_types.swift:171:5:187:5 | Outer.Inner.InnerMost | +| nested_types.swift:190:17:190:51 | ... .InnerMost(...) | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:190:17:190:51 | ... .InnerMost(...) | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:190:42:190:43 | "" | | {EXTERNAL LOCATION} | String | +| nested_types.swift:190:49:190:50 | 42 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:191:10:191:18 | innerMost | | nested_types.swift:171:5:187:5 | Outer.Inner.InnerMost | +| nested_types.swift:191:10:191:18 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:191:10:191:18 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:192:10:192:18 | innerMost | | nested_types.swift:171:5:187:5 | Outer.Inner.InnerMost | +| nested_types.swift:192:10:192:18 | innerMost | (parent:InnerMost) | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:192:10:192:18 | innerMost | (parent:InnerMost).(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:195:14:195:14 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:195:14:195:14 | x | (parent:Inner) | nested_types.swift:194:1:199:1 | SubOuter | +| nested_types.swift:195:14:195:14 | x | (parent:Inner).TSubOuter | nested_types.swift:194:16:194:24 | TSubOuter | +| nested_types.swift:195:14:195:14 | x | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:196:19:196:19 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:196:19:196:19 | x | (parent:Inner) | nested_types.swift:194:1:199:1 | SubOuter | +| nested_types.swift:196:19:196:19 | x | (parent:Inner).TSubOuter | nested_types.swift:194:16:194:24 | TSubOuter | +| nested_types.swift:196:19:196:19 | x | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:201:5:201:12 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:201:5:201:12 | subOuter | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:201:5:201:12 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | +| nested_types.swift:201:5:201:12 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:201:5:201:12 | subOuter | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:201:16:201:58 | ... .createInner(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:201:16:201:58 | ... .createInner(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:201:16:201:58 | ... .createInner(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | +| nested_types.swift:201:16:201:58 | ... .createInner(...) | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:201:16:201:58 | ... .createInner(...) | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:201:54:201:57 | ArrayLiteral | | {EXTERNAL LOCATION} | Array | +| nested_types.swift:201:54:201:57 | ArrayLiteral | Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:201:55:201:56 | 42 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:202:5:202:6 | x8 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:202:10:202:17 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:202:10:202:17 | subOuter | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:202:10:202:17 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | +| nested_types.swift:202:10:202:17 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:202:10:202:17 | subOuter | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:202:10:202:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:203:5:203:6 | y8 | | {EXTERNAL LOCATION} | Array | +| nested_types.swift:203:5:203:6 | y8 | Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:203:10:203:17 | subOuter | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:203:10:203:17 | subOuter | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:203:10:203:17 | subOuter | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Array | +| nested_types.swift:203:10:203:17 | subOuter | (parent:Inner).TOuter.Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:203:10:203:17 | subOuter | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:203:10:203:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Array | +| nested_types.swift:203:10:203:28 | ... .getOuter(...) | Element | {EXTERNAL LOCATION} | Int | +| nested_types.swift:205:5:205:12 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:205:5:205:12 | subInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:205:5:205:12 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:205:5:205:12 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:205:16:205:29 | ... .SubInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:205:16:205:29 | ... .SubInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:205:16:205:29 | ... .SubInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:205:16:205:29 | ... .SubInner | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:205:16:205:62 | ... .SubInner(...) | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:205:16:205:62 | ... .SubInner(...) | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:205:16:205:62 | ... .SubInner(...) | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:205:16:205:62 | ... .SubInner(...) | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:205:43:205:46 | true | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:205:61:205:61 | 0 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:206:5:206:6 | x9 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:206:10:206:17 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:206:10:206:17 | subInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:206:10:206:17 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:206:10:206:17 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:206:10:206:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:207:5:207:6 | y9 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:207:10:207:17 | subInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:207:10:207:17 | subInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:207:10:207:17 | subInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:207:10:207:17 | subInner | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:207:10:207:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:209:5:209:13 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:209:5:209:13 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:209:5:209:13 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:209:5:209:13 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:209:46:209:59 | ... .SubInner | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:209:46:209:59 | ... .SubInner | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:209:46:209:59 | ... .SubInner | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:209:46:209:59 | ... .SubInner | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:209:46:209:74 | ... .SubInner(...) | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:209:46:209:74 | ... .SubInner(...) | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:209:46:209:74 | ... .SubInner(...) | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:209:46:209:74 | ... .SubInner(...) | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:209:73:209:73 | 1 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:210:5:210:7 | x12 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:210:11:210:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:210:11:210:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:210:11:210:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:210:11:210:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:210:11:210:30 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:211:5:211:7 | y12 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:211:11:211:19 | subInner2 | | nested_types.swift:49:5:49:50 | Outer.SubInner | +| nested_types.swift:211:11:211:19 | subInner2 | (parent:SubInner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:211:11:211:19 | subInner2 | (parent:SubInner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:211:11:211:19 | subInner2 | TSubInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:211:11:211:30 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:215:5:215:19 | subInnerOutside | | nested_types.swift:213:1:213:70 | SubInnerOutside | +| nested_types.swift:215:5:215:19 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:215:23:215:37 | SubInnerOutside | | nested_types.swift:213:1:213:70 | SubInnerOutside | +| nested_types.swift:215:23:215:37 | SubInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:215:23:215:74 | SubInnerOutside(...) | | nested_types.swift:213:1:213:70 | SubInnerOutside | +| nested_types.swift:215:23:215:74 | SubInnerOutside(...) | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:215:51:215:54 | true | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:215:69:215:73 | false | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:216:5:216:7 | x10 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:216:11:216:25 | subInnerOutside | | nested_types.swift:213:1:213:70 | SubInnerOutside | +| nested_types.swift:216:11:216:25 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:216:11:216:36 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:217:5:217:7 | y10 | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:217:11:217:25 | subInnerOutside | | nested_types.swift:213:1:213:70 | SubInnerOutside | +| nested_types.swift:217:11:217:25 | subInnerOutside | TSubInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:217:11:217:36 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:221:13:221:13 | x | | nested_types.swift:220:5:222:5 | Node.Leaf | +| nested_types.swift:221:13:221:13 | x | (parent:Leaf) | nested_types.swift:219:1:223:1 | Node | +| nested_types.swift:221:23:221:26 | Leaf | | nested_types.swift:220:5:222:5 | Node.Leaf | +| nested_types.swift:221:23:221:26 | Leaf | (parent:Leaf) | nested_types.swift:219:1:223:1 | Node | +| nested_types.swift:221:23:221:28 | Leaf(...) | | nested_types.swift:220:5:222:5 | Node.Leaf | +| nested_types.swift:221:23:221:28 | Leaf(...) | (parent:Leaf) | nested_types.swift:219:1:223:1 | Node | +| nested_types.swift:227:5:227:10 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:227:5:227:10 | holder | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:227:5:227:10 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:227:5:227:10 | holder | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:227:14:227:25 | ... .Fixed | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:227:14:227:25 | ... .Fixed | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:227:14:227:25 | ... .Fixed | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:227:14:227:25 | ... .Fixed | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:227:14:227:41 | ... .Fixed(...) | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:227:14:227:41 | ... .Fixed(...) | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:227:14:227:41 | ... .Fixed(...) | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:227:14:227:41 | ... .Fixed(...) | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:227:39:227:40 | "" | | {EXTERNAL LOCATION} | String | +| nested_types.swift:228:5:228:7 | x13 | | {EXTERNAL LOCATION} | String | +| nested_types.swift:228:11:228:16 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:228:11:228:16 | holder | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:228:11:228:16 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:228:11:228:16 | holder | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:228:11:228:27 | ... .getInner(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:229:5:229:7 | y13 | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:229:11:229:16 | holder | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:229:11:229:16 | holder | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:229:11:229:16 | holder | (parent:Inner).TOuter | {EXTERNAL LOCATION} | Int | +| nested_types.swift:229:11:229:16 | holder | TInner | {EXTERNAL LOCATION} | String | +| nested_types.swift:229:11:229:27 | ... .getOuter(...) | | {EXTERNAL LOCATION} | Int | +| nested_types.swift:237:11:237:11 | x | | nested_types.swift:231:1:240:1 | Box | +| nested_types.swift:237:11:237:11 | x | T | {EXTERNAL LOCATION} | Int | +| nested_types.swift:238:11:238:11 | y | | nested_types.swift:231:1:240:1 | Box | +| nested_types.swift:238:11:238:11 | y | T | nested_types.swift:231:11:231:11 | T | +| nested_types.swift:244:10:244:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:244:10:244:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:244:10:244:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:244:10:244:10 | x | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:248:10:248:10 | x | | {EXTERNAL LOCATION} | String | | nested_types.swift:254:10:254:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | | nested_types.swift:254:10:254:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | | nested_types.swift:254:10:254:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | | nested_types.swift:254:10:254:10 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:255:9:255:13 | outer | | {EXTERNAL LOCATION} | String | -| nested_types.swift:255:17:255:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:255:17:255:17 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:255:17:255:17 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:255:17:255:17 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:255:17:255:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | -| nested_types.swift:256:9:256:13 | inner | | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:256:17:256:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | -| nested_types.swift:256:17:256:17 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | -| nested_types.swift:256:17:256:17 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | -| nested_types.swift:256:17:256:17 | x | TInner | {EXTERNAL LOCATION} | Bool | -| nested_types.swift:256:17:256:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:254:35:254:35 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:254:35:254:35 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:254:35:254:35 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:254:35:254:35 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:255:9:255:9 | a | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:255:13:255:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:255:13:255:13 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:255:13:255:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:255:13:255:13 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:255:13:255:24 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:256:9:256:9 | b | | {EXTERNAL LOCATION} | String | +| nested_types.swift:256:13:256:13 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:256:13:256:13 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:256:13:256:13 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:256:13:256:13 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:256:13:256:24 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:257:9:257:9 | c | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:257:13:257:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:257:13:257:13 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:257:13:257:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:257:13:257:13 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:257:13:257:24 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:258:9:258:9 | d | | {EXTERNAL LOCATION} | String | +| nested_types.swift:258:13:258:13 | y | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:258:13:258:13 | y | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:258:13:258:13 | y | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:258:13:258:13 | y | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:258:13:258:24 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:263:10:263:10 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:263:10:263:10 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:263:10:263:10 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:263:10:263:10 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:264:9:264:13 | outer | | {EXTERNAL LOCATION} | String | +| nested_types.swift:264:17:264:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:264:17:264:17 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:264:17:264:17 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:264:17:264:17 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:264:17:264:28 | ... .getOuter(...) | | {EXTERNAL LOCATION} | String | +| nested_types.swift:265:9:265:13 | inner | | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:265:17:265:17 | x | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:265:17:265:17 | x | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:265:17:265:17 | x | (parent:Inner).TOuter | {EXTERNAL LOCATION} | String | +| nested_types.swift:265:17:265:17 | x | TInner | {EXTERNAL LOCATION} | Bool | +| nested_types.swift:265:17:265:28 | ... .getInner(...) | | {EXTERNAL LOCATION} | Bool | | overload_resolution.swift:4:17:4:17 | x | | {EXTERNAL LOCATION} | Int | | overload_resolution.swift:4:35:6:3 | Block | | {EXTERNAL LOCATION} | String | | overload_resolution.swift:5:12:5:16 | "int" | | {EXTERNAL LOCATION} | String | From 75372e8c7582494ee5541235e4821ae3367ff692 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Tue, 27 Oct 2026 09:05:41 +0100 Subject: [PATCH 4/4] wip3 --- .../codeql/unified/internal/ExprPositions.qll | 19 +- .../unified/internal/ExprPositionsPlugin.qll | 4 +- .../internal/ExprPositionsPluginSwift.qll | 4 +- .../TypeInferenceConsistency.qll | 2 +- .../internal/typeinference/TypeMention.qll | 166 ++++++++++-------- .../type-inference/nested_types.swift | 6 +- .../type-inference/type-inference.expected | 58 ++++++ 7 files changed, 161 insertions(+), 98 deletions(-) diff --git a/unified/ql/lib/codeql/unified/internal/ExprPositions.qll b/unified/ql/lib/codeql/unified/internal/ExprPositions.qll index 18dc75f855ba..2c2b0bc29e41 100644 --- a/unified/ql/lib/codeql/unified/internal/ExprPositions.qll +++ b/unified/ql/lib/codeql/unified/internal/ExprPositions.qll @@ -4,10 +4,9 @@ private import ExprPositionsPlugin /** * Holds if `expr` appears in a context where it must refer to a type, - * and where omission of type arguments implicitly refer to the type - * parameters of the type being accessed (provided that they are in scope). + * based entirely on the syntactic context of the expression. */ -predicate isInTypeContextWithImplicitTypeArgs(Expr expr) { +predicate isInSyntacticTypeContext(Expr expr) { expr = any(TypeCastExpr n).getType() or expr = any(TypeTestExpr n).getType() @@ -38,26 +37,24 @@ predicate isInTypeContextWithImplicitTypeArgs(Expr expr) { or expr.getParent() instanceof TypeConstraint or - any(ExprPositionsPlugin p).isInTypeContextWithImplicitTypeArgs(expr) + any(ExprPositionsPlugin p).isInSyntacticTypeContext(expr) or - isInTypeContextWithImplicitTypeArgs(expr.getEnclosingExpr()) + isInSyntacticTypeContext(expr.getEnclosingExpr()) } -private predicate isInTypeContextWithoutImplicitTypeArgs(Expr expr) { +private predicate isInTypeContext0(Expr expr) { exists(NameBinding::getTypeFromRef(expr)) or - any(ExprPositionsPlugin p).isInTypeContext(expr) - or - isInTypeContextWithoutImplicitTypeArgs(expr.getEnclosingExpr()) + isInTypeContext0(expr.getEnclosingExpr()) } /** * Holds if `expr` appears in a context where it must refer to a type. */ predicate isInTypeContext(Expr expr) { - isInTypeContextWithImplicitTypeArgs(expr) + isInSyntacticTypeContext(expr) or - isInTypeContextWithoutImplicitTypeArgs(expr) + isInTypeContext0(expr) } /** Holds if `e` appears in a name-binding position inside `declaration` */ diff --git a/unified/ql/lib/codeql/unified/internal/ExprPositionsPlugin.qll b/unified/ql/lib/codeql/unified/internal/ExprPositionsPlugin.qll index 0bca0f05898e..911ccc9f6591 100644 --- a/unified/ql/lib/codeql/unified/internal/ExprPositionsPlugin.qll +++ b/unified/ql/lib/codeql/unified/internal/ExprPositionsPlugin.qll @@ -6,9 +6,7 @@ private module Plugins { } class ExprPositionsPlugin extends Unit { - predicate isInTypeContext(Expr e) { none() } - - predicate isInTypeContextWithImplicitTypeArgs(Expr e) { none() } + predicate isInSyntacticTypeContext(Expr e) { none() } predicate isReturnedExpr(Callable callable, Expr e) { none() } } diff --git a/unified/ql/lib/codeql/unified/internal/ExprPositionsPluginSwift.qll b/unified/ql/lib/codeql/unified/internal/ExprPositionsPluginSwift.qll index 42bd3ccc193a..c16806babfaa 100644 --- a/unified/ql/lib/codeql/unified/internal/ExprPositionsPluginSwift.qll +++ b/unified/ql/lib/codeql/unified/internal/ExprPositionsPluginSwift.qll @@ -2,9 +2,7 @@ private import unified private import ExprPositionsPlugin private class ExprPositionsPluginSwift extends ExprPositionsPlugin { - override predicate isInTypeContextWithImplicitTypeArgs(Expr e) { - e = any(GenericTypeExpr g).getBase() - } + override predicate isInSyntacticTypeContext(Expr e) { e = any(GenericTypeExpr g).getBase() } override predicate isReturnedExpr(Callable callable, Expr e) { // Short-hand return from a function body, e.g. `func foo() -> String { "42" }` diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll index 3c2ee0d2dc2c..6631533b2b95 100644 --- a/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeInferenceConsistency.qll @@ -21,5 +21,5 @@ query predicate nonUniqueCertainType(AstNode n, TypePath path) { query predicate typeParameterEscape(AstNode n, TypePath path, TypeParameter tp) { tp = inferType(n, path) and - forex(AstNode scope | tp.getScope() = scope | not n.getParent*() = scope) + not n.getParent*() = tp.getScope() } diff --git a/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll b/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll index a3e70ac0cdf0..abd27a97c51f 100644 --- a/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll +++ b/unified/ql/lib/codeql/unified/internal/typeinference/TypeMention.qll @@ -5,12 +5,6 @@ private import TypeInferencePlugin as Plugin private import codeql.unified.internal.StaticNameBinding private import codeql.unified.internal.ExprPositions -// private predicate isTypeParameterAlias(TypeAliasDeclaration alias, int i) { -// exists(Unified::TypeParameter tp | -// tp = alias.getTypeParameter(i) and -// tp.getNameNode() = getTypeFromRef(alias.getType()) -// ) -// } final class TypeMention = TypeMentionImpl; /** An AST node that mentions a type. */ @@ -33,10 +27,78 @@ abstract private class TypeMentionImpl extends AstNode { } /** - * Gets the type mentioned at `path`. + * Gets the type mentioned explicitly at `path`. + * + * This predicate is an internal implementation detail; use `getTypeAt` instead. */ pragma[nomagic] - abstract Type getTypeAt(TypePath path); + abstract Type getExplicitTypeAt(TypePath path); + + pragma[nomagic] + private ClassLikeDeclaration getImplicitEnclosingCand(TypePath path, ParentTypeParameterType tp) { + exists(ClassLikeDeclaration nested | + nested = this.getExplicitTypeAt(path).(ClassLikeDeclarationType).getClassLikeDeclaration() and + tp = TParentTypeParameterType(nested) and + not exists(this.getExplicitTypeAt(path.append(TypePath::singleton(tp)))) and + result = this.getEnclosingClassResolved+() + ) + } + + /** + * Gets the type mentioned at `path`. + */ + Type getTypeAt(TypePath path) { + result = this.getExplicitTypeAt(path) + or + // A mention of a nested type without an explicit qualifier implicitly mentions + // the parent type (including at the identifer that introduces the type) + // + // ```swift + // class Outer { + // class Inner { + // let y: Inner // short-hand for `Outer.Inner` + // } + // } + // ``` + exists( + TypePath prefix, ClassLikeDeclaration parent, ParentTypeParameterType tp, TypePath suffix, + ClassLikeDeclaration encl + | + encl = this.getImplicitEnclosingCand(prefix, tp) and + parent = tp.getParent() and + path = prefix.append(TypePath::cons(tp, suffix)) and + result = encl.getNameNode().(TypeMention).getTypeAt(suffix) + | + encl = parent + or + not parent = this.getImplicitEnclosingCand(_, _) and + encl.getABaseClass+() = parent + ) + or + // A mention of a generic type without explicit type arguments and within + // the scope of the type, implicitly mentions all type parameters (including + // at the identifer that introduces the type): + // + // ```swift + // class Generic { + // let x: Generic // short-hand for `Generic + // } + // ``` + exists(TypePath prefix, ClassLikeDeclarationType t | + t = this.getTypeAt(prefix) and + forex(TypeParameter tp | + tp = t.getATypeParameter() and not tp instanceof ParentTypeParameterType + | + not exists(this.getExplicitTypeAt(prefix.append(TypePath::singleton(tp)))) + ) and + t.getClassLikeDeclaration() = this.getEnclosingClassResolved+() and + result = t.getATypeParameter() and + path = prefix.append(TypePath::singleton(result)) and + not result instanceof ParentTypeParameterType + | + isInSyntacticTypeContext(this) or this = t.getNameNode() + ) + } /** * Gets an explicit qualifier that may refer to the parent type of this nested @@ -139,7 +201,10 @@ abstract private class ExprTypeMentionImpl extends TypeMentionImpl, Expr { pragma[nomagic] private ClassLikeDeclaration getQualifierTypeAt(TypePath path) { result = - this.getParentQualifier().getTypeAt(path).(ClassLikeDeclarationType).getClassLikeDeclaration() and + this.getParentQualifier() + .getExplicitTypeAt(path) + .(ClassLikeDeclarationType) + .getClassLikeDeclaration() and forall(TypeParameter tp | tp = path.getElement(_) | tp instanceof ParentTypeParameterType) } @@ -149,7 +214,7 @@ abstract private class ExprTypeMentionImpl extends TypeMentionImpl, Expr { parent = tp.getParent() } - final override Type getTypeAt(TypePath path) { + final override Type getExplicitTypeAt(TypePath path) { // recursion guard to check that `getType` does not recursively depend on `getTypeAt` (exists(this.getType()) implies any()) and result = this.getTypeAtImpl(path) @@ -159,46 +224,9 @@ abstract private class ExprTypeMentionImpl extends TypeMentionImpl, Expr { qualifier = this.getParentQualifier() and this.isNestedClass(tp, this.getQualifierTypeAt(prefix)) and path = TypePath::cons(tp, suffix) and - result = qualifier.getTypeAt(prefix.appendInverse(suffix)) - ) - or - // A mention of a nested type without an explicit qualifier implicitly mentions - // the parent type (including at the identifer that introduces the type) - // - // ```swift - // class Outer { - // class Inner { - // let y: Inner // short-hand for `Outer.Inner` - // } - // } - // ``` - exists( - ClassLikeDeclaration encl, ClassLikeDeclaration parent, ParentTypeParameterType tp, - TypePath suffix - | - encl = this.getImplicitEnclosingCand(tp) and - parent = tp.getParent() and - path = TypePath::cons(tp, suffix) and - result = encl.getNameNode().(TypeMention).getTypeAt(suffix) - | - encl = parent - or - not parent = this.getImplicitEnclosingCand(tp) and - encl.getABaseClass+() = parent + result = qualifier.getExplicitTypeAt(prefix.appendInverse(suffix)) ) } - - pragma[nomagic] - private ClassLikeDeclaration getImplicitEnclosingCand(ParentTypeParameterType tp) { - not this.hasParentQualifier() and - not exists(TypeAliasDeclaration alias | - this.getParent*() = alias.getType() //and - // not this.getParent*() = any(GenericTypeExpr g).getATypeArgument() and - // not this.getParent*() = any(TupleExpr t).getAnElement() - ) and - tp = TParentTypeParameterType(this.getClassLikeDeclaration()) and - result = this.getEnclosingClassResolved+() - } } /** @@ -216,7 +244,7 @@ class AliasExprTypeMention extends ExprTypeMentionImpl { override TypePath getTypeArgumentPath(int i) { exists(TypeParameterType tp | tp = this.getAliasTypeParameter(i) and - tp = alias.getType().(TypeMention).getTypeAt(result) + tp = alias.getType().(TypeMention).getExplicitTypeAt(result) or // `typealias Alias = Generic`, where `Generic` has positional type parameters not exists(this.getAliasTypeParameter(_)) and @@ -244,10 +272,13 @@ class AliasExprTypeMention extends ExprTypeMentionImpl { override TypeMention getAlias() { result = alias.getType() } - override Type getType() { result = alias.getType().(TypeMention).getType() } + override Type getType() { + result = alias.getType().(TypeMention).getType() and + not result = this.getAliasTypeParameter(_) + } override Type getTypeAtImpl(TypePath path) { - result = alias.getType().(TypeMention).getTypeAt(path) and + result = alias.getType().(TypeMention).getExplicitTypeAt(path) and not result = this.getAliasTypeParameter(_) } } @@ -312,7 +343,7 @@ private class NonAliasExprTypeMention extends ExprTypeMentionImpl { alias = c.getAMember() and alias.getName() = name and path = TypePath::cons(baseTp, suffix) and - result = alias.getType().(TypeMention).getTypeAt(suffix) + result = alias.getType().(TypeMention).getExplicitTypeAt(suffix) ) ) or @@ -323,40 +354,21 @@ private class NonAliasExprTypeMention extends ExprTypeMentionImpl { | exists(int i | prefix = Plugin::getFunctionExprParameterTypePath(t, fe.getNumberOfParameters(), i) and - result = fe.getParameter(i).getType().(TypeMention).getTypeAt(suffix) + result = fe.getParameter(i).getType().(TypeMention).getExplicitTypeAt(suffix) ) or prefix = Plugin::getFunctionExprReturnTypePath(t) and - result = fe.getReturnType().(TypeMention).getTypeAt(suffix) + result = fe.getReturnType().(TypeMention).getExplicitTypeAt(suffix) ) or this = any(TupleExpr te | exists(Plugin::TupleType tt, int i, TypePath suffix | tt.getArity() = te.getNumberOfElements() and - result = te.getElement(i).getValue().(TypeMention).getTypeAt(suffix) and + result = te.getElement(i).getValue().(TypeMention).getExplicitTypeAt(suffix) and path = TypePath::cons(tt.getPositionalTypeParameter(i), suffix) ) ) - or - // A mention of a generic type without explicit type arguments and within - // the scope of the type, implicitly mentions all type parameters (including - // at the identifer that introduces the type): - // - // ```swift - // class Generic { - // let x: Generic // short-hand for `Generic - // } - // ``` - not this = any(GenericTypeExpr g).getBase() and - exists(ClassLikeDeclarationType rootType | - rootType = this.getType() and - (isInTypeContextWithImplicitTypeArgs(this) or this = rootType.getNameNode()) and - rootType.getClassLikeDeclaration() = this.getEnclosingClassResolved+() and - result = rootType.getATypeParameter() and - path = TypePath::singleton(result) and - not result instanceof ParentTypeParameterType - ) } override TypeMention resolve() { result = this } @@ -379,11 +391,11 @@ private class GenericTypeExprTypeMention extends TypeMentionImpl, GenericTypeExp pragma[nomagic] private Type getTypeArgumentAt(int i, TypePath path) { - result = this.getTypeArgument(i).(TypeMention).getTypeAt(path) + result = this.getTypeArgument(i).(TypeMention).getExplicitTypeAt(path) } - override Type getTypeAt(TypePath path) { - result = base.getTypeAt(path) + override Type getExplicitTypeAt(TypePath path) { + result = base.getExplicitTypeAt(path) or base = this.getBase() and exists(int i, TypePath prefix, TypePath suffix | diff --git a/unified/ql/test/library-tests/type-inference/nested_types.swift b/unified/ql/test/library-tests/type-inference/nested_types.swift index 2079e41ee272..45737a9fc8d7 100644 --- a/unified/ql/test/library-tests/type-inference/nested_types.swift +++ b/unified/ql/test/library-tests/type-inference/nested_types.swift @@ -107,7 +107,7 @@ class Outer { typealias Pair = (Inner, Inner) func f3(p: Pair) { - let outer = p.0.getOuter() // $ target=Outer.Inner.getOuter field=Tuple2.0 $ MISSING: type=outer:TOuter + let outer = p.0.getOuter() // $ target=Outer.Inner.getOuter field=Tuple2.0 type=outer:TOuter let inner = p.0.getInner() // $ target=Outer.Inner.getInner field=Tuple2.0 type=inner:Int } } @@ -115,9 +115,9 @@ class Outer { class Foo: Outer { func f(x: Pair, y: Outer.Pair) { var a = x.0.getInner() // $ target=Outer.Inner.getInner field=Tuple2.0 type=a:Int - var b = x.0.getOuter() // $ target=Outer.Inner.getOuter field=Tuple2.0 $ MISSING: type=b:String + var b = x.0.getOuter() // $ target=Outer.Inner.getOuter field=Tuple2.0 $ MISSING: type=b:String -- this is an instance of variance sub typing var c = y.0.getInner() // $ target=Outer.Inner.getInner field=Tuple2.0 type=c:Int - var d = y.0.getOuter() // $ target=Outer.Inner.getOuter field=Tuple2.0 $ MISSING: type=d:Bool + var d = y.0.getOuter() // $ target=Outer.Inner.getOuter field=Tuple2.0 $ MISSING: type=d:Bool -- this is an instance of variance sub typing } } diff --git a/unified/ql/test/library-tests/type-inference/type-inference.expected b/unified/ql/test/library-tests/type-inference/type-inference.expected index ae35e312a436..89910bcb5431 100644 --- a/unified/ql/test/library-tests/type-inference/type-inference.expected +++ b/unified/ql/test/library-tests/type-inference/type-inference.expected @@ -500,48 +500,72 @@ inferCertainType | nested_types.swift:104:21:104:21 | x | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:109:13:109:13 | p | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:109:13:109:13 | p | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:109:13:109:13 | p | T0.(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:109:13:109:13 | p | T0.(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:109:13:109:13 | p | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:109:13:109:13 | p | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:109:13:109:13 | p | T1.(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:109:13:109:13 | p | T1.(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:109:13:109:13 | p | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:110:21:110:21 | p | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:110:21:110:21 | p | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:110:21:110:21 | p | T0.(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:110:21:110:21 | p | T0.(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:110:21:110:21 | p | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:110:21:110:21 | p | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:110:21:110:21 | p | T1.(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:110:21:110:21 | p | T1.(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:110:21:110:21 | p | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:111:21:111:21 | p | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:111:21:111:21 | p | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:111:21:111:21 | p | T0.(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:111:21:111:21 | p | T0.(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:111:21:111:21 | p | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:111:21:111:21 | p | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:111:21:111:21 | p | T1.(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:111:21:111:21 | p | T1.(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:111:21:111:21 | p | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:116:12:116:12 | x | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:116:12:116:12 | x | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:12:116:12 | x | T0.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:116:12:116:12 | x | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:116:12:116:12 | x | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:12:116:12 | x | T1.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:116:12:116:12 | x | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:116:21:116:21 | y | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:116:21:116:21 | y | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:21:116:21 | y | T0.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:116:21:116:21 | y | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:116:21:116:21 | y | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:21:116:21 | y | T1.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:116:21:116:21 | y | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:117:17:117:17 | x | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:117:17:117:17 | x | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:117:17:117:17 | x | T0.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:117:17:117:17 | x | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:117:17:117:17 | x | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:117:17:117:17 | x | T1.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:117:17:117:17 | x | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:118:17:118:17 | x | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:118:17:118:17 | x | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:118:17:118:17 | x | T0.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:118:17:118:17 | x | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:118:17:118:17 | x | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:118:17:118:17 | x | T1.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:118:17:118:17 | x | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:119:17:119:17 | y | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:119:17:119:17 | y | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:119:17:119:17 | y | T0.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:119:17:119:17 | y | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:119:17:119:17 | y | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:119:17:119:17 | y | T1.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:119:17:119:17 | y | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:120:17:120:17 | y | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:120:17:120:17 | y | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:120:17:120:17 | y | T0.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:120:17:120:17 | y | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:120:17:120:17 | y | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:120:17:120:17 | y | T1.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:120:17:120:17 | y | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:124:29:124:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | | nested_types.swift:124:29:124:33 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | @@ -2559,66 +2583,100 @@ inferType | nested_types.swift:104:21:104:32 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | | nested_types.swift:109:13:109:13 | p | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:109:13:109:13 | p | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:109:13:109:13 | p | T0.(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:109:13:109:13 | p | T0.(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:109:13:109:13 | p | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:109:13:109:13 | p | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:109:13:109:13 | p | T1.(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:109:13:109:13 | p | T1.(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:109:13:109:13 | p | T1.TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:110:13:110:17 | outer | | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:110:21:110:21 | p | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:110:21:110:21 | p | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:110:21:110:21 | p | T0.(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:110:21:110:21 | p | T0.(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:110:21:110:21 | p | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:110:21:110:21 | p | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:110:21:110:21 | p | T1.(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:110:21:110:21 | p | T1.(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:110:21:110:21 | p | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:110:21:110:23 | ... .0 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:110:21:110:23 | ... .0 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:110:21:110:23 | ... .0 | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:110:21:110:23 | ... .0 | TInner | {EXTERNAL LOCATION} | Int | +| nested_types.swift:110:21:110:34 | ... .getOuter(...) | | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:111:13:111:17 | inner | | {EXTERNAL LOCATION} | Int | | nested_types.swift:111:21:111:21 | p | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:111:21:111:21 | p | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:111:21:111:21 | p | T0.(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:111:21:111:21 | p | T0.(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:111:21:111:21 | p | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:111:21:111:21 | p | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:111:21:111:21 | p | T1.(parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:111:21:111:21 | p | T1.(parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:111:21:111:21 | p | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:111:21:111:23 | ... .0 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:111:21:111:23 | ... .0 | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer | +| nested_types.swift:111:21:111:23 | ... .0 | (parent:Inner).TOuter | nested_types.swift:13:13:13:18 | TOuter | | nested_types.swift:111:21:111:23 | ... .0 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:111:21:111:34 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | | nested_types.swift:116:12:116:12 | x | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:116:12:116:12 | x | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:12:116:12 | x | T0.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:116:12:116:12 | x | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:116:12:116:12 | x | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:12:116:12 | x | T1.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:116:12:116:12 | x | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:116:21:116:21 | y | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:116:21:116:21 | y | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:21:116:21 | y | T0.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:116:21:116:21 | y | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:116:21:116:21 | y | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:116:21:116:21 | y | T1.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:116:21:116:21 | y | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:117:13:117:13 | a | | {EXTERNAL LOCATION} | Int | | nested_types.swift:117:17:117:17 | x | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:117:17:117:17 | x | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:117:17:117:17 | x | T0.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:117:17:117:17 | x | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:117:17:117:17 | x | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:117:17:117:17 | x | T1.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:117:17:117:17 | x | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:117:17:117:19 | ... .0 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:117:17:117:19 | ... .0 | (parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:117:17:117:19 | ... .0 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:117:17:117:30 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | | nested_types.swift:118:17:118:17 | x | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:118:17:118:17 | x | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:118:17:118:17 | x | T0.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:118:17:118:17 | x | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:118:17:118:17 | x | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:118:17:118:17 | x | T1.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:118:17:118:17 | x | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:118:17:118:19 | ... .0 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:118:17:118:19 | ... .0 | (parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:118:17:118:19 | ... .0 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:119:13:119:13 | c | | {EXTERNAL LOCATION} | Int | | nested_types.swift:119:17:119:17 | y | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:119:17:119:17 | y | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:119:17:119:17 | y | T0.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:119:17:119:17 | y | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:119:17:119:17 | y | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:119:17:119:17 | y | T1.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:119:17:119:17 | y | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:119:17:119:19 | ... .0 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:119:17:119:19 | ... .0 | (parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:119:17:119:19 | ... .0 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:119:17:119:30 | ... .getInner(...) | | {EXTERNAL LOCATION} | Int | | nested_types.swift:120:17:120:17 | y | | {EXTERNAL LOCATION} | Tuple2 | | nested_types.swift:120:17:120:17 | y | T0 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:120:17:120:17 | y | T0.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:120:17:120:17 | y | T0.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:120:17:120:17 | y | T1 | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:120:17:120:17 | y | T1.(parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:120:17:120:17 | y | T1.TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:120:17:120:19 | ... .0 | | nested_types.swift:14:5:47:5 | Outer.Inner | +| nested_types.swift:120:17:120:19 | ... .0 | (parent:Inner) | nested_types.swift:115:1:122:1 | Foo | | nested_types.swift:120:17:120:19 | ... .0 | TInner | {EXTERNAL LOCATION} | Int | | nested_types.swift:124:29:124:33 | inner | | nested_types.swift:14:5:47:5 | Outer.Inner | | nested_types.swift:124:29:124:33 | inner | (parent:Inner) | nested_types.swift:13:1:113:1 | Outer |