private boolean isTypeRef(EObject object, EStructuralFeature feature) { return (feature == XtextPackage.eINSTANCE.getTypeRef_Classifier() && ((TypeRef) object).getMetamodel() instanceof GeneratedMetamodel); }
@Override protected void beforeEnsureIsLinked(EObject obj, EReference ref, IDiagnosticProducer producer) { if (XtextPackage.eINSTANCE.getTypeRef_Classifier() == ref) { final TypeRef typeRef = (TypeRef) obj; if (typeRef.getMetamodel() == null) setDefaultValue(obj, XtextPackage.eINSTANCE.getTypeRef_Metamodel(), producer); } else super.beforeEnsureIsLinked(obj, ref, producer); }
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()); }