diff --git a/org.eclipse.xtext.testlanguages.ide/.classpath b/org.eclipse.xtext.testlanguages.ide/.classpath index 557b73a6c..aa4b1d2e8 100644 --- a/org.eclipse.xtext.testlanguages.ide/.classpath +++ b/org.eclipse.xtext.testlanguages.ide/.classpath @@ -6,12 +6,6 @@ - - - - - - diff --git a/org.eclipse.xtext.testlanguages.ide/build.properties b/org.eclipse.xtext.testlanguages.ide/build.properties index c2f1926b7..136c43d6a 100644 --- a/org.eclipse.xtext.testlanguages.ide/build.properties +++ b/org.eclipse.xtext.testlanguages.ide/build.properties @@ -1,6 +1,5 @@ source.. = src-gen/,\ - src/,\ - xtend-gen/ + src/ output.. = bin/main/ bin.includes = META-INF/,\ . diff --git a/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageReferenceUpdater.java b/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageReferenceUpdater.java new file mode 100644 index 000000000..6507d83fc --- /dev/null +++ b/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageReferenceUpdater.java @@ -0,0 +1,56 @@ +package org.eclipse.xtext.testlanguages.fileAware.ide.refactoring; + +import static org.eclipse.xtext.xbase.lib.IterableExtensions.filter; +import static org.eclipse.xtext.xbase.lib.IterableExtensions.head; +import static org.eclipse.xtext.xbase.lib.IterableExtensions.map; +import static org.eclipse.xtext.xbase.lib.IterableExtensions.toMap; +import static org.eclipse.xtext.xbase.lib.IterableExtensions.toSet; + +import java.util.Map; +import java.util.Set; + +import javax.inject.Inject; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.xtext.ide.serializer.hooks.IReferenceUpdaterContext; +import org.eclipse.xtext.ide.serializer.impl.ReferenceUpdater; +import org.eclipse.xtext.naming.IQualifiedNameProvider; +import org.eclipse.xtext.naming.QualifiedName; +import org.eclipse.xtext.testlanguages.fileAware.fileAware.Element; +import org.eclipse.xtext.testlanguages.fileAware.fileAware.FileAwareFactory; +import org.eclipse.xtext.testlanguages.fileAware.fileAware.Import; +import org.eclipse.xtext.testlanguages.fileAware.fileAware.PackageDeclaration; +import org.eclipse.xtext.xbase.lib.MapExtensions; + +public class FileAwareTestLanguageReferenceUpdater extends ReferenceUpdater { + @Inject + private IQualifiedNameProvider names; + + private FileAwareFactory fileAwareFactory = FileAwareFactory.eINSTANCE; + + @Override + public void update(IReferenceUpdaterContext context) { + super.update(context); + PackageDeclaration pkg = ((PackageDeclaration) head(context.getResource().getContents())); + QualifiedName pkgName = names.getFullyQualifiedName(pkg); + Map actual = toMap(pkg.getImports(), imp -> imp.getElement()); + Iterable targets = filter( + map(context.getUpdatableReferences(), ur -> ur.getTargetEObject()), + Element.class); + Set expected = toSet(filter(targets, e -> !names.getFullyQualifiedName(e).startsWith(pkgName))); + Set toAdd = toSet(filter(expected, it -> !actual.containsKey(it))); + Map toDelete = MapExtensions.filter(actual, (Element e, Import i) -> !expected.contains(e)); + if (!toAdd.isEmpty() || !toDelete.isEmpty()) { + context.modifyModel(() -> { + toDelete.values().forEach(it -> EcoreUtil.remove(it)); + toAdd.forEach(e -> { + EList imports = pkg.getImports(); + Import newImport = fileAwareFactory.createImport(); + newImport.setElement(e); + imports.add(newImport); + }); + }); + } + } +} diff --git a/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageReferenceUpdater.xtend b/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageReferenceUpdater.xtend deleted file mode 100644 index aec48e60c..000000000 --- a/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageReferenceUpdater.xtend +++ /dev/null @@ -1,34 +0,0 @@ -package org.eclipse.xtext.testlanguages.fileAware.ide.refactoring - -import javax.inject.Inject -import org.eclipse.emf.ecore.util.EcoreUtil -import org.eclipse.xtext.ide.serializer.hooks.IReferenceUpdaterContext -import org.eclipse.xtext.ide.serializer.impl.ReferenceUpdater -import org.eclipse.xtext.naming.IQualifiedNameProvider -import org.eclipse.xtext.testlanguages.fileAware.fileAware.PackageDeclaration -import org.eclipse.xtext.testlanguages.fileAware.fileAware.FileAwareFactory -import org.eclipse.xtext.testlanguages.fileAware.fileAware.Element - -class FileAwareTestLanguageReferenceUpdater extends ReferenceUpdater { - - @Inject IQualifiedNameProvider names - extension FileAwareFactory = FileAwareFactory.eINSTANCE - - override update(IReferenceUpdaterContext context) { - super.update(context) - val pkg = context.resource.contents.head as PackageDeclaration - val pkgName = names.getFullyQualifiedName(pkg) - val actual = pkg.imports.toMap[element] - val targets = context.updatableReferences.map[targetEObject].filter(Element) - val expected = targets.filter[!names.getFullyQualifiedName(it).startsWith(pkgName)].toSet - val toAdd = expected.filter[!actual.containsKey(it)].toSet - val toDelete = actual.filter[!expected.contains($0)] - if (!toAdd.isEmpty || !toDelete.isEmpty) { - context.modifyModel [ - toDelete.values.forEach[EcoreUtil.remove(it)] - toAdd.forEach[e|pkg.imports += createImport => [element = e]] - ] - } - } - -} diff --git a/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageResourceRelocationStrategy.java b/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageResourceRelocationStrategy.java new file mode 100644 index 000000000..3bf1cb7da --- /dev/null +++ b/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageResourceRelocationStrategy.java @@ -0,0 +1,42 @@ +package org.eclipse.xtext.testlanguages.fileAware.ide.refactoring; + +import static org.eclipse.xtext.xbase.lib.IterableExtensions.drop; +import static org.eclipse.xtext.xbase.lib.IterableExtensions.filter; +import static org.eclipse.xtext.xbase.lib.IterableExtensions.head; + +import java.util.List; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.ide.refactoring.IResourceRelocationStrategy; +import org.eclipse.xtext.ide.refactoring.ResourceRelocationChange; +import org.eclipse.xtext.ide.refactoring.ResourceRelocationContext; +import org.eclipse.xtext.resource.IResourceServiceProvider; +import org.eclipse.xtext.testlanguages.fileAware.fileAware.PackageDeclaration; + +import com.google.common.base.Joiner; +import com.google.inject.Inject; + +public class FileAwareTestLanguageResourceRelocationStrategy implements IResourceRelocationStrategy { + + @Inject + private IResourceServiceProvider resourceServiceProvider; + + public boolean canHandle(ResourceRelocationChange change) { + return resourceServiceProvider.canHandle(change.getFromURI()); + } + + @Override + public void applyChange(ResourceRelocationContext context) { + filter(context.getChanges(), c -> canHandle(c)).forEach(change -> { + context.addModification(change, resource -> { + + EObject rootElement = head(resource.getContents()); + if (rootElement instanceof PackageDeclaration) { + List segments = change.getToURI().trimSegments(1).segmentsList(); + String newPackage = Joiner.on(".").join(drop(segments, 2)); + ((PackageDeclaration) rootElement).setName(newPackage); + } + }); + }); + } +} diff --git a/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageResourceRelocationStrategy.xtend b/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageResourceRelocationStrategy.xtend deleted file mode 100644 index e7d2b5e01..000000000 --- a/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageResourceRelocationStrategy.xtend +++ /dev/null @@ -1,29 +0,0 @@ -package org.eclipse.xtext.testlanguages.fileAware.ide.refactoring - -import com.google.inject.Inject -import org.eclipse.xtext.ide.refactoring.IResourceRelocationStrategy -import org.eclipse.xtext.ide.refactoring.ResourceRelocationChange -import org.eclipse.xtext.ide.refactoring.ResourceRelocationContext -import org.eclipse.xtext.resource.IResourceServiceProvider -import org.eclipse.xtext.testlanguages.fileAware.fileAware.PackageDeclaration - -class FileAwareTestLanguageResourceRelocationStrategy implements IResourceRelocationStrategy { - - @Inject IResourceServiceProvider resourceServiceProvider - - def boolean canHandle(ResourceRelocationChange change) { - resourceServiceProvider.canHandle(change.fromURI) - } - - override applyChange(ResourceRelocationContext context) { - context.changes.filter[ canHandle ].forEach [ change | - context.addModification(change) [ resource | - val rootElement = resource.contents.head - if (rootElement instanceof PackageDeclaration) { - val newPackage = change.toURI.trimSegments(1).segmentsList.drop(2).join('.') - rootElement.name = newPackage - } - ] - ] - } -} diff --git a/org.eclipse.xtext.testlanguages.ide/xtend-gen/org/eclipse/xtext/testlanguages/fileAware/ide/tests/FileAwareTestLanguageIdeInjectorProvider.java b/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/tests/FileAwareTestLanguageIdeInjectorProvider.java similarity index 68% rename from org.eclipse.xtext.testlanguages.ide/xtend-gen/org/eclipse/xtext/testlanguages/fileAware/ide/tests/FileAwareTestLanguageIdeInjectorProvider.java rename to org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/tests/FileAwareTestLanguageIdeInjectorProvider.java index ae881d25e..727cd7984 100644 --- a/org.eclipse.xtext.testlanguages.ide/xtend-gen/org/eclipse/xtext/testlanguages/fileAware/ide/tests/FileAwareTestLanguageIdeInjectorProvider.java +++ b/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/tests/FileAwareTestLanguageIdeInjectorProvider.java @@ -4,10 +4,9 @@ import com.google.inject.Injector; import org.eclipse.xtext.testlanguages.fileAware.ide.FileAwareTestLanguageIdeSetup; import org.eclipse.xtext.testlanguages.fileAware.tests.FileAwareTestLanguageInjectorProvider; -@SuppressWarnings("all") public class FileAwareTestLanguageIdeInjectorProvider extends FileAwareTestLanguageInjectorProvider { - @Override - public Injector internalCreateInjector() { - return new FileAwareTestLanguageIdeSetup().createInjectorAndDoEMFRegistration(); - } -} + + public Injector internalCreateInjector() { + return new FileAwareTestLanguageIdeSetup().createInjectorAndDoEMFRegistration(); + } +} \ No newline at end of file diff --git a/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/tests/FileAwareTestLanguageIdeInjectorProvider.xtend b/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/tests/FileAwareTestLanguageIdeInjectorProvider.xtend deleted file mode 100644 index 378e7a917..000000000 --- a/org.eclipse.xtext.testlanguages.ide/src/org/eclipse/xtext/testlanguages/fileAware/ide/tests/FileAwareTestLanguageIdeInjectorProvider.xtend +++ /dev/null @@ -1,12 +0,0 @@ -package org.eclipse.xtext.testlanguages.fileAware.ide.tests - -import com.google.inject.Injector -import org.eclipse.xtext.testlanguages.fileAware.ide.FileAwareTestLanguageIdeSetup -import org.eclipse.xtext.testlanguages.fileAware.tests.FileAwareTestLanguageInjectorProvider - -class FileAwareTestLanguageIdeInjectorProvider extends FileAwareTestLanguageInjectorProvider { - - override Injector internalCreateInjector() { - return new FileAwareTestLanguageIdeSetup().createInjectorAndDoEMFRegistration(); - } -} \ No newline at end of file diff --git a/org.eclipse.xtext.testlanguages.ide/xtend-gen/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageReferenceUpdater.java b/org.eclipse.xtext.testlanguages.ide/xtend-gen/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageReferenceUpdater.java deleted file mode 100644 index 769ccfa2c..000000000 --- a/org.eclipse.xtext.testlanguages.ide/xtend-gen/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageReferenceUpdater.java +++ /dev/null @@ -1,86 +0,0 @@ -package org.eclipse.xtext.testlanguages.fileAware.ide.refactoring; - -import com.google.common.collect.Iterables; -import java.util.Map; -import java.util.Set; -import java.util.function.Consumer; -import javax.inject.Inject; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.util.EcoreUtil; -import org.eclipse.xtext.ide.serializer.hooks.IReferenceUpdaterContext; -import org.eclipse.xtext.ide.serializer.hooks.IUpdatableReference; -import org.eclipse.xtext.ide.serializer.impl.ReferenceUpdater; -import org.eclipse.xtext.naming.IQualifiedNameProvider; -import org.eclipse.xtext.naming.QualifiedName; -import org.eclipse.xtext.testlanguages.fileAware.fileAware.Element; -import org.eclipse.xtext.testlanguages.fileAware.fileAware.FileAwareFactory; -import org.eclipse.xtext.testlanguages.fileAware.fileAware.Import; -import org.eclipse.xtext.testlanguages.fileAware.fileAware.PackageDeclaration; -import org.eclipse.xtext.xbase.lib.Extension; -import org.eclipse.xtext.xbase.lib.Functions.Function1; -import org.eclipse.xtext.xbase.lib.Functions.Function2; -import org.eclipse.xtext.xbase.lib.IterableExtensions; -import org.eclipse.xtext.xbase.lib.ListExtensions; -import org.eclipse.xtext.xbase.lib.MapExtensions; -import org.eclipse.xtext.xbase.lib.ObjectExtensions; -import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; - -@SuppressWarnings("all") -public class FileAwareTestLanguageReferenceUpdater extends ReferenceUpdater { - @Inject - private IQualifiedNameProvider names; - - @Extension - private FileAwareFactory _fileAwareFactory = FileAwareFactory.eINSTANCE; - - @Override - public void update(final IReferenceUpdaterContext context) { - super.update(context); - EObject _head = IterableExtensions.head(context.getResource().getContents()); - final PackageDeclaration pkg = ((PackageDeclaration) _head); - final QualifiedName pkgName = this.names.getFullyQualifiedName(pkg); - final Function1 _function = (Import it) -> { - return it.getElement(); - }; - final Map actual = IterableExtensions.toMap(pkg.getImports(), _function); - final Function1 _function_1 = (IUpdatableReference it) -> { - return it.getTargetEObject(); - }; - final Iterable targets = Iterables.filter(ListExtensions.map(context.getUpdatableReferences(), _function_1), Element.class); - final Function1 _function_2 = (Element it) -> { - boolean _startsWith = this.names.getFullyQualifiedName(it).startsWith(pkgName); - return Boolean.valueOf((!_startsWith)); - }; - final Set expected = IterableExtensions.toSet(IterableExtensions.filter(targets, _function_2)); - final Function1 _function_3 = (Element it) -> { - boolean _containsKey = actual.containsKey(it); - return Boolean.valueOf((!_containsKey)); - }; - final Set toAdd = IterableExtensions.toSet(IterableExtensions.filter(expected, _function_3)); - final Function2 _function_4 = (Element $0, Import $1) -> { - boolean _contains = expected.contains($0); - return Boolean.valueOf((!_contains)); - }; - final Map toDelete = MapExtensions.filter(actual, _function_4); - if (((!toAdd.isEmpty()) || (!toDelete.isEmpty()))) { - final Runnable _function_5 = () -> { - final Consumer _function_6 = (Import it) -> { - EcoreUtil.remove(it); - }; - toDelete.values().forEach(_function_6); - final Consumer _function_7 = (Element e) -> { - EList _imports = pkg.getImports(); - Import _createImport = this._fileAwareFactory.createImport(); - final Procedure1 _function_8 = (Import it) -> { - it.setElement(e); - }; - Import _doubleArrow = ObjectExtensions.operator_doubleArrow(_createImport, _function_8); - _imports.add(_doubleArrow); - }; - toAdd.forEach(_function_7); - }; - context.modifyModel(_function_5); - } - } -} diff --git a/org.eclipse.xtext.testlanguages.ide/xtend-gen/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageResourceRelocationStrategy.java b/org.eclipse.xtext.testlanguages.ide/xtend-gen/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageResourceRelocationStrategy.java deleted file mode 100644 index a214bbc2e..000000000 --- a/org.eclipse.xtext.testlanguages.ide/xtend-gen/org/eclipse/xtext/testlanguages/fileAware/ide/refactoring/FileAwareTestLanguageResourceRelocationStrategy.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.eclipse.xtext.testlanguages.fileAware.ide.refactoring; - -import com.google.inject.Inject; -import java.util.function.Consumer; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.xtext.ide.refactoring.IResourceRelocationStrategy; -import org.eclipse.xtext.ide.refactoring.ResourceRelocationChange; -import org.eclipse.xtext.ide.refactoring.ResourceRelocationContext; -import org.eclipse.xtext.ide.serializer.IChangeSerializer; -import org.eclipse.xtext.resource.IResourceServiceProvider; -import org.eclipse.xtext.testlanguages.fileAware.fileAware.PackageDeclaration; -import org.eclipse.xtext.xbase.lib.Functions.Function1; -import org.eclipse.xtext.xbase.lib.IterableExtensions; - -@SuppressWarnings("all") -public class FileAwareTestLanguageResourceRelocationStrategy implements IResourceRelocationStrategy { - @Inject - private IResourceServiceProvider resourceServiceProvider; - - public boolean canHandle(final ResourceRelocationChange change) { - return this.resourceServiceProvider.canHandle(change.getFromURI()); - } - - @Override - public void applyChange(final ResourceRelocationContext context) { - final Function1 _function = (ResourceRelocationChange it) -> { - return Boolean.valueOf(this.canHandle(it)); - }; - final Consumer _function_1 = (ResourceRelocationChange change) -> { - final IChangeSerializer.IModification _function_2 = (Resource resource) -> { - final EObject rootElement = IterableExtensions.head(resource.getContents()); - if ((rootElement instanceof PackageDeclaration)) { - final String newPackage = IterableExtensions.join(IterableExtensions.drop(change.getToURI().trimSegments(1).segmentsList(), 2), "."); - ((PackageDeclaration)rootElement).setName(newPackage); - } - }; - context.addModification(change, _function_2); - }; - IterableExtensions.filter(context.getChanges(), _function).forEach(_function_1); - } -} diff --git a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/fileAware/scoping/FileAwareTestLanguageImportScopeProvider.java b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/fileAware/scoping/FileAwareTestLanguageImportScopeProvider.java new file mode 100644 index 000000000..bff0f5924 --- /dev/null +++ b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/fileAware/scoping/FileAwareTestLanguageImportScopeProvider.java @@ -0,0 +1,40 @@ +package org.eclipse.xtext.testlanguages.fileAware.scoping; + +import static org.eclipse.xtext.testlanguages.fileAware.fileAware.FileAwarePackage.Literals.IMPORT__ELEMENT; + +import java.util.List; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.naming.QualifiedName; +import org.eclipse.xtext.nodemodel.util.NodeModelUtils; +import org.eclipse.xtext.scoping.impl.ImportNormalizer; +import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider; +import org.eclipse.xtext.testlanguages.fileAware.fileAware.Element; +import org.eclipse.xtext.testlanguages.fileAware.fileAware.Import; +import org.eclipse.xtext.testlanguages.fileAware.fileAware.PackageDeclaration; + +public class FileAwareTestLanguageImportScopeProvider extends ImportedNamespaceAwareLocalScopeProvider { + + @Override + protected List internalGetImportedNamespaceResolvers(EObject context, boolean ignoreCase) { + List resolvers = super.internalGetImportedNamespaceResolvers(context, ignoreCase); + if (context instanceof PackageDeclaration) { + resolvers.add(new ImportNormalizer(getQualifiedNameConverter().toQualifiedName(((PackageDeclaration) context).getName()), true, false)); + for (Import imp : ((PackageDeclaration) context).getImports()) { + QualifiedName name = getImportedNamespace(imp); + resolvers.add(new ImportNormalizer(name, false, false)); + } + } + return resolvers; + } + + private QualifiedName getImportedNamespace(Import imp) { + Element ele = imp.getElement(); + if (ele.eIsProxy()) { + String name = NodeModelUtils.findNodesForFeature(imp, IMPORT__ELEMENT).get(0).getText().trim(); + return getQualifiedNameConverter().toQualifiedName(name); + } else { + return getQualifiedNameProvider().getFullyQualifiedName(ele); + } + } +} diff --git a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/fileAware/scoping/FileAwareTestLanguageImportScopeProvider.xtend b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/fileAware/scoping/FileAwareTestLanguageImportScopeProvider.xtend deleted file mode 100644 index 8cc2443d8..000000000 --- a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/fileAware/scoping/FileAwareTestLanguageImportScopeProvider.xtend +++ /dev/null @@ -1,35 +0,0 @@ -package org.eclipse.xtext.testlanguages.fileAware.scoping - -import org.eclipse.emf.ecore.EObject -import org.eclipse.xtext.naming.QualifiedName -import org.eclipse.xtext.nodemodel.util.NodeModelUtils -import org.eclipse.xtext.scoping.impl.ImportNormalizer -import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider -import org.eclipse.xtext.testlanguages.fileAware.fileAware.Import -import org.eclipse.xtext.testlanguages.fileAware.fileAware.PackageDeclaration -import static org.eclipse.xtext.testlanguages.fileAware.fileAware.FileAwarePackage.Literals.* - -class FileAwareTestLanguageImportScopeProvider extends ImportedNamespaceAwareLocalScopeProvider { - - override protected internalGetImportedNamespaceResolvers(EObject context, boolean ignoreCase) { - val resolvers = super.internalGetImportedNamespaceResolvers(context, ignoreCase) - if (context instanceof PackageDeclaration) { - resolvers += new ImportNormalizer(qualifiedNameConverter.toQualifiedName(context.name), true, false) - for (imp : context.imports) { - val name = imp.importedNamespace - resolvers += new ImportNormalizer(name, false, false) - } - } - return resolvers - } - - private def QualifiedName getImportedNamespace(Import imp) { - val ele = imp.element - if (ele.eIsProxy) { - val name = NodeModelUtils.findNodesForFeature(imp, IMPORT__ELEMENT).head.text.trim - return qualifiedNameConverter.toQualifiedName(name) - } else { - return qualifiedNameProvider.getFullyQualifiedName(ele) - } - } -} diff --git a/org.eclipse.xtext.testlanguages/xtend-gen/org/eclipse/xtext/testlanguages/fileAware/scoping/FileAwareTestLanguageImportScopeProvider.java b/org.eclipse.xtext.testlanguages/xtend-gen/org/eclipse/xtext/testlanguages/fileAware/scoping/FileAwareTestLanguageImportScopeProvider.java deleted file mode 100644 index a42bc82dd..000000000 --- a/org.eclipse.xtext.testlanguages/xtend-gen/org/eclipse/xtext/testlanguages/fileAware/scoping/FileAwareTestLanguageImportScopeProvider.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.eclipse.xtext.testlanguages.fileAware.scoping; - -import java.util.List; -import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.xtext.naming.QualifiedName; -import org.eclipse.xtext.nodemodel.INode; -import org.eclipse.xtext.nodemodel.util.NodeModelUtils; -import org.eclipse.xtext.scoping.impl.ImportNormalizer; -import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider; -import org.eclipse.xtext.testlanguages.fileAware.fileAware.Element; -import org.eclipse.xtext.testlanguages.fileAware.fileAware.FileAwarePackage; -import org.eclipse.xtext.testlanguages.fileAware.fileAware.Import; -import org.eclipse.xtext.testlanguages.fileAware.fileAware.PackageDeclaration; -import org.eclipse.xtext.xbase.lib.IterableExtensions; - -@SuppressWarnings("all") -public class FileAwareTestLanguageImportScopeProvider extends ImportedNamespaceAwareLocalScopeProvider { - @Override - protected List internalGetImportedNamespaceResolvers(final EObject context, final boolean ignoreCase) { - final List resolvers = super.internalGetImportedNamespaceResolvers(context, ignoreCase); - if ((context instanceof PackageDeclaration)) { - QualifiedName _qualifiedName = this.getQualifiedNameConverter().toQualifiedName(((PackageDeclaration)context).getName()); - ImportNormalizer _importNormalizer = new ImportNormalizer(_qualifiedName, true, false); - resolvers.add(_importNormalizer); - EList _imports = ((PackageDeclaration)context).getImports(); - for (final Import imp : _imports) { - { - final QualifiedName name = this.getImportedNamespace(imp); - ImportNormalizer _importNormalizer_1 = new ImportNormalizer(name, false, false); - resolvers.add(_importNormalizer_1); - } - } - } - return resolvers; - } - - private QualifiedName getImportedNamespace(final Import imp) { - final Element ele = imp.getElement(); - boolean _eIsProxy = ele.eIsProxy(); - if (_eIsProxy) { - final String name = IterableExtensions.head(NodeModelUtils.findNodesForFeature(imp, FileAwarePackage.Literals.IMPORT__ELEMENT)).getText().trim(); - return this.getQualifiedNameConverter().toQualifiedName(name); - } else { - return this.getQualifiedNameProvider().getFullyQualifiedName(ele); - } - } -}