From 74f93610c2c01a6928a0027ccde14b2d591f180e Mon Sep 17 00:00:00 2001 From: Hackerpilot Date: Wed, 9 Jul 2014 17:06:56 -0700 Subject: [PATCH] Fix #12 --- containers | 2 +- conversion/third.d | 31 ++++++++++++++++++++++++------- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/containers b/containers index 2a72525..74b3944 160000 --- a/containers +++ b/containers @@ -1 +1 @@ -Subproject commit 2a72525f649850f452f21e7f362f70440f487a61 +Subproject commit 74b394404947f8c1ea9c6e769fdb413db049d27d diff --git a/conversion/third.d b/conversion/third.d index 5a832e2..2887333 100644 --- a/conversion/third.d +++ b/conversion/third.d @@ -69,11 +69,6 @@ private: case className: case interfaceName: resolveInheritance(currentSymbol); - goto case structName; - case structName: - case unionName: - resolveAliasThis(currentSymbol); - resolveMixinTemplates(currentSymbol); break; case variableName: case memberVariableName: @@ -85,6 +80,8 @@ private: t = t.type; currentSymbol.acSymbol.type = t; break; + case structName: + case unionName: case enumName: case keyword: case enumMember: @@ -97,10 +94,24 @@ private: case mixinTemplateName: break; } + foreach (child; currentSymbol.children) { thirdPass(child); } + + with (CompletionKind) switch (currentSymbol.acSymbol.kind) + { + case className: + case interfaceName: + case structName: + case unionName: + resolveAliasThis(currentSymbol); + resolveMixinTemplates(currentSymbol); + break; + default: + break; + } } void resolveInheritance(SemanticSymbol* currentSymbol) @@ -129,10 +140,16 @@ private: void resolveAliasThis(SemanticSymbol* currentSymbol) { - // TODO: + foreach (aliasThis; currentSymbol.aliasThis) + { + auto parts = currentSymbol.acSymbol.getPartsByName(aliasThis); + if (parts.length == 0 || parts[0].type is null) + continue; + currentSymbol.acSymbol.parts.insert(parts[0].type.parts[]); + } } - void resolveMixinTemplates(SemanticSymbol* currentSymbol) + void resolveMixinTemplates(SemanticSymbol*) { // TODO: }