| /** |
| * Copyright (c) 2013 Eclipse contributors and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| */ |
| package org.eclipse.emf.ecore.xcore.formatting; |
| |
| import com.google.common.base.Objects; |
| import java.util.Arrays; |
| import java.util.List; |
| import java.util.Map; |
| import org.eclipse.emf.codegen.ecore.genmodel.GenBase; |
| import org.eclipse.emf.common.util.EList; |
| import org.eclipse.emf.common.util.EMap; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.xcore.XAnnotation; |
| import org.eclipse.emf.ecore.xcore.XAttribute; |
| import org.eclipse.emf.ecore.xcore.XClass; |
| import org.eclipse.emf.ecore.xcore.XClassifier; |
| import org.eclipse.emf.ecore.xcore.XDataType; |
| import org.eclipse.emf.ecore.xcore.XEnum; |
| import org.eclipse.emf.ecore.xcore.XEnumLiteral; |
| import org.eclipse.emf.ecore.xcore.XGenericType; |
| import org.eclipse.emf.ecore.xcore.XImportDirective; |
| import org.eclipse.emf.ecore.xcore.XMember; |
| import org.eclipse.emf.ecore.xcore.XOperation; |
| import org.eclipse.emf.ecore.xcore.XPackage; |
| import org.eclipse.emf.ecore.xcore.XParameter; |
| import org.eclipse.emf.ecore.xcore.XReference; |
| import org.eclipse.emf.ecore.xcore.XTypeParameter; |
| import org.eclipse.emf.ecore.xcore.XcorePackage; |
| import org.eclipse.xtext.common.types.JvmFormalParameter; |
| import org.eclipse.xtext.common.types.JvmGenericArrayTypeReference; |
| import org.eclipse.xtext.common.types.JvmParameterizedTypeReference; |
| import org.eclipse.xtext.common.types.JvmTypeConstraint; |
| import org.eclipse.xtext.common.types.JvmTypeParameter; |
| import org.eclipse.xtext.common.types.JvmWildcardTypeReference; |
| import org.eclipse.xtext.formatting2.IFormattableDocument; |
| import org.eclipse.xtext.formatting2.IHiddenRegionFormatter; |
| import org.eclipse.xtext.formatting2.regionaccess.IEObjectRegion; |
| import org.eclipse.xtext.formatting2.regionaccess.ISemanticRegion; |
| import org.eclipse.xtext.formatting2.regionaccess.ISemanticRegionFinder; |
| import org.eclipse.xtext.formatting2.regionaccess.ISemanticRegionsFinder; |
| import org.eclipse.xtext.resource.XtextResource; |
| import org.eclipse.xtext.xbase.XAssignment; |
| import org.eclipse.xtext.xbase.XBasicForLoopExpression; |
| import org.eclipse.xtext.xbase.XBinaryOperation; |
| import org.eclipse.xtext.xbase.XBlockExpression; |
| import org.eclipse.xtext.xbase.XCastedExpression; |
| import org.eclipse.xtext.xbase.XClosure; |
| import org.eclipse.xtext.xbase.XCollectionLiteral; |
| import org.eclipse.xtext.xbase.XConstructorCall; |
| import org.eclipse.xtext.xbase.XDoWhileExpression; |
| import org.eclipse.xtext.xbase.XExpression; |
| import org.eclipse.xtext.xbase.XFeatureCall; |
| import org.eclipse.xtext.xbase.XForLoopExpression; |
| import org.eclipse.xtext.xbase.XIfExpression; |
| import org.eclipse.xtext.xbase.XInstanceOfExpression; |
| import org.eclipse.xtext.xbase.XMemberFeatureCall; |
| import org.eclipse.xtext.xbase.XPostfixOperation; |
| import org.eclipse.xtext.xbase.XReturnExpression; |
| import org.eclipse.xtext.xbase.XSwitchExpression; |
| import org.eclipse.xtext.xbase.XSynchronizedExpression; |
| import org.eclipse.xtext.xbase.XThrowExpression; |
| import org.eclipse.xtext.xbase.XTryCatchFinallyExpression; |
| import org.eclipse.xtext.xbase.XTypeLiteral; |
| import org.eclipse.xtext.xbase.XVariableDeclaration; |
| import org.eclipse.xtext.xbase.XWhileExpression; |
| import org.eclipse.xtext.xbase.formatting2.XbaseFormatter; |
| import org.eclipse.xtext.xbase.lib.Extension; |
| import org.eclipse.xtext.xbase.lib.IterableExtensions; |
| import org.eclipse.xtext.xbase.lib.Pair; |
| import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; |
| import org.eclipse.xtext.xtype.XFunctionTypeRef; |
| import org.eclipse.xtext.xtype.XImportDeclaration; |
| import org.eclipse.xtext.xtype.XImportSection; |
| |
| @SuppressWarnings("all") |
| public class XcoreFormatter extends XbaseFormatter { |
| protected void _format(final XAnnotation xAnnotation, @Extension final IFormattableDocument format) { |
| ISemanticRegionsFinder _regionFor = this.textRegionExtensions.regionFor(xAnnotation); |
| ISemanticRegion _keyword = _regionFor.keyword("@"); |
| final Procedure1<IHiddenRegionFormatter> _function = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.append(_keyword, _function); |
| ISemanticRegionsFinder _regionFor_1 = this.textRegionExtensions.regionFor(xAnnotation); |
| List<Pair<ISemanticRegion, ISemanticRegion>> _keywordPairs = _regionFor_1.keywordPairs("(", ")"); |
| final Pair<ISemanticRegion, ISemanticRegion> parentheses = IterableExtensions.<Pair<ISemanticRegion, ISemanticRegion>>head(_keywordPairs); |
| boolean _equals = Objects.equal(parentheses, null); |
| if (_equals) { |
| ISemanticRegionsFinder _regionFor_2 = this.textRegionExtensions.regionFor(xAnnotation); |
| ISemanticRegion _feature = _regionFor_2.feature(XcorePackage.Literals.XANNOTATION__SOURCE); |
| final Procedure1<IHiddenRegionFormatter> _function_1 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.newLine(); |
| } |
| }; |
| format.append(_feature, _function_1); |
| } else { |
| final Procedure1<IHiddenRegionFormatter> _function_2 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.indent(); |
| } |
| }; |
| format.<ISemanticRegion, ISemanticRegion>interior(parentheses, _function_2); |
| ISemanticRegionsFinder _regionFor_3 = this.textRegionExtensions.regionFor(xAnnotation); |
| ISemanticRegion _keyword_1 = _regionFor_3.keyword("("); |
| final Procedure1<IHiddenRegionFormatter> _function_3 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| ISemanticRegion _prepend = format.prepend(_keyword_1, _function_3); |
| final Procedure1<IHiddenRegionFormatter> _function_4 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.append(_prepend, _function_4); |
| ISemanticRegionsFinder _regionFor_4 = this.textRegionExtensions.regionFor(xAnnotation); |
| ISemanticRegion _keyword_2 = _regionFor_4.keyword(")"); |
| final Procedure1<IHiddenRegionFormatter> _function_5 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| ISemanticRegion _prepend_1 = format.prepend(_keyword_2, _function_5); |
| final Procedure1<IHiddenRegionFormatter> _function_6 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.newLine(); |
| } |
| }; |
| format.append(_prepend_1, _function_6); |
| EMap<String, String> _details = xAnnotation.getDetails(); |
| for (final Map.Entry<String, String> entry : _details) { |
| { |
| final EObject detail = ((EObject) entry); |
| ISemanticRegionsFinder _regionFor_5 = this.textRegionExtensions.regionFor(detail); |
| ISemanticRegion _keyword_3 = _regionFor_5.keyword("="); |
| final Procedure1<IHiddenRegionFormatter> _function_7 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| ISemanticRegion _prepend_2 = format.prepend(_keyword_3, _function_7); |
| final Procedure1<IHiddenRegionFormatter> _function_8 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.append(_prepend_2, _function_8); |
| ISemanticRegionFinder _immediatelyFollowing = this.textRegionExtensions.immediatelyFollowing(detail); |
| final ISemanticRegion comma = _immediatelyFollowing.keyword(","); |
| boolean _notEquals = (!Objects.equal(comma, null)); |
| if (_notEquals) { |
| final Procedure1<IHiddenRegionFormatter> _function_9 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| ISemanticRegion _prepend_3 = format.prepend(comma, _function_9); |
| final Procedure1<IHiddenRegionFormatter> _function_10 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| ISemanticRegion _append = format.append(_prepend_3, _function_10); |
| final Procedure1<IHiddenRegionFormatter> _function_11 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.autowrap(); |
| } |
| }; |
| format.append(_append, _function_11); |
| } |
| } |
| } |
| } |
| } |
| |
| protected void _format(final XPackage xPackage, @Extension final IFormattableDocument format) { |
| EList<XAnnotation> _annotations = xPackage.getAnnotations(); |
| this.formatAnnotations(_annotations, format); |
| ISemanticRegionsFinder _regionFor = this.textRegionExtensions.regionFor(xPackage); |
| ISemanticRegion _keyword = _regionFor.keyword("package"); |
| final Procedure1<IHiddenRegionFormatter> _function = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.prepend(_keyword, _function); |
| ISemanticRegionsFinder _regionFor_1 = this.textRegionExtensions.regionFor(xPackage); |
| ISemanticRegion _feature = _regionFor_1.feature(XcorePackage.Literals.XNAMED_ELEMENT__NAME); |
| final Procedure1<IHiddenRegionFormatter> _function_1 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| format.prepend(_feature, _function_1); |
| final EList<XImportDirective> xImportDirectives = xPackage.getImportDirectives(); |
| boolean _isEmpty = xImportDirectives.isEmpty(); |
| boolean _not = (!_isEmpty); |
| if (_not) { |
| final XImportDirective first = IterableExtensions.<XImportDirective>head(xImportDirectives); |
| final XImportDirective last = IterableExtensions.<XImportDirective>last(xImportDirectives); |
| for (final XImportDirective xImportDirective : xImportDirectives) { |
| { |
| ISemanticRegionsFinder _regionFor_2 = this.textRegionExtensions.regionFor(xImportDirective); |
| ISemanticRegion _keyword_1 = _regionFor_2.keyword("import"); |
| final Procedure1<IHiddenRegionFormatter> _function_2 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| int _xifexpression = (int) 0; |
| boolean _equals = Objects.equal(xImportDirective, first); |
| if (_equals) { |
| _xifexpression = 2; |
| } else { |
| _xifexpression = 1; |
| } |
| it.setNewLines(_xifexpression); |
| } |
| }; |
| format.prepend(_keyword_1, _function_2); |
| this.format(xImportDirective, format); |
| boolean _equals = Objects.equal(xImportDirective, last); |
| if (_equals) { |
| IEObjectRegion _regionForEObject = this.textRegionExtensions.regionForEObject(xImportDirective); |
| Iterable<ISemanticRegion> _allSemanticRegions = _regionForEObject.getAllSemanticRegions(); |
| ISemanticRegion _last = IterableExtensions.<ISemanticRegion>last(_allSemanticRegions); |
| final Procedure1<IHiddenRegionFormatter> _function_3 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.setNewLines(2); |
| } |
| }; |
| format.append(_last, _function_3); |
| } |
| } |
| } |
| } else { |
| ISemanticRegionsFinder _regionFor_2 = this.textRegionExtensions.regionFor(xPackage); |
| ISemanticRegion _feature_1 = _regionFor_2.feature(XcorePackage.Literals.XNAMED_ELEMENT__NAME); |
| final Procedure1<IHiddenRegionFormatter> _function_2 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.setNewLines(2); |
| } |
| }; |
| format.append(_feature_1, _function_2); |
| } |
| final EList<XClassifier> xClassifiers = xPackage.getClassifiers(); |
| for (final XClassifier xClassifier : xClassifiers) { |
| { |
| this.format(xClassifier, format); |
| IEObjectRegion _regionForEObject = this.textRegionExtensions.regionForEObject(xClassifier); |
| Iterable<ISemanticRegion> _allSemanticRegions = _regionForEObject.getAllSemanticRegions(); |
| ISemanticRegion _head = IterableExtensions.<ISemanticRegion>head(_allSemanticRegions); |
| final Procedure1<IHiddenRegionFormatter> _function_3 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.setNewLines(2); |
| } |
| }; |
| format.prepend(_head, _function_3); |
| } |
| } |
| } |
| |
| protected void _format(final XEnum xEnum, @Extension final IFormattableDocument format) { |
| EList<XAnnotation> _annotations = xEnum.getAnnotations(); |
| this.formatAnnotations(_annotations, format); |
| ISemanticRegionsFinder _regionFor = this.textRegionExtensions.regionFor(xEnum); |
| List<Pair<ISemanticRegion, ISemanticRegion>> _keywordPairs = _regionFor.keywordPairs("{", "}"); |
| Pair<ISemanticRegion, ISemanticRegion> _head = IterableExtensions.<Pair<ISemanticRegion, ISemanticRegion>>head(_keywordPairs); |
| final Procedure1<IHiddenRegionFormatter> _function = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.indent(); |
| } |
| }; |
| format.<ISemanticRegion, ISemanticRegion>interior(_head, _function); |
| ISemanticRegionsFinder _regionFor_1 = this.textRegionExtensions.regionFor(xEnum); |
| ISemanticRegion _keyword = _regionFor_1.keyword("{"); |
| final Procedure1<IHiddenRegionFormatter> _function_1 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.newLine(); |
| } |
| }; |
| format.append(_keyword, _function_1); |
| EList<XEnumLiteral> _literals = xEnum.getLiterals(); |
| for (final XEnumLiteral xEnumLiteral : _literals) { |
| { |
| this.format(xEnumLiteral, format); |
| IEObjectRegion _regionForEObject = this.textRegionExtensions.regionForEObject(xEnumLiteral); |
| Iterable<ISemanticRegion> _allSemanticRegions = _regionForEObject.getAllSemanticRegions(); |
| ISemanticRegion _last = IterableExtensions.<ISemanticRegion>last(_allSemanticRegions); |
| final Procedure1<IHiddenRegionFormatter> _function_2 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.newLine(); |
| } |
| }; |
| format.append(_last, _function_2); |
| } |
| } |
| } |
| |
| protected void _format(final XEnumLiteral xEnumLiteral, final IFormattableDocument format) { |
| EList<XAnnotation> _annotations = xEnumLiteral.getAnnotations(); |
| this.formatAnnotations(_annotations, format); |
| } |
| |
| protected void _format(final XDataType xDataType, @Extension final IFormattableDocument format) { |
| EList<XAnnotation> _annotations = xDataType.getAnnotations(); |
| this.formatAnnotations(_annotations, format); |
| ISemanticRegionsFinder _regionFor = this.textRegionExtensions.regionFor(xDataType); |
| final ISemanticRegion leftAngleBracket = _regionFor.keyword("<"); |
| boolean _notEquals = (!Objects.equal(leftAngleBracket, null)); |
| if (_notEquals) { |
| final Procedure1<IHiddenRegionFormatter> _function = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| ISemanticRegion _prepend = format.prepend(leftAngleBracket, _function); |
| final Procedure1<IHiddenRegionFormatter> _function_1 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.append(_prepend, _function_1); |
| EList<XTypeParameter> _typeParameters = xDataType.getTypeParameters(); |
| this.formatTypeParameters(_typeParameters, format); |
| ISemanticRegionsFinder _regionFor_1 = this.textRegionExtensions.regionFor(xDataType); |
| ISemanticRegion _keyword = _regionFor_1.keyword(">"); |
| final Procedure1<IHiddenRegionFormatter> _function_2 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| ISemanticRegion _prepend_1 = format.prepend(_keyword, _function_2); |
| final Procedure1<IHiddenRegionFormatter> _function_3 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| format.append(_prepend_1, _function_3); |
| } |
| } |
| |
| protected void _format(final XClass xClass, @Extension final IFormattableDocument format) { |
| EList<XAnnotation> _annotations = xClass.getAnnotations(); |
| this.formatAnnotations(_annotations, format); |
| ISemanticRegionsFinder _regionFor = this.textRegionExtensions.regionFor(xClass); |
| final ISemanticRegion leftAngleBracket = _regionFor.keyword("<"); |
| boolean _notEquals = (!Objects.equal(leftAngleBracket, null)); |
| if (_notEquals) { |
| final Procedure1<IHiddenRegionFormatter> _function = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| ISemanticRegion _prepend = format.prepend(leftAngleBracket, _function); |
| final Procedure1<IHiddenRegionFormatter> _function_1 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.append(_prepend, _function_1); |
| EList<XTypeParameter> _typeParameters = xClass.getTypeParameters(); |
| this.formatTypeParameters(_typeParameters, format); |
| ISemanticRegionsFinder _regionFor_1 = this.textRegionExtensions.regionFor(xClass); |
| ISemanticRegion _keyword = _regionFor_1.keyword(">"); |
| final Procedure1<IHiddenRegionFormatter> _function_2 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| ISemanticRegion _prepend_1 = format.prepend(_keyword, _function_2); |
| final Procedure1<IHiddenRegionFormatter> _function_3 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| format.append(_prepend_1, _function_3); |
| } |
| ISemanticRegionsFinder _regionFor_2 = this.textRegionExtensions.regionFor(xClass); |
| List<Pair<ISemanticRegion, ISemanticRegion>> _keywordPairs = _regionFor_2.keywordPairs("{", "}"); |
| Pair<ISemanticRegion, ISemanticRegion> _head = IterableExtensions.<Pair<ISemanticRegion, ISemanticRegion>>head(_keywordPairs); |
| final Procedure1<IHiddenRegionFormatter> _function_4 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.indent(); |
| } |
| }; |
| format.<ISemanticRegion, ISemanticRegion>interior(_head, _function_4); |
| ISemanticRegionsFinder _regionFor_3 = this.textRegionExtensions.regionFor(xClass); |
| ISemanticRegion _keyword_1 = _regionFor_3.keyword("{"); |
| final Procedure1<IHiddenRegionFormatter> _function_5 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.newLine(); |
| } |
| }; |
| format.append(_keyword_1, _function_5); |
| EList<XMember> _members = xClass.getMembers(); |
| for (final XMember xMember : _members) { |
| { |
| this.format(xMember, format); |
| IEObjectRegion _regionForEObject = this.textRegionExtensions.regionForEObject(xMember); |
| Iterable<ISemanticRegion> _allSemanticRegions = _regionForEObject.getAllSemanticRegions(); |
| ISemanticRegion _last = IterableExtensions.<ISemanticRegion>last(_allSemanticRegions); |
| final Procedure1<IHiddenRegionFormatter> _function_6 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.newLine(); |
| } |
| }; |
| format.append(_last, _function_6); |
| } |
| } |
| } |
| |
| protected void _format(final XReference xReference, @Extension final IFormattableDocument format) { |
| EList<XAnnotation> _annotations = xReference.getAnnotations(); |
| this.formatAnnotations(_annotations, format); |
| XGenericType _type = xReference.getType(); |
| format.<XGenericType>format(_type); |
| ISemanticRegionsFinder _regionFor = this.textRegionExtensions.regionFor(xReference); |
| final ISemanticRegion multiplicity = _regionFor.feature(XcorePackage.Literals.XTYPED_ELEMENT__MULTIPLICITY); |
| boolean _notEquals = (!Objects.equal(multiplicity, null)); |
| if (_notEquals) { |
| final Procedure1<IHiddenRegionFormatter> _function = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.prepend(multiplicity, _function); |
| } |
| final XBlockExpression get = xReference.getGetBody(); |
| boolean _notEquals_1 = (!Objects.equal(get, null)); |
| if (_notEquals_1) { |
| ISemanticRegionsFinder _regionFor_1 = this.textRegionExtensions.regionFor(get); |
| ISemanticRegion _keyword = _regionFor_1.keyword("{"); |
| final Procedure1<IHiddenRegionFormatter> _function_1 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| format.prepend(_keyword, _function_1); |
| this.format(get, format); |
| } |
| } |
| |
| protected void _format(final XAttribute xAttribute, @Extension final IFormattableDocument format) { |
| EList<XAnnotation> _annotations = xAttribute.getAnnotations(); |
| this.formatAnnotations(_annotations, format); |
| XGenericType _type = xAttribute.getType(); |
| format.<XGenericType>format(_type); |
| ISemanticRegionsFinder _regionFor = this.textRegionExtensions.regionFor(xAttribute); |
| final ISemanticRegion multiplicity = _regionFor.feature(XcorePackage.Literals.XTYPED_ELEMENT__MULTIPLICITY); |
| boolean _notEquals = (!Objects.equal(multiplicity, null)); |
| if (_notEquals) { |
| final Procedure1<IHiddenRegionFormatter> _function = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.prepend(multiplicity, _function); |
| } |
| final XBlockExpression get = xAttribute.getGetBody(); |
| boolean _notEquals_1 = (!Objects.equal(get, null)); |
| if (_notEquals_1) { |
| ISemanticRegionsFinder _regionFor_1 = this.textRegionExtensions.regionFor(get); |
| ISemanticRegion _keyword = _regionFor_1.keyword("{"); |
| final Procedure1<IHiddenRegionFormatter> _function_1 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| format.prepend(_keyword, _function_1); |
| this.format(get, format); |
| } |
| } |
| |
| protected void _format(final XOperation xOperation, @Extension final IFormattableDocument format) { |
| EList<XAnnotation> _annotations = xOperation.getAnnotations(); |
| this.formatAnnotations(_annotations, format); |
| XGenericType _type = xOperation.getType(); |
| format.<XGenericType>format(_type); |
| ISemanticRegionsFinder _regionFor = this.textRegionExtensions.regionFor(xOperation); |
| final ISemanticRegion multiplicity = _regionFor.feature(XcorePackage.Literals.XTYPED_ELEMENT__MULTIPLICITY); |
| boolean _notEquals = (!Objects.equal(multiplicity, null)); |
| if (_notEquals) { |
| final Procedure1<IHiddenRegionFormatter> _function = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.prepend(multiplicity, _function); |
| } |
| ISemanticRegionsFinder _regionFor_1 = this.textRegionExtensions.regionFor(xOperation); |
| final ISemanticRegion leftAngleBracket = _regionFor_1.keyword("<"); |
| boolean _notEquals_1 = (!Objects.equal(leftAngleBracket, null)); |
| if (_notEquals_1) { |
| final Procedure1<IHiddenRegionFormatter> _function_1 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| ISemanticRegion _prepend = format.prepend(leftAngleBracket, _function_1); |
| final Procedure1<IHiddenRegionFormatter> _function_2 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.append(_prepend, _function_2); |
| EList<XTypeParameter> _typeParameters = xOperation.getTypeParameters(); |
| this.formatTypeParameters(_typeParameters, format); |
| ISemanticRegionsFinder _regionFor_2 = this.textRegionExtensions.regionFor(xOperation); |
| ISemanticRegion _keyword = _regionFor_2.keyword(">"); |
| final Procedure1<IHiddenRegionFormatter> _function_3 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| ISemanticRegion _prepend_1 = format.prepend(_keyword, _function_3); |
| final Procedure1<IHiddenRegionFormatter> _function_4 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| format.append(_prepend_1, _function_4); |
| } |
| ISemanticRegionsFinder _regionFor_3 = this.textRegionExtensions.regionFor(xOperation); |
| ISemanticRegion _keyword_1 = _regionFor_3.keyword("("); |
| final Procedure1<IHiddenRegionFormatter> _function_5 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| ISemanticRegion _prepend_2 = format.prepend(_keyword_1, _function_5); |
| final Procedure1<IHiddenRegionFormatter> _function_6 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.append(_prepend_2, _function_6); |
| final EList<XParameter> xParameters = xOperation.getParameters(); |
| boolean _isEmpty = xParameters.isEmpty(); |
| boolean _not = (!_isEmpty); |
| if (_not) { |
| ISemanticRegionsFinder _regionFor_4 = this.textRegionExtensions.regionFor(xOperation); |
| ISemanticRegion _keyword_2 = _regionFor_4.keyword(")"); |
| final Procedure1<IHiddenRegionFormatter> _function_7 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.prepend(_keyword_2, _function_7); |
| for (final XParameter xParameter : xParameters) { |
| this.format(xParameter, format); |
| } |
| } |
| final XBlockExpression body = xOperation.getBody(); |
| boolean _notEquals_2 = (!Objects.equal(body, null)); |
| if (_notEquals_2) { |
| ISemanticRegionsFinder _regionFor_5 = this.textRegionExtensions.regionFor(body); |
| ISemanticRegion _keyword_3 = _regionFor_5.keyword("{"); |
| final Procedure1<IHiddenRegionFormatter> _function_8 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| format.prepend(_keyword_3, _function_8); |
| this.format(body, format); |
| } |
| } |
| |
| protected void _format(final XParameter xParameter, @Extension final IFormattableDocument format) { |
| EList<XAnnotation> _annotations = xParameter.getAnnotations(); |
| this.formatAnnotations(_annotations, format); |
| ISemanticRegionsFinder _regionFor = this.textRegionExtensions.regionFor(xParameter); |
| final ISemanticRegion multiplicity = _regionFor.feature(XcorePackage.Literals.XTYPED_ELEMENT__MULTIPLICITY); |
| boolean _notEquals = (!Objects.equal(multiplicity, null)); |
| if (_notEquals) { |
| final Procedure1<IHiddenRegionFormatter> _function = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.prepend(multiplicity, _function); |
| } |
| XGenericType _type = xParameter.getType(); |
| format.<XGenericType>format(_type); |
| } |
| |
| protected void _format(final XGenericType xGenericType, @Extension final IFormattableDocument format) { |
| GenBase _type = xGenericType.getType(); |
| format.<GenBase>format(_type); |
| ISemanticRegionsFinder _regionFor = this.textRegionExtensions.regionFor(xGenericType); |
| final ISemanticRegion leftAngleBracket = _regionFor.keyword("<"); |
| boolean _notEquals = (!Objects.equal(leftAngleBracket, null)); |
| if (_notEquals) { |
| final Procedure1<IHiddenRegionFormatter> _function = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| ISemanticRegion _prepend = format.prepend(leftAngleBracket, _function); |
| final Procedure1<IHiddenRegionFormatter> _function_1 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.append(_prepend, _function_1); |
| EList<XGenericType> _typeArguments = xGenericType.getTypeArguments(); |
| for (final XGenericType typeArgument : _typeArguments) { |
| { |
| format.<XGenericType>format(typeArgument); |
| ISemanticRegionFinder _immediatelyFollowing = this.textRegionExtensions.immediatelyFollowing(typeArgument); |
| final ISemanticRegion comma = _immediatelyFollowing.keyword(","); |
| boolean _notEquals_1 = (!Objects.equal(comma, null)); |
| if (_notEquals_1) { |
| final Procedure1<IHiddenRegionFormatter> _function_2 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| ISemanticRegion _prepend_1 = format.prepend(comma, _function_2); |
| final Procedure1<IHiddenRegionFormatter> _function_3 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| format.append(_prepend_1, _function_3); |
| } |
| } |
| } |
| ISemanticRegionsFinder _regionFor_1 = this.textRegionExtensions.regionFor(xGenericType); |
| ISemanticRegion _keyword = _regionFor_1.keyword(">"); |
| final Procedure1<IHiddenRegionFormatter> _function_2 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| ISemanticRegion _prepend_1 = format.prepend(_keyword, _function_2); |
| final Procedure1<IHiddenRegionFormatter> _function_3 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.noSpace(); |
| } |
| }; |
| format.append(_prepend_1, _function_3); |
| } |
| final XGenericType upperBound = xGenericType.getUpperBound(); |
| boolean _notEquals_1 = (!Objects.equal(upperBound, null)); |
| if (_notEquals_1) { |
| format.<XGenericType>format(upperBound); |
| ISemanticRegionsFinder _regionFor_2 = this.textRegionExtensions.regionFor(xGenericType); |
| ISemanticRegion _keyword_1 = _regionFor_2.keyword("extends"); |
| final Procedure1<IHiddenRegionFormatter> _function_4 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| ISemanticRegion _prepend_2 = format.prepend(_keyword_1, _function_4); |
| final Procedure1<IHiddenRegionFormatter> _function_5 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| format.append(_prepend_2, _function_5); |
| } |
| final XGenericType lowerBound = xGenericType.getLowerBound(); |
| boolean _notEquals_2 = (!Objects.equal(lowerBound, null)); |
| if (_notEquals_2) { |
| format.<XGenericType>format(lowerBound); |
| ISemanticRegionsFinder _regionFor_3 = this.textRegionExtensions.regionFor(xGenericType); |
| ISemanticRegion _keyword_2 = _regionFor_3.keyword("super"); |
| final Procedure1<IHiddenRegionFormatter> _function_6 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| ISemanticRegion _prepend_3 = format.prepend(_keyword_2, _function_6); |
| final Procedure1<IHiddenRegionFormatter> _function_7 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| format.append(_prepend_3, _function_7); |
| } |
| } |
| |
| protected void _format(final XTypeParameter xTypeParameter, @Extension final IFormattableDocument format) { |
| EList<XAnnotation> _annotations = xTypeParameter.getAnnotations(); |
| this.formatAnnotations(_annotations, format); |
| EList<XGenericType> _bounds = xTypeParameter.getBounds(); |
| for (final XGenericType bound : _bounds) { |
| { |
| format.<XGenericType>format(bound); |
| ISemanticRegionFinder _immediatelyFollowing = this.textRegionExtensions.immediatelyFollowing(bound); |
| final ISemanticRegion ampersand = _immediatelyFollowing.keyword("&"); |
| boolean _notEquals = (!Objects.equal(ampersand, null)); |
| if (_notEquals) { |
| final Procedure1<IHiddenRegionFormatter> _function = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| ISemanticRegion _prepend = format.prepend(ampersand, _function); |
| final Procedure1<IHiddenRegionFormatter> _function_1 = new Procedure1<IHiddenRegionFormatter>() { |
| @Override |
| public void apply(final IHiddenRegionFormatter it) { |
| it.oneSpace(); |
| } |
| }; |
| format.append(_prepend, _function_1); |
| } |
| } |
| } |
| } |
| |
| protected void formatAnnotations(final List<XAnnotation> xAnnotations, final IFormattableDocument format) { |
| for (final XAnnotation xAnnotation : xAnnotations) { |
| this.format(xAnnotation, format); |
| } |
| } |
| |
| protected void formatTypeParameters(final List<XTypeParameter> xTypeParameters, final IFormattableDocument format) { |
| for (final XTypeParameter xTypeParameter : xTypeParameters) { |
| this.format(xTypeParameter, format); |
| } |
| } |
| |
| public void format(final Object xAttribute, final IFormattableDocument format) { |
| if (xAttribute instanceof XAttribute) { |
| _format((XAttribute)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XReference) { |
| _format((XReference)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XEnum) { |
| _format((XEnum)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XOperation) { |
| _format((XOperation)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XClass) { |
| _format((XClass)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XDataType) { |
| _format((XDataType)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XParameter) { |
| _format((XParameter)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof JvmTypeParameter) { |
| _format((JvmTypeParameter)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XEnumLiteral) { |
| _format((XEnumLiteral)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XPackage) { |
| _format((XPackage)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XTypeParameter) { |
| _format((XTypeParameter)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof JvmFormalParameter) { |
| _format((JvmFormalParameter)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XtextResource) { |
| _format((XtextResource)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XAssignment) { |
| _format((XAssignment)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XBinaryOperation) { |
| _format((XBinaryOperation)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XDoWhileExpression) { |
| _format((XDoWhileExpression)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XFeatureCall) { |
| _format((XFeatureCall)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XMemberFeatureCall) { |
| _format((XMemberFeatureCall)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XPostfixOperation) { |
| _format((XPostfixOperation)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XWhileExpression) { |
| _format((XWhileExpression)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XFunctionTypeRef) { |
| _format((XFunctionTypeRef)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XAnnotation) { |
| _format((XAnnotation)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof JvmGenericArrayTypeReference) { |
| _format((JvmGenericArrayTypeReference)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof JvmParameterizedTypeReference) { |
| _format((JvmParameterizedTypeReference)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof JvmWildcardTypeReference) { |
| _format((JvmWildcardTypeReference)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XBasicForLoopExpression) { |
| _format((XBasicForLoopExpression)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XBlockExpression) { |
| _format((XBlockExpression)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XCastedExpression) { |
| _format((XCastedExpression)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XClosure) { |
| _format((XClosure)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XCollectionLiteral) { |
| _format((XCollectionLiteral)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XConstructorCall) { |
| _format((XConstructorCall)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XForLoopExpression) { |
| _format((XForLoopExpression)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XIfExpression) { |
| _format((XIfExpression)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XInstanceOfExpression) { |
| _format((XInstanceOfExpression)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XReturnExpression) { |
| _format((XReturnExpression)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XSwitchExpression) { |
| _format((XSwitchExpression)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XSynchronizedExpression) { |
| _format((XSynchronizedExpression)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XThrowExpression) { |
| _format((XThrowExpression)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XTryCatchFinallyExpression) { |
| _format((XTryCatchFinallyExpression)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XTypeLiteral) { |
| _format((XTypeLiteral)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XVariableDeclaration) { |
| _format((XVariableDeclaration)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XGenericType) { |
| _format((XGenericType)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof JvmTypeConstraint) { |
| _format((JvmTypeConstraint)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XExpression) { |
| _format((XExpression)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XImportDeclaration) { |
| _format((XImportDeclaration)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof XImportSection) { |
| _format((XImportSection)xAttribute, format); |
| return; |
| } else if (xAttribute instanceof EObject) { |
| _format((EObject)xAttribute, format); |
| return; |
| } else if (xAttribute == null) { |
| _format((Void)null, format); |
| return; |
| } else if (xAttribute != null) { |
| _format(xAttribute, format); |
| return; |
| } else { |
| throw new IllegalArgumentException("Unhandled parameter types: " + |
| Arrays.<Object>asList(xAttribute, format).toString()); |
| } |
| } |
| } |