Search in sources :

Example 96 with QualifiedName

use of org.eclipse.xtext.naming.QualifiedName in project xtext-core by eclipse.

the class NamesAreUniqueValidationHelper method checkDescriptionForDuplicatedName.

protected void checkDescriptionForDuplicatedName(IEObjectDescription description, Map<EClass, Map<QualifiedName, IEObjectDescription>> clusterTypeToName, ValidationMessageAcceptor acceptor) {
    EObject object = description.getEObjectOrProxy();
    EClass eClass = object.eClass();
    QualifiedName qualifiedName = description.getName();
    EClass clusterType = getAssociatedClusterType(eClass);
    Map<QualifiedName, IEObjectDescription> nameToDescription = clusterTypeToName.get(clusterType);
    if (nameToDescription == null) {
        nameToDescription = Maps.newHashMap();
        nameToDescription.put(qualifiedName, description);
        clusterTypeToName.put(clusterType, nameToDescription);
    } else {
        if (nameToDescription.containsKey(qualifiedName)) {
            IEObjectDescription prevDescription = nameToDescription.get(qualifiedName);
            if (prevDescription != null) {
                createDuplicateNameError(prevDescription, clusterType, acceptor);
                nameToDescription.put(qualifiedName, null);
            }
            createDuplicateNameError(description, clusterType, acceptor);
        } else {
            nameToDescription.put(qualifiedName, description);
        }
    }
}
Also used : EClass(org.eclipse.emf.ecore.EClass) EObject(org.eclipse.emf.ecore.EObject) QualifiedName(org.eclipse.xtext.naming.QualifiedName) IEObjectDescription(org.eclipse.xtext.resource.IEObjectDescription)

Example 97 with QualifiedName

use of org.eclipse.xtext.naming.QualifiedName in project xtext-core by eclipse.

the class SuperCallScope method getAllElements.

@Override
public Iterable<IEObjectDescription> getAllElements() {
    AbstractRule contextRule = GrammarUtil.containingRule(context);
    Grammar grammar = contextRule != null ? GrammarUtil.getGrammar(contextRule) : GrammarUtil.getGrammar(context);
    Map<QualifiedName, IEObjectDescription> result = Maps.newLinkedHashMap();
    if (grammar != null) {
        String shortName = GrammarUtil.getSimpleName(grammar) + ".";
        String longName = grammar.getName() + ".";
        for (AbstractRule rule : grammar.getRules()) {
            putIfAbsent(EObjectDescription.create(shortName + rule.getName(), rule), result);
            putIfAbsent(EObjectDescription.create(longName + rule.getName(), rule), result);
        }
        boolean waitingForSuper = contextRule != null;
        for (Grammar usedGrammar : GrammarUtil.allUsedGrammars(grammar)) {
            shortName = GrammarUtil.getSimpleName(usedGrammar) + ".";
            longName = usedGrammar.getName() + ".";
            for (AbstractRule rule : usedGrammar.getRules()) {
                if (waitingForSuper) {
                    assert contextRule != null;
                    if (rule.getName().equals(contextRule.getName())) {
                        putIfAbsent(EObjectDescription.create(SUPER, rule), result);
                        waitingForSuper = false;
                    }
                }
                putIfAbsent(EObjectDescription.create(SUPER + "." + rule.getName(), rule), result);
                putIfAbsent(EObjectDescription.create(shortName + rule.getName(), rule), result);
                putIfAbsent(EObjectDescription.create(longName + rule.getName(), rule), result);
            }
        }
    }
    return Lists.newArrayList(result.values());
}
Also used : QualifiedName(org.eclipse.xtext.naming.QualifiedName) Grammar(org.eclipse.xtext.Grammar) AbstractRule(org.eclipse.xtext.AbstractRule) IEObjectDescription(org.eclipse.xtext.resource.IEObjectDescription)

Aggregations

QualifiedName (org.eclipse.xtext.naming.QualifiedName)97 IEObjectDescription (org.eclipse.xtext.resource.IEObjectDescription)32 Test (org.junit.Test)31 EObject (org.eclipse.emf.ecore.EObject)27 IResourceDescription (org.eclipse.xtext.resource.IResourceDescription)16 EClass (org.eclipse.emf.ecore.EClass)12 Resource (org.eclipse.emf.ecore.resource.Resource)12 XtendFile (org.eclipse.xtend.core.xtend.XtendFile)12 StringConcatenation (org.eclipse.xtend2.lib.StringConcatenation)12 IScope (org.eclipse.xtext.scoping.IScope)10 Set (java.util.Set)9 URI (org.eclipse.emf.common.util.URI)7 XtextResource (org.eclipse.xtext.resource.XtextResource)7 StringInputStream (org.eclipse.xtext.util.StringInputStream)7 JvmType (org.eclipse.xtext.common.types.JvmType)6 Function (com.google.common.base.Function)4 HashMap (java.util.HashMap)4 Map (java.util.Map)4 InternalEObject (org.eclipse.emf.ecore.InternalEObject)4 JvmDeclaredType (org.eclipse.xtext.common.types.JvmDeclaredType)4