Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/scoping/TTCN3GlobalScopeProvider.java +18 −4 Original line number Diff line number Diff line Loading @@ -60,6 +60,10 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider { return getImportedScope(resource, reference); } protected IScope getImportedScope(final Resource resource) { return getImportedScope(resource, null); } protected IScope getImportedScope(final Resource resource, final EReference reference) { List<String> importsString = getImports(resource); List<IEObjectDescription> objects = Lists.newArrayList(); Loading Loading @@ -138,15 +142,21 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider { } // add exported objects to import list if (TTCN3StatisticsProvider.getInstance().isParsingCompleted() && module != null && objects.size() > 0) { ImportData m = new ImportData(((TTCN3Module) module.getEObjectOrProxy()).getName(), null); TTCN3Module importedModule = (TTCN3Module) module.getEObjectOrProxy(); ImportData m = new ImportData(importedModule.getName(), null); for (ImportData d : imports.get(resource)) { if (d.equals(m)) if (d.equals(m)) { d.getExportedObjects().addAll(objects); d.setModule(importedModule); } } } } } } if (reference == null) return null; IScope scope = MultimapBasedScope.createScope(IScope.NULLSCOPE, objects, isIgnoreCase(reference)); if (TTCN3StatisticsProvider.getInstance().isParsingCompleted()) { Loading Loading @@ -198,6 +208,10 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider { if (imports.containsKey(resource)) { return imports.get(resource); } else { getImportedScope(resource); if (imports.containsKey(resource)) { return imports.get(resource); } return Lists.newArrayList(); } } Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/validation/CodeStyleValidator.xtend +34 −1 Original line number Diff line number Diff line Loading @@ -77,6 +77,7 @@ import org.eclipse.xtext.scoping.IGlobalScopeProvider import com.google.inject.Inject import de.ugoe.cs.swe.scoping.TTCN3GlobalScopeProvider import de.ugoe.cs.swe.scoping.ImportData import java.util.Set class CheckDefinitionComeFirstParameter { public boolean hasOtherDefinitions Loading Loading @@ -1045,7 +1046,39 @@ class CodeStyleValidator extends AbstractDeclarativeValidator { val List<ImportData> data = scopeProvider.importedObjects(module.eResource); //TODO: implement validations for (d : data) { if (d.module == null) { TTCN3StatisticsProvider.getInstance.incrementCountStyle val message = "Imported module \"" + d.importDef.name + "\" cannot be resolved!" val INode node = NodeModelUtils.getNode(d.importDef) warning( message, null, MessageClass.STYLE.toString, node.startLine.toString, node.endLine.toString, "6.18, " + MiscTools.getMethodName() ); } val Set<EObject> target = newHashSet(d.exportedObjects.map[getEObjectOrProxy]); var boolean found = module.isReferenced2(target) if (!found && d.module != null) { TTCN3StatisticsProvider.getInstance.incrementCountStyle val message = "No definitions from imported module \"" + d.importDef.name + "\" are ever used!" val INode node = NodeModelUtils.getNode(d.importDef) warning( message, null, MessageClass.STYLE.toString, node.startLine.toString, node.endLine.toString, "6.18, " + MiscTools.getMethodName() ); } } } override register(EValidatorRegistrar registrar) { Loading Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/scoping/TTCN3GlobalScopeProvider.java +18 −4 Original line number Diff line number Diff line Loading @@ -60,6 +60,10 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider { return getImportedScope(resource, reference); } protected IScope getImportedScope(final Resource resource) { return getImportedScope(resource, null); } protected IScope getImportedScope(final Resource resource, final EReference reference) { List<String> importsString = getImports(resource); List<IEObjectDescription> objects = Lists.newArrayList(); Loading Loading @@ -138,15 +142,21 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider { } // add exported objects to import list if (TTCN3StatisticsProvider.getInstance().isParsingCompleted() && module != null && objects.size() > 0) { ImportData m = new ImportData(((TTCN3Module) module.getEObjectOrProxy()).getName(), null); TTCN3Module importedModule = (TTCN3Module) module.getEObjectOrProxy(); ImportData m = new ImportData(importedModule.getName(), null); for (ImportData d : imports.get(resource)) { if (d.equals(m)) if (d.equals(m)) { d.getExportedObjects().addAll(objects); d.setModule(importedModule); } } } } } } if (reference == null) return null; IScope scope = MultimapBasedScope.createScope(IScope.NULLSCOPE, objects, isIgnoreCase(reference)); if (TTCN3StatisticsProvider.getInstance().isParsingCompleted()) { Loading Loading @@ -198,6 +208,10 @@ public class TTCN3GlobalScopeProvider extends AbstractGlobalScopeProvider { if (imports.containsKey(resource)) { return imports.get(resource); } else { getImportedScope(resource); if (imports.containsKey(resource)) { return imports.get(resource); } return Lists.newArrayList(); } } Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/validation/CodeStyleValidator.xtend +34 −1 Original line number Diff line number Diff line Loading @@ -77,6 +77,7 @@ import org.eclipse.xtext.scoping.IGlobalScopeProvider import com.google.inject.Inject import de.ugoe.cs.swe.scoping.TTCN3GlobalScopeProvider import de.ugoe.cs.swe.scoping.ImportData import java.util.Set class CheckDefinitionComeFirstParameter { public boolean hasOtherDefinitions Loading Loading @@ -1045,7 +1046,39 @@ class CodeStyleValidator extends AbstractDeclarativeValidator { val List<ImportData> data = scopeProvider.importedObjects(module.eResource); //TODO: implement validations for (d : data) { if (d.module == null) { TTCN3StatisticsProvider.getInstance.incrementCountStyle val message = "Imported module \"" + d.importDef.name + "\" cannot be resolved!" val INode node = NodeModelUtils.getNode(d.importDef) warning( message, null, MessageClass.STYLE.toString, node.startLine.toString, node.endLine.toString, "6.18, " + MiscTools.getMethodName() ); } val Set<EObject> target = newHashSet(d.exportedObjects.map[getEObjectOrProxy]); var boolean found = module.isReferenced2(target) if (!found && d.module != null) { TTCN3StatisticsProvider.getInstance.incrementCountStyle val message = "No definitions from imported module \"" + d.importDef.name + "\" are ever used!" val INode node = NodeModelUtils.getNode(d.importDef) warning( message, null, MessageClass.STYLE.toString, node.startLine.toString, node.endLine.toString, "6.18, " + MiscTools.getMethodName() ); } } } override register(EValidatorRegistrar registrar) { Loading