X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.ui%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fui%2Feditor%2Fcompletion%2FSCLTextEditorEnvironment.java;h=98b51917744aaa43d7f179a0712e72b23bfdb29a;hb=bb8e054f744ea6a627ac9f2e3cc49c08719bed90;hp=9006f3cc2bd12d4d2d3dc98d654940dd209533cb;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor/completion/SCLTextEditorEnvironment.java b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor/completion/SCLTextEditorEnvironment.java index 9006f3cc2..98b519177 100644 --- a/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor/completion/SCLTextEditorEnvironment.java +++ b/bundles/org.simantics.scl.ui/src/org/simantics/scl/ui/editor/completion/SCLTextEditorEnvironment.java @@ -18,7 +18,9 @@ import org.simantics.scl.compiler.errors.Failable; import org.simantics.scl.compiler.internal.parsing.exceptions.SCLSyntaxErrorException; import org.simantics.scl.compiler.internal.parsing.parser.SCLParserImpl; import org.simantics.scl.compiler.module.ImportDeclaration; +import org.simantics.scl.compiler.module.InvalidModulePathException; import org.simantics.scl.compiler.module.Module; +import org.simantics.scl.compiler.module.ModuleUtils; import org.simantics.scl.compiler.module.repository.ImportFailureException; import org.simantics.scl.compiler.types.TCon; import org.simantics.scl.osgi.SCLOsgi; @@ -103,44 +105,19 @@ public class SCLTextEditorEnvironment { private ArrayList processRelativeImports(List relativeImports) { ArrayList absoluteImports = new ArrayList(relativeImports.size()); for(ImportDeclaration relativeImport : relativeImports) { - if(relativeImport.moduleName.startsWith(".")) { - String absoluteModuleName = convertRelativeModulePath(relativeImport.moduleName); - if(absoluteModuleName != null) - absoluteImports.add(new ImportDeclaration( - absoluteModuleName, relativeImport.localName, - relativeImport.reexport, relativeImport.spec)); - } - else - absoluteImports.add(relativeImport); + try { + String absoluteModuleName = ModuleUtils.resolveAbsolutePath(moduleName, relativeImport.moduleName); + absoluteImports.add(new ImportDeclaration( + relativeImport.location, + absoluteModuleName, relativeImport.localName, + relativeImport.reexport, relativeImport.spec)); + } catch (InvalidModulePathException e) { + // Nothing to do + } } return absoluteImports; } - private String convertRelativeModulePath(String relativeModuleName) { - String originalRelativeModuleName = relativeModuleName; - int p = moduleName.lastIndexOf('/'); - String parentPackage = p < 0 ? "" : moduleName.substring(0, p); - while(relativeModuleName.startsWith(".")) { - if(relativeModuleName.startsWith("./")) { - relativeModuleName = relativeModuleName.substring(2); - } - else if(relativeModuleName.startsWith("../")) { - relativeModuleName = relativeModuleName.substring(3); - if(parentPackage.isEmpty()) { - System.err.println("Couldn't resolve the relative module name " + originalRelativeModuleName + " when the current module name is " + moduleName + "."); - return null; - } - p = parentPackage.lastIndexOf('/'); - parentPackage = p < 0 ? "" : parentPackage.substring(0, p); - } - else { - System.err.println("Couldn't resolve the relative module name " + originalRelativeModuleName + ". It has an invalid syntax."); - return null; - } - } - return parentPackage + "/" + relativeModuleName; - } - private static final Comparator COMPARATOR = new Comparator() { @Override