Loading de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/TTCN3ResourceProvider.java +2 −1 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ public class TTCN3ResourceProvider { } } TTCN3StatisticsProvider.getInstance().setParsingCompleted(true); System.out.println("Test suite parsed in " + MiscTools.secondsToString(TTCN3StatisticsProvider.getInstance().getParseTime()) + " minutes."); } Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/scoping/TTCN3ImportedNamespaceAwareLocalScopeProvider.java +20 −12 Original line number Diff line number Diff line Loading @@ -21,12 +21,15 @@ import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider; import org.eclipse.xtext.util.Strings; import org.eclipse.xtext.util.Tuples; import com.google.common.collect.HashMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import com.google.inject.Inject; import de.ugoe.cs.swe.tTCN3.ImportDef; import de.ugoe.cs.swe.tTCN3.TTCN3Module; import de.ugoe.cs.swe.tTCN3.TTCN3Package; import de.ugoe.cs.swe.validation.TTCN3StatisticsProvider; /** * A local scope provider that understands module imports. Loading @@ -39,6 +42,8 @@ public class TTCN3ImportedNamespaceAwareLocalScopeProvider extends ImportedNames @Inject private IQualifiedNameConverter qualifiedNameConverter; private Multimap<TTCN3Module, ImportNormalizer> moduleImportNormalizers = HashMultimap.create(); @Override protected IScope getLocalElementsScope(IScope parent, EObject context, EReference reference) { final List<ImportNormalizer> namespaceResolvers = Lists.newArrayList(); Loading @@ -48,14 +53,22 @@ public class TTCN3ImportedNamespaceAwareLocalScopeProvider extends ImportedNames boolean ignoreCase = isIgnoreCase(reference); if (TTCN3Module.class.isAssignableFrom(context.getClass())) { namespaceResolvers.addAll(getImportedNamespaceResolvers(context, ignoreCase)); namespaceResolvers.addAll(namespaceResolverForType(context, ignoreCase, TTCN3Package.eINSTANCE.getGroupDef(), true, allDescriptions)); namespaceResolvers.addAll(namespaceResolverForType(context, ignoreCase, TTCN3Package.eINSTANCE.getEnumeration(), false, allDescriptions)); namespaceResolvers.addAll(namespaceResolverForType(context, ignoreCase, TTCN3Package.eINSTANCE.getTTCN3Module(), true, allDescriptions)); TTCN3Module module = (TTCN3Module) context; if (TTCN3StatisticsProvider.getInstance().isParsingCompleted() && moduleImportNormalizers.containsKey(module)) { namespaceResolvers.addAll(moduleImportNormalizers.get(module)); } else { namespaceResolvers.addAll(namespaceResolverForType(context, ignoreCase, TTCN3Package.eINSTANCE.getGroupDef(), true, allDescriptions)); namespaceResolvers.addAll(namespaceResolverForType(context, ignoreCase, TTCN3Package.eINSTANCE.getEnumeration(), false, allDescriptions)); namespaceResolvers.addAll(namespaceResolverForType(context, ignoreCase, TTCN3Package.eINSTANCE.getTTCN3Module(), true, allDescriptions)); namespaceResolvers.addAll(namespaceResolverForImportedType((TTCN3Module) context, parent, ignoreCase, allDescriptions)); if (TTCN3StatisticsProvider.getInstance().isParsingCompleted()) { moduleImportNormalizers.putAll(module, namespaceResolvers); } } namespaceResolvers.addAll(getImportedNamespaceResolvers(context, ignoreCase)); if (!namespaceResolvers.isEmpty()) { if (isRelativeImport() && name != null) { ImportNormalizer localNormalizer = doCreateImportNormalizer(name, true, ignoreCase); Loading @@ -65,11 +78,6 @@ public class TTCN3ImportedNamespaceAwareLocalScopeProvider extends ImportedNames result = createImportScope(result, namespaceResolvers, null, reference.getEReferenceType(), isIgnoreCase(reference)); } } if (name != null) { ImportNormalizer localNormalizer = doCreateImportNormalizer(name, true, ignoreCase); result = createImportScope(result, singletonList(localNormalizer), allDescriptions, reference.getEReferenceType(), isIgnoreCase(reference)); } return result; } Loading de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/validation/TTCN3StatisticsProvider.java +9 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ public class TTCN3StatisticsProvider { private int countStyle; private int countModularization; private boolean importsInitialized; private boolean parsingCompleted; public int getCountNaming() { return countNaming; Loading Loading @@ -242,4 +243,12 @@ public class TTCN3StatisticsProvider { return importsInitialized; } public boolean isParsingCompleted() { return parsingCompleted; } public void setParsingCompleted(boolean parsingCompleted) { this.parsingCompleted = parsingCompleted; } } Loading
de.ugoe.cs.swe.T3Q/src/de/ugoe/cs/swe/T3Q/TTCN3ResourceProvider.java +2 −1 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ public class TTCN3ResourceProvider { } } TTCN3StatisticsProvider.getInstance().setParsingCompleted(true); System.out.println("Test suite parsed in " + MiscTools.secondsToString(TTCN3StatisticsProvider.getInstance().getParseTime()) + " minutes."); } Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/scoping/TTCN3ImportedNamespaceAwareLocalScopeProvider.java +20 −12 Original line number Diff line number Diff line Loading @@ -21,12 +21,15 @@ import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider; import org.eclipse.xtext.util.Strings; import org.eclipse.xtext.util.Tuples; import com.google.common.collect.HashMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import com.google.inject.Inject; import de.ugoe.cs.swe.tTCN3.ImportDef; import de.ugoe.cs.swe.tTCN3.TTCN3Module; import de.ugoe.cs.swe.tTCN3.TTCN3Package; import de.ugoe.cs.swe.validation.TTCN3StatisticsProvider; /** * A local scope provider that understands module imports. Loading @@ -39,6 +42,8 @@ public class TTCN3ImportedNamespaceAwareLocalScopeProvider extends ImportedNames @Inject private IQualifiedNameConverter qualifiedNameConverter; private Multimap<TTCN3Module, ImportNormalizer> moduleImportNormalizers = HashMultimap.create(); @Override protected IScope getLocalElementsScope(IScope parent, EObject context, EReference reference) { final List<ImportNormalizer> namespaceResolvers = Lists.newArrayList(); Loading @@ -48,14 +53,22 @@ public class TTCN3ImportedNamespaceAwareLocalScopeProvider extends ImportedNames boolean ignoreCase = isIgnoreCase(reference); if (TTCN3Module.class.isAssignableFrom(context.getClass())) { namespaceResolvers.addAll(getImportedNamespaceResolvers(context, ignoreCase)); namespaceResolvers.addAll(namespaceResolverForType(context, ignoreCase, TTCN3Package.eINSTANCE.getGroupDef(), true, allDescriptions)); namespaceResolvers.addAll(namespaceResolverForType(context, ignoreCase, TTCN3Package.eINSTANCE.getEnumeration(), false, allDescriptions)); namespaceResolvers.addAll(namespaceResolverForType(context, ignoreCase, TTCN3Package.eINSTANCE.getTTCN3Module(), true, allDescriptions)); TTCN3Module module = (TTCN3Module) context; if (TTCN3StatisticsProvider.getInstance().isParsingCompleted() && moduleImportNormalizers.containsKey(module)) { namespaceResolvers.addAll(moduleImportNormalizers.get(module)); } else { namespaceResolvers.addAll(namespaceResolverForType(context, ignoreCase, TTCN3Package.eINSTANCE.getGroupDef(), true, allDescriptions)); namespaceResolvers.addAll(namespaceResolverForType(context, ignoreCase, TTCN3Package.eINSTANCE.getEnumeration(), false, allDescriptions)); namespaceResolvers.addAll(namespaceResolverForType(context, ignoreCase, TTCN3Package.eINSTANCE.getTTCN3Module(), true, allDescriptions)); namespaceResolvers.addAll(namespaceResolverForImportedType((TTCN3Module) context, parent, ignoreCase, allDescriptions)); if (TTCN3StatisticsProvider.getInstance().isParsingCompleted()) { moduleImportNormalizers.putAll(module, namespaceResolvers); } } namespaceResolvers.addAll(getImportedNamespaceResolvers(context, ignoreCase)); if (!namespaceResolvers.isEmpty()) { if (isRelativeImport() && name != null) { ImportNormalizer localNormalizer = doCreateImportNormalizer(name, true, ignoreCase); Loading @@ -65,11 +78,6 @@ public class TTCN3ImportedNamespaceAwareLocalScopeProvider extends ImportedNames result = createImportScope(result, namespaceResolvers, null, reference.getEReferenceType(), isIgnoreCase(reference)); } } if (name != null) { ImportNormalizer localNormalizer = doCreateImportNormalizer(name, true, ignoreCase); result = createImportScope(result, singletonList(localNormalizer), allDescriptions, reference.getEReferenceType(), isIgnoreCase(reference)); } return result; } Loading
de.ugoe.cs.swe.TTCN3/src/de/ugoe/cs/swe/validation/TTCN3StatisticsProvider.java +9 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ public class TTCN3StatisticsProvider { private int countStyle; private int countModularization; private boolean importsInitialized; private boolean parsingCompleted; public int getCountNaming() { return countNaming; Loading Loading @@ -242,4 +243,12 @@ public class TTCN3StatisticsProvider { return importsInitialized; } public boolean isParsingCompleted() { return parsingCompleted; } public void setParsingCompleted(boolean parsingCompleted) { this.parsingCompleted = parsingCompleted; } }