From 7560d8347c306c152fd49cf65e09bf9a2bae7538 Mon Sep 17 00:00:00 2001
From: Vadim Lopatin <coolreader.org@gmail.com>
Date: Tue, 15 Aug 2017 15:26:38 +0300
Subject: [PATCH] DCD fixes; waiting for DSymbol PR

---
 src/dlangide/tools/d/dcdinterface.d | 18 +++++-------------
 1 file changed, 5 insertions(+), 13 deletions(-)

diff --git a/src/dlangide/tools/d/dcdinterface.d b/src/dlangide/tools/d/dcdinterface.d
index eb6e4f8..c465825 100644
--- a/src/dlangide/tools/d/dcdinterface.d
+++ b/src/dlangide/tools/d/dcdinterface.d
@@ -4,7 +4,6 @@ import dlangui.core.logger;
 import dlangui.core.files;
 import dlangui.platforms.common.platform;
 import ddebug.common.queue;
-import dsymbol.string_interning : internString;
 
 import core.thread;
 
@@ -59,7 +58,7 @@ class DCDTask {
     }
     void createRequest() {
         request.sourceCode = cast(ubyte[])_content;
-        request.fileName = internString(_filename);
+        request.fileName = _filename;
         request.cursorPosition = _index;
         request.importPaths = _importPaths;
     }
@@ -82,25 +81,16 @@ class DCDTask {
     }
 }
 
-string[] internStrings(in string[] src) {
-    if (!src)
-        return null;
-    string[] res;
-    foreach(s; src)
-        res ~= internString(s);
-    return res;
-}
-
 class ModuleCacheAccessor {
     import dsymbol.modulecache;
     //protected ASTAllocator _astAllocator;
     protected ModuleCache _moduleCache;
     this(in string[] importPaths) {
         _moduleCache = ModuleCache(new SharedASTAllocator);
-        _moduleCache.addImportPaths(internStrings(importPaths));
+        _moduleCache.addImportPaths(importPaths);
     }
     protected ModuleCache * getModuleCache(in string[] importPaths) {
-        _moduleCache.addImportPaths(internStrings(importPaths));
+        _moduleCache.addImportPaths(importPaths);
         return &_moduleCache;
     }
 }
@@ -161,6 +151,7 @@ class DCDInterface : Thread {
 
     void threadFunc() {
         _moduleCache = new ModuleCacheAccessor(null);
+        getModuleCache(null);
         Log.d("Starting DCD tasks thread");
         while (!_queue.closed()) {
             DCDTask task;
@@ -174,6 +165,7 @@ class DCDInterface : Thread {
             }
         }
         Log.d("Exiting DCD tasks thread");
+        destroyModuleCache();
     }
 
     import dsymbol.modulecache;