From 9b120bb5f2e0f000225f540286d0fc2ed46562e1 Mon Sep 17 00:00:00 2001 From: davu Date: Sun, 5 Mar 2023 00:01:44 +0100 Subject: [PATCH] PR suggestion for returnType using addTypeToLookups --- dsymbol/src/dsymbol/conversion/first.d | 10 ++-------- dsymbol/src/dsymbol/conversion/second.d | 22 ---------------------- dsymbol/src/dsymbol/tests.d | 4 ++-- dsymbol/src/dsymbol/type_lookup.d | 1 - 4 files changed, 4 insertions(+), 33 deletions(-) diff --git a/dsymbol/src/dsymbol/conversion/first.d b/dsymbol/src/dsymbol/conversion/first.d index 093938b..14d3269 100644 --- a/dsymbol/src/dsymbol/conversion/first.d +++ b/dsymbol/src/dsymbol/conversion/first.d @@ -150,14 +150,8 @@ final class FirstPass : ASTVisitor currentSymbol.acSymbol.name, dec.parameters, dec.templateParameters); } - if (dec.returnType !is null) { - - // Do lookup if return type exists - auto app = appender!string(); - app.formatNode(dec.returnType); - - currentSymbol.typeLookups.insert(TypeLookupsAllocator.instance.make!TypeLookup( - istring(app.data), TypeLookupKind.returnType)); + if (dec.returnType !is null){ + addTypeToLookups(currentSymbol.typeLookups, dec.returnType); } } diff --git a/dsymbol/src/dsymbol/conversion/second.d b/dsymbol/src/dsymbol/conversion/second.d index 3aacf89..a94795f 100644 --- a/dsymbol/src/dsymbol/conversion/second.d +++ b/dsymbol/src/dsymbol/conversion/second.d @@ -311,25 +311,6 @@ do private: -void resolveReturnType(DSymbol* symbol, ref TypeLookups typeLookups, - Scope* moduleScope, ref ModuleCache cache) -{ - foreach (returnType; typeLookups[].filter!(a => a.kind == TypeLookupKind.returnType)) - { - assert(returnType.breadcrumbs.length > 0); - auto parts = symbol.getPartsByName(returnType.breadcrumbs.front); - if (parts.empty){ - // If nothing found try to lookup within the global scope - auto found = moduleScope.getSymbolsAtGlobalScope(returnType.breadcrumbs.front); - if (!found.empty) { - symbol.returnType = found.front; - } - - } - } - -} - void resolveInheritance(DSymbol* symbol, ref TypeLookups typeLookups, Scope* moduleScope, ref ModuleCache cache) { @@ -437,9 +418,6 @@ void resolveType(DSymbol* symbol, ref TypeLookups typeLookups, // issue 94 else if (lookup.kind == TypeLookupKind.inherit) resolveInheritance(symbol, typeLookups, moduleScope, cache); - else if (lookup.kind == TypeLookupKind.returnType){ - resolveReturnType(symbol, typeLookups, moduleScope, cache); - } else assert(false, "How did this happen?"); } diff --git a/dsymbol/src/dsymbol/tests.d b/dsymbol/src/dsymbol/tests.d index 3a0bae5..883d692 100644 --- a/dsymbol/src/dsymbol/tests.d +++ b/dsymbol/src/dsymbol/tests.d @@ -133,7 +133,7 @@ unittest auto source = q{ int meaningOfLife() { return 42; } }; auto pair = generateAutocompleteTrees(source, cache); auto meaningOfLife = pair.symbol.getFirstPartNamed(istring("meaningOfLife")); - assert(meaningOfLife.returnType.name == "int"); + assert(meaningOfLife.type.name == "int"); } unittest @@ -144,7 +144,7 @@ unittest auto pair = generateAutocompleteTrees(source, cache); auto lifeClass = pair.symbol.getFirstPartNamed(istring("Life")); auto meaningOfLife = lifeClass.getFirstPartNamed(istring("meaningOfLife")); - assert(meaningOfLife.returnType.name == "uint"); + assert(meaningOfLife.type.name == "uint"); } unittest diff --git a/dsymbol/src/dsymbol/type_lookup.d b/dsymbol/src/dsymbol/type_lookup.d index 84e14db..2260e57 100644 --- a/dsymbol/src/dsymbol/type_lookup.d +++ b/dsymbol/src/dsymbol/type_lookup.d @@ -14,7 +14,6 @@ enum TypeLookupKind : ubyte mixinTemplate, varOrFunType, selectiveImport, - returnType, } /**