Search in sources :

Example 21 with EDataType

use of org.eclipse.emf.ecore.EDataType in project xtext-core by eclipse.

the class Xtext2EcoreTransformerTest method testBug413171_01.

@Test
public void testBug413171_01() throws Exception {
    EObject _model = this.getModel(this.readFileIntoString("org/eclipse/xtext/xtext/ecoreInference/Bug413171_01.xtext.txt"));
    final Grammar grammar = ((Grammar) _model);
    final AbstractRule parserRule = grammar.getRules().get(2);
    final EClassifier classifier = parserRule.getType().getClassifier();
    Assert.assertTrue(parserRule.getName(), (classifier instanceof EDataType));
}
Also used : EDataType(org.eclipse.emf.ecore.EDataType) EObject(org.eclipse.emf.ecore.EObject) EClassifier(org.eclipse.emf.ecore.EClassifier) Grammar(org.eclipse.xtext.Grammar) AbstractRule(org.eclipse.xtext.AbstractRule) Test(org.junit.Test)

Example 22 with EDataType

use of org.eclipse.emf.ecore.EDataType in project xtext-core by eclipse.

the class Xtext2EcoreTransformerTest method testBug413171_02.

@Test
public void testBug413171_02() throws Exception {
    EObject _model = this.getModel(this.readFileIntoString("org/eclipse/xtext/xtext/ecoreInference/Bug413171_02.xtext.txt"));
    final Grammar grammar = ((Grammar) _model);
    final AbstractRule parserRule = grammar.getRules().get(2);
    final EClassifier classifier = parserRule.getType().getClassifier();
    Assert.assertTrue(parserRule.getName(), (classifier instanceof EDataType));
}
Also used : EDataType(org.eclipse.emf.ecore.EDataType) EObject(org.eclipse.emf.ecore.EObject) EClassifier(org.eclipse.emf.ecore.EClassifier) Grammar(org.eclipse.xtext.Grammar) AbstractRule(org.eclipse.xtext.AbstractRule) Test(org.junit.Test)

Example 23 with EDataType

use of org.eclipse.emf.ecore.EDataType in project xtext-core by eclipse.

the class Ecore2XtextGrammarCreator method rule.

public CharSequence rule(final EClassifier it) {
    CharSequence _switchResult = null;
    boolean _matched = false;
    if (it instanceof EClass) {
        _matched = true;
        StringConcatenation _builder = new StringConcatenation();
        String _concreteRuleName = Ecore2XtextExtensions.concreteRuleName(((EClass) it));
        _builder.append(_concreteRuleName);
        _builder.append(" returns ");
        String _fqn = Ecore2XtextExtensions.fqn(it);
        _builder.append(_fqn);
        _builder.append(":");
        _builder.newLineIfNotEmpty();
        {
            boolean _onlyOptionalFeatures = Ecore2XtextExtensions.onlyOptionalFeatures(((EClass) it));
            if (_onlyOptionalFeatures) {
                _builder.append("\t");
                _builder.append("{");
                String _fqn_1 = Ecore2XtextExtensions.fqn(it);
                _builder.append(_fqn_1, "\t");
                _builder.append("}");
                _builder.newLineIfNotEmpty();
            }
        }
        {
            Iterable<EStructuralFeature> _prefixFeatures = Ecore2XtextExtensions.prefixFeatures(((EClass) it));
            for (final EStructuralFeature strF : _prefixFeatures) {
                _builder.append("\t");
                CharSequence _assigment = this.assigment(strF);
                _builder.append(_assigment, "\t");
                _builder.newLineIfNotEmpty();
            }
        }
        _builder.append("\t");
        _builder.append("\'");
        String _name = ((EClass) it).getName();
        _builder.append(_name, "\t");
        _builder.append("\'");
        _builder.newLineIfNotEmpty();
        _builder.append("\t");
        CharSequence _idAssignment = this.idAssignment(((EClass) it));
        _builder.append(_idAssignment, "\t");
        {
            boolean _isEmpty = IterableExtensions.isEmpty(Ecore2XtextExtensions.inlinedFeatures(((EClass) it)));
            boolean _not = (!_isEmpty);
            if (_not) {
                _builder.newLineIfNotEmpty();
                _builder.append("\t");
                _builder.append("\'{\'");
                _builder.newLine();
                {
                    Iterable<EAttribute> _allAttributes = Ecore2XtextExtensions.allAttributes(((EClass) it));
                    for (final EAttribute attr : _allAttributes) {
                        _builder.append("\t");
                        _builder.append("\t");
                        CharSequence _assigment_1 = this.assigment(attr);
                        _builder.append(_assigment_1, "\t\t");
                        _builder.newLineIfNotEmpty();
                    }
                }
                {
                    Iterable<EReference> _allCrossReferences = Ecore2XtextExtensions.allCrossReferences(((EClass) it));
                    for (final EReference ref : _allCrossReferences) {
                        _builder.append("\t");
                        _builder.append("\t");
                        CharSequence _assigment_2 = this.assigment(ref);
                        _builder.append(_assigment_2, "\t\t");
                        _builder.newLineIfNotEmpty();
                    }
                }
                {
                    Iterable<EReference> _allContainmentReferences = Ecore2XtextExtensions.allContainmentReferences(((EClass) it));
                    for (final EReference conti : _allContainmentReferences) {
                        _builder.append("\t");
                        _builder.append("\t");
                        CharSequence _assigment_3 = this.assigment(conti);
                        _builder.append(_assigment_3, "\t\t");
                        _builder.newLineIfNotEmpty();
                    }
                }
                _builder.append("\t");
                _builder.append("\'}\'");
            }
        }
        _builder.append(";");
        _builder.newLineIfNotEmpty();
        _switchResult = _builder;
    }
    if (!_matched) {
        if (it instanceof EEnum) {
            _matched = true;
            StringConcatenation _builder = new StringConcatenation();
            _builder.append("enum ");
            String _quoteIfNeccesary = Ecore2XtextExtensions.quoteIfNeccesary(((EEnum) it).getName());
            _builder.append(_quoteIfNeccesary);
            _builder.append(" returns ");
            String _fqn = Ecore2XtextExtensions.fqn(it);
            _builder.append(_fqn);
            _builder.append(":");
            _builder.newLineIfNotEmpty();
            _builder.append("\t\t\t\t");
            final Function1<EEnumLiteral, String> _function = (EEnumLiteral it_1) -> {
                String _name = it_1.getName();
                String _plus = (_name + " = \'");
                String _name_1 = it_1.getName();
                String _plus_1 = (_plus + _name_1);
                return (_plus_1 + "\'");
            };
            String _join = IterableExtensions.join(ListExtensions.<EEnumLiteral, String>map(((EEnum) it).getELiterals(), _function), " | ");
            _builder.append(_join, "\t\t\t\t");
            _builder.append(";");
            _switchResult = _builder;
        }
    }
    if (!_matched) {
        if (it instanceof EDataType) {
            _matched = true;
            CharSequence _xifexpression = null;
            boolean _isSerializable = ((EDataType) it).isSerializable();
            if (_isSerializable) {
                StringConcatenation _builder = new StringConcatenation();
                String _uniqueName = UniqueNameUtil.uniqueName(it);
                _builder.append(_uniqueName);
                _builder.append(" returns ");
                String _fqn = Ecore2XtextExtensions.fqn(it);
                _builder.append(_fqn);
                _builder.append(":");
                _builder.newLineIfNotEmpty();
                _builder.append("\t");
                String _dataTypeRuleBody = Ecore2XtextExtensions.dataTypeRuleBody(((EDataType) it));
                _builder.append(_dataTypeRuleBody, "\t");
                _builder.append(";");
                _builder.newLineIfNotEmpty();
                _xifexpression = _builder;
            }
            _switchResult = _xifexpression;
        }
    }
    if (!_matched) {
        throw new IllegalStateException(("No rule template for " + it));
    }
    return _switchResult;
}
Also used : EDataType(org.eclipse.emf.ecore.EDataType) EStructuralFeature(org.eclipse.emf.ecore.EStructuralFeature) EEnum(org.eclipse.emf.ecore.EEnum) EClass(org.eclipse.emf.ecore.EClass) EAttribute(org.eclipse.emf.ecore.EAttribute) StringConcatenation(org.eclipse.xtend2.lib.StringConcatenation) EEnumLiteral(org.eclipse.emf.ecore.EEnumLiteral) EReference(org.eclipse.emf.ecore.EReference)

