Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/scoping/TTCN3GlobalScopeProvider.java +11 −13 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import com.google.common.base.Predicate; import com.google.common.collect.HashMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; import com.google.common.collect.SetMultimap; import com.google.common.collect.Sets; import com.google.inject.Inject; Loading @@ -40,8 +42,8 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider { // TODO: do not use this map when using the xtext eclipse editor private static final Map<Resource, IScope> staticScope = Maps.newHashMap(); private static final SetMultimap<Resource, ImportData> imports = HashMultimap.create(); private static final SetMultimap<TTCN3Module, TTCN3Module> importedFrom = HashMultimap.create(); private static final SetMultimap<Resource, ImportData> imports = Multimaps.synchronizedSetMultimap(HashMultimap.<Resource, ImportData>create()); public static final Multimap<TTCN3Module, TTCN3Module> IMPORTED_FROM = Multimaps.synchronizedSetMultimap(HashMultimap.<TTCN3Module, TTCN3Module>create()); public static final Set<Resource> RESOURCES = Sets.newHashSet(); Loading Loading @@ -87,10 +89,12 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider { d = EObjectDescription.create(e.getQualifiedName().getLastSegment(), e.getEObjectOrProxy()); objects.add(d); TTCN3Module importedModule = (TTCN3Module) module.getEObjectOrProxy(); if (importedFrom.containsKey(importedModule)) { importedFrom.get(importedModule).add(TTCN3StatisticsProvider.getInstance().getModule(resource)); synchronized (IMPORTED_FROM) { if (IMPORTED_FROM.containsKey(importedModule)) { IMPORTED_FROM.get(importedModule).add(TTCN3StatisticsProvider.getInstance().getModule(resource)); } else { importedFrom.put(importedModule, TTCN3StatisticsProvider.getInstance().getModule(resource)); IMPORTED_FROM.put(importedModule, TTCN3StatisticsProvider.getInstance().getModule(resource)); } } } else if (EcoreUtil2.isAssignableFrom(TTCN3Package.eINSTANCE.getGroupDef(), e.getEClass())) { d = EObjectDescription.create(e.getQualifiedName().getLastSegment(), e.getEObjectOrProxy()); Loading Loading @@ -227,12 +231,6 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider { } } public Set<TTCN3Module> getImportingModules(TTCN3Module module) { if (importedFrom.containsKey(module)) { return importedFrom.get(module); } else { return Sets.newHashSet(); } } } de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/validation/CodeStyleValidator.xtend +11 −28 Original line number Diff line number Diff line Loading @@ -79,6 +79,8 @@ import org.eclipse.xtext.validation.EValidatorRegistrar import static extension de.ugoe.cs.swe.common.TTCN3ReferenceHelper.* import static extension de.ugoe.cs.swe.common.TTCN3ScopeHelper.* import static extension org.eclipse.xtext.EcoreUtil2.* import static extension de.ugoe.cs.swe.scoping.TTCN3GlobalScopeProvider.* import java.util.Iterator class CheckDefinitionComeFirstParameter { public boolean hasOtherDefinitions Loading Loading @@ -761,39 +763,20 @@ class CodeStyleValidator extends AbstractDeclarativeValidator { // TODO: figure out another way to find referenced objects private def boolean isUnreferenced(EObject type, TTCN3Module parent) { stopwatch.start val target = newHashSet(type); var boolean found = parent.isReferenced2(target) stopwatch.stop // TODO: improve performance (hit list for resources which are often called successfully?) if (!found) { val TTCN3GlobalScopeProvider scopeProvider = globalScopeProvider as TTCN3GlobalScopeProvider if (scopeProvider == null) { return true } val modulesImportingThis = scopeProvider.getImportingModules(parent); for (m : modulesImportingThis) { if (m.isReferenced2(target)) { synchronized (IMPORTED_FROM) { if (IMPORTED_FROM.containsKey(parent)) { val list = IMPORTED_FROM.get(parent) for (i : 0 .. list.size -1) { if (list.get(i).isReferenced2(target)) { return false } } // for (r : parent.resourceSet.resources) { // val TTCN3Module currentBase = statistics.getModule(r) // // // only consider modules that are importing the current module // if (statistics.isBaseModuleImported(parent, currentBase.name)) { // if (currentBase.isReferenced2(target)) { // return false // } // } // } } } } return !found Loading Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/scoping/TTCN3GlobalScopeProvider.java +11 −13 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import com.google.common.base.Predicate; import com.google.common.collect.HashMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; import com.google.common.collect.SetMultimap; import com.google.common.collect.Sets; import com.google.inject.Inject; Loading @@ -40,8 +42,8 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider { // TODO: do not use this map when using the xtext eclipse editor private static final Map<Resource, IScope> staticScope = Maps.newHashMap(); private static final SetMultimap<Resource, ImportData> imports = HashMultimap.create(); private static final SetMultimap<TTCN3Module, TTCN3Module> importedFrom = HashMultimap.create(); private static final SetMultimap<Resource, ImportData> imports = Multimaps.synchronizedSetMultimap(HashMultimap.<Resource, ImportData>create()); public static final Multimap<TTCN3Module, TTCN3Module> IMPORTED_FROM = Multimaps.synchronizedSetMultimap(HashMultimap.<TTCN3Module, TTCN3Module>create()); public static final Set<Resource> RESOURCES = Sets.newHashSet(); Loading Loading @@ -87,10 +89,12 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider { d = EObjectDescription.create(e.getQualifiedName().getLastSegment(), e.getEObjectOrProxy()); objects.add(d); TTCN3Module importedModule = (TTCN3Module) module.getEObjectOrProxy(); if (importedFrom.containsKey(importedModule)) { importedFrom.get(importedModule).add(TTCN3StatisticsProvider.getInstance().getModule(resource)); synchronized (IMPORTED_FROM) { if (IMPORTED_FROM.containsKey(importedModule)) { IMPORTED_FROM.get(importedModule).add(TTCN3StatisticsProvider.getInstance().getModule(resource)); } else { importedFrom.put(importedModule, TTCN3StatisticsProvider.getInstance().getModule(resource)); IMPORTED_FROM.put(importedModule, TTCN3StatisticsProvider.getInstance().getModule(resource)); } } } else if (EcoreUtil2.isAssignableFrom(TTCN3Package.eINSTANCE.getGroupDef(), e.getEClass())) { d = EObjectDescription.create(e.getQualifiedName().getLastSegment(), e.getEObjectOrProxy()); Loading Loading @@ -227,12 +231,6 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider { } } public Set<TTCN3Module> getImportingModules(TTCN3Module module) { if (importedFrom.containsKey(module)) { return importedFrom.get(module); } else { return Sets.newHashSet(); } } }
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/validation/CodeStyleValidator.xtend +11 −28 Original line number Diff line number Diff line Loading @@ -79,6 +79,8 @@ import org.eclipse.xtext.validation.EValidatorRegistrar import static extension de.ugoe.cs.swe.common.TTCN3ReferenceHelper.* import static extension de.ugoe.cs.swe.common.TTCN3ScopeHelper.* import static extension org.eclipse.xtext.EcoreUtil2.* import static extension de.ugoe.cs.swe.scoping.TTCN3GlobalScopeProvider.* import java.util.Iterator class CheckDefinitionComeFirstParameter { public boolean hasOtherDefinitions Loading Loading @@ -761,39 +763,20 @@ class CodeStyleValidator extends AbstractDeclarativeValidator { // TODO: figure out another way to find referenced objects private def boolean isUnreferenced(EObject type, TTCN3Module parent) { stopwatch.start val target = newHashSet(type); var boolean found = parent.isReferenced2(target) stopwatch.stop // TODO: improve performance (hit list for resources which are often called successfully?) if (!found) { val TTCN3GlobalScopeProvider scopeProvider = globalScopeProvider as TTCN3GlobalScopeProvider if (scopeProvider == null) { return true } val modulesImportingThis = scopeProvider.getImportingModules(parent); for (m : modulesImportingThis) { if (m.isReferenced2(target)) { synchronized (IMPORTED_FROM) { if (IMPORTED_FROM.containsKey(parent)) { val list = IMPORTED_FROM.get(parent) for (i : 0 .. list.size -1) { if (list.get(i).isReferenced2(target)) { return false } } // for (r : parent.resourceSet.resources) { // val TTCN3Module currentBase = statistics.getModule(r) // // // only consider modules that are importing the current module // if (statistics.isBaseModuleImported(parent, currentBase.name)) { // if (currentBase.isReferenced2(target)) { // return false // } // } // } } } } return !found Loading