private boolean isEnumLiteral(EObject object, EStructuralFeature feature) { if (feature == XtextPackage.eINSTANCE.getEnumLiteralDeclaration_EnumLiteral()) { EnumRule rule = GrammarUtil.containingEnumRule(object); return rule.getType() == null || rule.getType().getClassifier() == null; } return false; }
public IScope getScope(EObject context, EReference reference) { if (reference == XtextPackage.eINSTANCE.getTypeRef_Classifier()) { if (context instanceof TypeRef) { final TypeRef typeRef = (TypeRef) context; final AbstractMetamodelDeclaration metaModel = typeRef.getMetamodel(); if (metaModel != null) { EPackage pack = metaModel.getEPackage(); if (pack != null) return createClassifierScope(pack.getEClassifiers()); } else { return createReferencedPackagesScope(GrammarUtil.getGrammar(context)); } } else { return createReferencedPackagesScope(GrammarUtil.getGrammar(context)); } return IScope.NULLSCOPE; } if (reference == XtextPackage.eINSTANCE.getEnumLiteralDeclaration_EnumLiteral()) { final EnumRule rule = GrammarUtil.containingEnumRule(context); if (rule.getType() != null && rule.getType().getClassifier() != null && rule.getType().getClassifier() instanceof EEnum) { return createEnumLiteralsScope((EEnum) rule.getType().getClassifier()); } return IScope.NULLSCOPE; } return createScope(context.eResource(), reference.getEReferenceType()); }