Example 24 with EDataType

use of org.eclipse.emf.ecore.EDataType in project xtext-core by eclipse.

the class AbstractDeclarativeValueConverterService method registerIfMissing.

private void registerIfMissing(String name, ParserRule parserRule, Map<String, IValueConverter<Object>> converters) {
    if (!converters.containsKey(name)) {
        EDataType datatype = (EDataType) parserRule.getType().getClassifier();
        converters.put(name, new EFactoryValueConverter(datatype));
    }
}
Also used : EDataType(org.eclipse.emf.ecore.EDataType)

Example 25 with EDataType

use of org.eclipse.emf.ecore.EDataType in project xtext-core by eclipse.

the class XtextValidator method checkCrossReferenceTerminal.

public boolean checkCrossReferenceTerminal(RuleCall call) {
    if (call.getRule() != null && call.getRule().getType() != null) {
        EClassifier type = call.getRule().getType().getClassifier();
        EDataType dataType = GrammarUtil.findEString(GrammarUtil.getGrammar(call));
        if (dataType == null)
            dataType = EcorePackage.Literals.ESTRING;
        if (type != null && dataType != type) {
            error("The rule '" + call.getRule().getName() + "' is not valid for a cross reference since it does not return " + "an EString. You'll have to wrap it in a data type rule.", call, null, ValidationMessageAcceptor.INSIGNIFICANT_INDEX, null);
            return true;
        }
    }
    return false;
}
Also used : EDataType(org.eclipse.emf.ecore.EDataType) EClassifier(org.eclipse.emf.ecore.EClassifier)

Aggregations

EDataType (org.eclipse.emf.ecore.EDataType)25 Test (org.junit.Test)10 EObject (org.eclipse.emf.ecore.EObject)8 EClassifier (org.eclipse.emf.ecore.EClassifier)7 EClass (org.eclipse.emf.ecore.EClass)5 EAttribute (org.eclipse.emf.ecore.EAttribute)3 AbstractRule (org.eclipse.xtext.AbstractRule)3 ArrayList (java.util.ArrayList)2 EPackage (org.eclipse.emf.ecore.EPackage)2 EStructuralFeature (org.eclipse.emf.ecore.EStructuralFeature)2 Grammar (org.eclipse.xtext.Grammar)2 RuleCall (org.eclipse.xtext.RuleCall)2 IEObjectDescription (org.eclipse.xtext.resource.IEObjectDescription)2 Collection (java.util.Collection)1 List (java.util.List)1 BasicDiagnostic (org.eclipse.emf.common.util.BasicDiagnostic)1 DiagnosticChain (org.eclipse.emf.common.util.DiagnosticChain)1 URI (org.eclipse.emf.common.util.URI)1 EEnum (org.eclipse.emf.ecore.EEnum)1 EEnumLiteral (org.eclipse.emf.ecore.EEnumLiteral)1