protected String _localVar(final EnumLiteralDeclaration it) { int _indexOf = this.contentsAsList(GrammarUtil.containingEnumRule(it).getAlternatives()).indexOf(it); return ("enumLiteral_" + Integer.valueOf(_indexOf)); }
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; }
@Check public void checkEnumLiteralIsUnique(EnumLiteralDeclaration decl) { EnumRule rule = GrammarUtil.containingEnumRule(decl); List<EnumLiteralDeclaration> declarations = EcoreUtil2.getAllContentsOfType(rule, EnumLiteralDeclaration.class); String literal = decl.getLiteral().getValue(); if (literal != null) { for (EnumLiteralDeclaration otherDecl : declarations) { if (otherDecl != decl && literal.equals(otherDecl.getLiteral().getValue())) { error("Enum literal '" + literal + "' is used multiple times in enum rule '" + rule.getName() + "'.", XtextPackage.Literals.ENUM_LITERAL_DECLARATION__LITERAL); } } } }
@Check public void checkGeneratedEnumIsValid(EnumLiteralDeclaration decl) { EnumRule rule = GrammarUtil.containingEnumRule(decl); if (!(rule.getType().getMetamodel() instanceof GeneratedMetamodel)) return; if (!(rule.getType().getClassifier() instanceof EEnum)) return; EEnum eEnum = (EEnum) rule.getType().getClassifier(); List<EnumLiteralDeclaration> declarations = EcoreUtil2.getAllContentsOfType(rule, EnumLiteralDeclaration.class); if (declarations.size() == eEnum.getELiterals().size()) return; for (EnumLiteralDeclaration otherDecl : declarations) { if (decl == otherDecl) { return; } if (otherDecl.getEnumLiteral() == decl.getEnumLiteral()) { if (!decl.getEnumLiteral().getLiteral().equals(decl.getLiteral().getValue())) warning("Enum literal '" + decl.getEnumLiteral().getName() + "' has already been defined with literal '" + decl.getEnumLiteral().getLiteral() + "'.", XtextPackage.Literals.ENUM_LITERAL_DECLARATION__ENUM_LITERAL); return; } } }
if (GrammarUtil.containingParserRule(typeRef) != null) classifier = EcoreFactory.eINSTANCE.createEClass(); else if (GrammarUtil.containingEnumRule(typeRef) != null) classifier = EcoreFactory.eINSTANCE.createEEnum(); else
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()); }