diff --git a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/backtracking/formatting2/BeeLangTestLanguageFormatter.xtend b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/backtracking/formatting2/BeeLangTestLanguageFormatter.xtend index ef53b766c..0021f324f 100644 --- a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/backtracking/formatting2/BeeLangTestLanguageFormatter.xtend +++ b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/backtracking/formatting2/BeeLangTestLanguageFormatter.xtend @@ -7,36 +7,12 @@ import com.google.inject.Inject import org.eclipse.xtext.formatting2.AbstractFormatter2 import org.eclipse.xtext.formatting2.IFormattableDocument import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.AliasedRequiredCapability -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.AndExpression -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.AssignmentExpression -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.AtExpression -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.BinaryOpExpression -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.CachedExpression -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.CallFeature -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.CallFunction -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.CallNamedFunction -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.ChainedExpression -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.ClosureParameter -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.CreateExpression -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.DefValue -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.Expression -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.FeatureExpression import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.Function -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.GuardExpression import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.Model -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.OrExpression -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.Parameter -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.ParameterDeclaration -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.ParameterList import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.ProvidedCapability import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.RequiredCapability import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.SimpleTypeRef -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.UnaryOpExpression -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.UnaryPostOpExpression -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.UnaryPreOpExpression import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.Unit -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.WithContextExpression -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.WithExpression import org.eclipse.xtext.testlanguages.backtracking.services.BeeLangTestLanguageGrammarAccess class BeeLangTestLanguageFormatter extends AbstractFormatter2 { @@ -45,184 +21,32 @@ class BeeLangTestLanguageFormatter extends AbstractFormatter2 { def dispatch void format(Model model, extension IFormattableDocument document) { // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - for (Unit units : model.getUnits()) { - format(units, document); + for (Unit unit : model.getUnits()) { + unit.format; } - for (Function functions : model.getFunctions()) { - format(functions, document); + for (Function function : model.getFunctions()) { + function.format; } } def dispatch void format(Unit unit, extension IFormattableDocument document) { // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - for (SimpleTypeRef _implements : unit.getImplements()) { - format(_implements, document); + for (SimpleTypeRef simpleTypeRef : unit.getImplements()) { + simpleTypeRef.format; } - for (ProvidedCapability providedCapabilities : unit.getProvidedCapabilities()) { - format(providedCapabilities, document); + for (ProvidedCapability providedCapability : unit.getProvidedCapabilities()) { + providedCapability.format; } - for (AliasedRequiredCapability requiredCapabilities : unit.getRequiredCapabilities()) { - format(requiredCapabilities, document); + for (AliasedRequiredCapability aliasedRequiredCapability : unit.getRequiredCapabilities()) { + aliasedRequiredCapability.format; } - for (RequiredCapability metaRequiredCapabilities : unit.getMetaRequiredCapabilities()) { - format(metaRequiredCapabilities, document); + for (RequiredCapability requiredCapability : unit.getMetaRequiredCapabilities()) { + requiredCapability.format; } - for (Function functions : unit.getFunctions()) { - format(functions, document); + for (Function function : unit.getFunctions()) { + function.format; } } - - def dispatch void format(ProvidedCapability providedCapability, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(providedCapability.getCondExpr(), document); - } - - def dispatch void format(AliasedRequiredCapability aliasedRequiredCapability, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(aliasedRequiredCapability.getCondExpr(), document); - } - - def dispatch void format(RequiredCapability requiredCapability, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(requiredCapability.getCondExpr(), document); - } - - def dispatch void format(ParameterList parameterList, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - for (Parameter parameters : parameterList.getParameters()) { - format(parameters, document); - } - } - - def dispatch void format(Parameter parameter, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(parameter.getExpr(), document); - } - - def dispatch void format(ClosureParameter closureParameter, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(closureParameter.getExpr(), document); - } - - def dispatch void format(ParameterDeclaration parameterDeclaration, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(parameterDeclaration.getType(), document); - } - - def dispatch void format(Function function, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(function.getReturnType(), document); - for (ParameterDeclaration parameters : function.getParameters()) { - format(parameters, document); - } - format(function.getGuard(), document); - format(function.getFuncExpr(), document); - } - - def dispatch void format(GuardExpression guardExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(guardExpression.getGuardExpr(), document); - } - - def dispatch void format(AssignmentExpression assignmentExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(assignmentExpression.getRightExpr(), document); - format(assignmentExpression.getLeftExpr(), document); - } - - def dispatch void format(DefValue defValue, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(defValue.getType(), document); - format(defValue.getValueExpr(), document); - } - - def dispatch void format(CachedExpression cachedExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(cachedExpression.getExpr(), document); - } - - def dispatch void format(OrExpression orExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(orExpression.getRightExpr(), document); - format(orExpression.getLeftExpr(), document); - } - - def dispatch void format(AndExpression andExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(andExpression.getRightExpr(), document); - format(andExpression.getLeftExpr(), document); - } - - def dispatch void format(BinaryOpExpression binaryOpExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(binaryOpExpression.getRightExpr(), document); - format(binaryOpExpression.getLeftExpr(), document); - } - - def dispatch void format(UnaryOpExpression unaryOpExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(unaryOpExpression.getExpr(), document); - } - - def dispatch void format(UnaryPreOpExpression unaryPreOpExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(unaryPreOpExpression.getExpr(), document); - } - - def dispatch void format(CallFeature callFeature, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(callFeature.getParameterList(), document); - format(callFeature.getFuncExpr(), document); - } - - def dispatch void format(AtExpression atExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(atExpression.getIndexExpr(), document); - format(atExpression.getObjExpr(), document); - } - - def dispatch void format(CallFunction callFunction, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(callFunction.getParameterList(), document); - format(callFunction.getFuncExpr(), document); - } - - def dispatch void format(WithExpression withExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(withExpression.getFuncExpr(), document); - } - - def dispatch void format(WithContextExpression withContextExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(withContextExpression.getExpr(), document); - format(withContextExpression.getContextBlock(), document); - } - - def dispatch void format(ChainedExpression chainedExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - for (Expression expressions : chainedExpression.getExpressions()) { - format(expressions, document); - } - } - - def dispatch void format(CallNamedFunction callNamedFunction, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(callNamedFunction.getParameterList(), document); - } - - def dispatch void format(CreateExpression createExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(createExpression.getParameterList(), document); - format(createExpression.getContextBlock(), document); - } - - def dispatch void format(UnaryPostOpExpression unaryPostOpExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(unaryPostOpExpression.getExpr(), document); - } - - def dispatch void format(FeatureExpression featureExpression, extension IFormattableDocument document) { - // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - format(featureExpression.getObjExpr(), document); - } + + // TODO: implement for ProvidedCapability, AliasedRequiredCapability, RequiredCapability, ParameterList, Parameter, ClosureParameter, ParameterDeclaration, Function, GuardExpression, AssignmentExpression, DefValue, CachedExpression, OrExpression, AndExpression, BinaryOpExpression, UnaryOpExpression, UnaryPreOpExpression, CallFeature, AtExpression, CallFunction, WithExpression, WithContextExpression, ChainedExpression, CallNamedFunction, CreateExpression, UnaryPostOpExpression, FeatureExpression } diff --git a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/fragments/SimpleTestLanguageFragments.mwe2 b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/fragments/SimpleTestLanguageFragments.mwe2 index 1b1cf194d..2cb2a5db9 100644 --- a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/fragments/SimpleTestLanguageFragments.mwe2 +++ b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/fragments/SimpleTestLanguageFragments.mwe2 @@ -50,7 +50,9 @@ XtextGeneratorLanguage { fragment = builder.BuilderIntegrationFragment2 {} // formatter API - fragment = formatting.Formatter2Fragment2 {} + fragment = formatting.Formatter2Fragment2 { + generateXtendStub=true + } // labeling API fragment = ui.labeling.LabelProviderFragment2 {} diff --git a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/noJdt/NoJdtTestLanguage.mwe2 b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/noJdt/NoJdtTestLanguage.mwe2 index ea7c41b92..f203da910 100644 --- a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/noJdt/NoJdtTestLanguage.mwe2 +++ b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/noJdt/NoJdtTestLanguage.mwe2 @@ -52,7 +52,9 @@ XtextGeneratorLanguage { fragment = generator.GeneratorFragment2 auto-inject {} // formatter API - fragment = formatting.Formatter2Fragment2 auto-inject {} + fragment = formatting.Formatter2Fragment2 auto-inject { + generateXtendStub=true + } // labeling API fragment = ui.labeling.LabelProviderFragment2 auto-inject {} diff --git a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/noJdt/formatting2/NoJdtTestLanguageFormatter.xtend b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/noJdt/formatting2/NoJdtTestLanguageFormatter.xtend index 1cabc9b26..b331c3c8d 100644 --- a/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/noJdt/formatting2/NoJdtTestLanguageFormatter.xtend +++ b/org.eclipse.xtext.testlanguages/src/org/eclipse/xtext/testlanguages/noJdt/formatting2/NoJdtTestLanguageFormatter.xtend @@ -16,8 +16,10 @@ class NoJdtTestLanguageFormatter extends AbstractFormatter2 { def dispatch void format(Model model, extension IFormattableDocument document) { // TODO: format HiddenRegions around keywords, attributes, cross references, etc. - for (Greeting greetings : model.getGreetings()) { - format(greetings, document); + for (Greeting greeting : model.getGreetings()) { + greeting.format; } } + + // TODO: implement for } diff --git a/org.eclipse.xtext.testlanguages/xtend-gen/org/eclipse/xtext/testlanguages/backtracking/formatting2/BeeLangTestLanguageFormatter.java b/org.eclipse.xtext.testlanguages/xtend-gen/org/eclipse/xtext/testlanguages/backtracking/formatting2/BeeLangTestLanguageFormatter.java index 6ba17df13..27c1b7acc 100644 --- a/org.eclipse.xtext.testlanguages/xtend-gen/org/eclipse/xtext/testlanguages/backtracking/formatting2/BeeLangTestLanguageFormatter.java +++ b/org.eclipse.xtext.testlanguages/xtend-gen/org/eclipse/xtext/testlanguages/backtracking/formatting2/BeeLangTestLanguageFormatter.java @@ -11,37 +11,12 @@ import org.eclipse.xtext.formatting2.AbstractFormatter2; import org.eclipse.xtext.formatting2.IFormattableDocument; import org.eclipse.xtext.resource.XtextResource; import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.AliasedRequiredCapability; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.AndExpression; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.AssignmentExpression; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.AtExpression; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.BinaryOpExpression; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.CachedExpression; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.CallFeature; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.CallFunction; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.CallNamedFunction; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.ChainedExpression; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.ClosureParameter; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.CreateExpression; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.DefValue; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.Expression; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.FeatureExpression; import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.Function; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.GuardExpression; import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.Model; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.OrExpression; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.Parameter; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.ParameterDeclaration; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.ParameterList; import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.ProvidedCapability; import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.RequiredCapability; import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.SimpleTypeRef; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.TypeRef; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.UnaryOpExpression; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.UnaryPostOpExpression; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.UnaryPreOpExpression; import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.Unit; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.WithContextExpression; -import org.eclipse.xtext.testlanguages.backtracking.beeLangTestLanguage.WithExpression; import org.eclipse.xtext.testlanguages.backtracking.services.BeeLangTestLanguageGrammarAccess; import org.eclipse.xtext.xbase.lib.Extension; @@ -53,308 +28,60 @@ public class BeeLangTestLanguageFormatter extends AbstractFormatter2 { protected void _format(final Model model, @Extension final IFormattableDocument document) { EList _units = model.getUnits(); - for (final Unit units : _units) { - this.format(units, document); + for (final Unit unit : _units) { + document.format(unit); } EList _functions = model.getFunctions(); - for (final Function functions : _functions) { - this.format(functions, document); + for (final Function function : _functions) { + document.format(function); } } protected void _format(final Unit unit, @Extension final IFormattableDocument document) { EList _implements = unit.getImplements(); - for (final SimpleTypeRef _implements_1 : _implements) { - this.format(_implements_1, document); + for (final SimpleTypeRef simpleTypeRef : _implements) { + document.format(simpleTypeRef); } EList _providedCapabilities = unit.getProvidedCapabilities(); - for (final ProvidedCapability providedCapabilities : _providedCapabilities) { - this.format(providedCapabilities, document); + for (final ProvidedCapability providedCapability : _providedCapabilities) { + document.format(providedCapability); } EList _requiredCapabilities = unit.getRequiredCapabilities(); - for (final AliasedRequiredCapability requiredCapabilities : _requiredCapabilities) { - this.format(requiredCapabilities, document); + for (final AliasedRequiredCapability aliasedRequiredCapability : _requiredCapabilities) { + document.format(aliasedRequiredCapability); } EList _metaRequiredCapabilities = unit.getMetaRequiredCapabilities(); - for (final RequiredCapability metaRequiredCapabilities : _metaRequiredCapabilities) { - this.format(metaRequiredCapabilities, document); + for (final RequiredCapability requiredCapability : _metaRequiredCapabilities) { + document.format(requiredCapability); } EList _functions = unit.getFunctions(); - for (final Function functions : _functions) { - this.format(functions, document); + for (final Function function : _functions) { + document.format(function); } } - protected void _format(final ProvidedCapability providedCapability, @Extension final IFormattableDocument document) { - Expression _condExpr = providedCapability.getCondExpr(); - this.format(_condExpr, document); - } - - protected void _format(final AliasedRequiredCapability aliasedRequiredCapability, @Extension final IFormattableDocument document) { - Expression _condExpr = aliasedRequiredCapability.getCondExpr(); - this.format(_condExpr, document); - } - - protected void _format(final RequiredCapability requiredCapability, @Extension final IFormattableDocument document) { - Expression _condExpr = requiredCapability.getCondExpr(); - this.format(_condExpr, document); - } - - protected void _format(final ParameterList parameterList, @Extension final IFormattableDocument document) { - EList _parameters = parameterList.getParameters(); - for (final Parameter parameters : _parameters) { - this.format(parameters, document); - } - } - - protected void _format(final Parameter parameter, @Extension final IFormattableDocument document) { - Expression _expr = parameter.getExpr(); - this.format(_expr, document); - } - - protected void _format(final ClosureParameter closureParameter, @Extension final IFormattableDocument document) { - Expression _expr = closureParameter.getExpr(); - this.format(_expr, document); - } - - protected void _format(final ParameterDeclaration parameterDeclaration, @Extension final IFormattableDocument document) { - TypeRef _type = parameterDeclaration.getType(); - this.format(_type, document); - } - - protected void _format(final Function function, @Extension final IFormattableDocument document) { - TypeRef _returnType = function.getReturnType(); - this.format(_returnType, document); - EList _parameters = function.getParameters(); - for (final ParameterDeclaration parameters : _parameters) { - this.format(parameters, document); - } - GuardExpression _guard = function.getGuard(); - this.format(_guard, document); - Expression _funcExpr = function.getFuncExpr(); - this.format(_funcExpr, document); - } - - protected void _format(final GuardExpression guardExpression, @Extension final IFormattableDocument document) { - Expression _guardExpr = guardExpression.getGuardExpr(); - this.format(_guardExpr, document); - } - - protected void _format(final AssignmentExpression assignmentExpression, @Extension final IFormattableDocument document) { - Expression _rightExpr = assignmentExpression.getRightExpr(); - this.format(_rightExpr, document); - Expression _leftExpr = assignmentExpression.getLeftExpr(); - this.format(_leftExpr, document); - } - - protected void _format(final DefValue defValue, @Extension final IFormattableDocument document) { - TypeRef _type = defValue.getType(); - this.format(_type, document); - Expression _valueExpr = defValue.getValueExpr(); - this.format(_valueExpr, document); - } - - protected void _format(final CachedExpression cachedExpression, @Extension final IFormattableDocument document) { - Expression _expr = cachedExpression.getExpr(); - this.format(_expr, document); - } - - protected void _format(final OrExpression orExpression, @Extension final IFormattableDocument document) { - Expression _rightExpr = orExpression.getRightExpr(); - this.format(_rightExpr, document); - Expression _leftExpr = orExpression.getLeftExpr(); - this.format(_leftExpr, document); - } - - protected void _format(final AndExpression andExpression, @Extension final IFormattableDocument document) { - Expression _rightExpr = andExpression.getRightExpr(); - this.format(_rightExpr, document); - Expression _leftExpr = andExpression.getLeftExpr(); - this.format(_leftExpr, document); - } - - protected void _format(final BinaryOpExpression binaryOpExpression, @Extension final IFormattableDocument document) { - Expression _rightExpr = binaryOpExpression.getRightExpr(); - this.format(_rightExpr, document); - Expression _leftExpr = binaryOpExpression.getLeftExpr(); - this.format(_leftExpr, document); - } - - protected void _format(final UnaryOpExpression unaryOpExpression, @Extension final IFormattableDocument document) { - Expression _expr = unaryOpExpression.getExpr(); - this.format(_expr, document); - } - - protected void _format(final UnaryPreOpExpression unaryPreOpExpression, @Extension final IFormattableDocument document) { - Expression _expr = unaryPreOpExpression.getExpr(); - this.format(_expr, document); - } - - protected void _format(final CallFeature callFeature, @Extension final IFormattableDocument document) { - ParameterList _parameterList = callFeature.getParameterList(); - this.format(_parameterList, document); - Expression _funcExpr = callFeature.getFuncExpr(); - this.format(_funcExpr, document); - } - - protected void _format(final AtExpression atExpression, @Extension final IFormattableDocument document) { - Expression _indexExpr = atExpression.getIndexExpr(); - this.format(_indexExpr, document); - Expression _objExpr = atExpression.getObjExpr(); - this.format(_objExpr, document); - } - - protected void _format(final CallFunction callFunction, @Extension final IFormattableDocument document) { - ParameterList _parameterList = callFunction.getParameterList(); - this.format(_parameterList, document); - Expression _funcExpr = callFunction.getFuncExpr(); - this.format(_funcExpr, document); - } - - protected void _format(final WithExpression withExpression, @Extension final IFormattableDocument document) { - Expression _funcExpr = withExpression.getFuncExpr(); - this.format(_funcExpr, document); - } - - protected void _format(final WithContextExpression withContextExpression, @Extension final IFormattableDocument document) { - Expression _expr = withContextExpression.getExpr(); - this.format(_expr, document); - Expression _contextBlock = withContextExpression.getContextBlock(); - this.format(_contextBlock, document); - } - - protected void _format(final ChainedExpression chainedExpression, @Extension final IFormattableDocument document) { - EList _expressions = chainedExpression.getExpressions(); - for (final Expression expressions : _expressions) { - this.format(expressions, document); - } - } - - protected void _format(final CallNamedFunction callNamedFunction, @Extension final IFormattableDocument document) { - ParameterList _parameterList = callNamedFunction.getParameterList(); - this.format(_parameterList, document); - } - - protected void _format(final CreateExpression createExpression, @Extension final IFormattableDocument document) { - ParameterList _parameterList = createExpression.getParameterList(); - this.format(_parameterList, document); - Expression _contextBlock = createExpression.getContextBlock(); - this.format(_contextBlock, document); - } - - protected void _format(final UnaryPostOpExpression unaryPostOpExpression, @Extension final IFormattableDocument document) { - Expression _expr = unaryPostOpExpression.getExpr(); - this.format(_expr, document); - } - - protected void _format(final FeatureExpression featureExpression, @Extension final IFormattableDocument document) { - Expression _objExpr = featureExpression.getObjExpr(); - this.format(_objExpr, document); - } - - public void format(final Object callNamedFunction, final IFormattableDocument document) { - if (callNamedFunction instanceof XtextResource) { - _format((XtextResource)callNamedFunction, document); + public void format(final Object model, final IFormattableDocument document) { + if (model instanceof XtextResource) { + _format((XtextResource)model, document); return; - } else if (callNamedFunction instanceof CallNamedFunction) { - _format((CallNamedFunction)callNamedFunction, document); + } else if (model instanceof Model) { + _format((Model)model, document); return; - } else if (callNamedFunction instanceof AndExpression) { - _format((AndExpression)callNamedFunction, document); + } else if (model instanceof Unit) { + _format((Unit)model, document); return; - } else if (callNamedFunction instanceof AssignmentExpression) { - _format((AssignmentExpression)callNamedFunction, document); + } else if (model instanceof EObject) { + _format((EObject)model, document); return; - } else if (callNamedFunction instanceof AtExpression) { - _format((AtExpression)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof BinaryOpExpression) { - _format((BinaryOpExpression)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof CachedExpression) { - _format((CachedExpression)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof CallFeature) { - _format((CallFeature)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof CallFunction) { - _format((CallFunction)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof ChainedExpression) { - _format((ChainedExpression)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof ClosureParameter) { - _format((ClosureParameter)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof CreateExpression) { - _format((CreateExpression)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof DefValue) { - _format((DefValue)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof FeatureExpression) { - _format((FeatureExpression)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof Function) { - _format((Function)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof OrExpression) { - _format((OrExpression)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof UnaryOpExpression) { - _format((UnaryOpExpression)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof UnaryPostOpExpression) { - _format((UnaryPostOpExpression)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof UnaryPreOpExpression) { - _format((UnaryPreOpExpression)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof WithContextExpression) { - _format((WithContextExpression)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof WithExpression) { - _format((WithExpression)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof AliasedRequiredCapability) { - _format((AliasedRequiredCapability)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof GuardExpression) { - _format((GuardExpression)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof Model) { - _format((Model)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof Parameter) { - _format((Parameter)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof ParameterDeclaration) { - _format((ParameterDeclaration)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof ParameterList) { - _format((ParameterList)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof ProvidedCapability) { - _format((ProvidedCapability)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof RequiredCapability) { - _format((RequiredCapability)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof Unit) { - _format((Unit)callNamedFunction, document); - return; - } else if (callNamedFunction instanceof EObject) { - _format((EObject)callNamedFunction, document); - return; - } else if (callNamedFunction == null) { + } else if (model == null) { _format((Void)null, document); return; - } else if (callNamedFunction != null) { - _format(callNamedFunction, document); + } else if (model != null) { + _format(model, document); return; } else { throw new IllegalArgumentException("Unhandled parameter types: " + - Arrays.asList(callNamedFunction, document).toString()); + Arrays.asList(model, document).toString()); } } } diff --git a/org.eclipse.xtext.testlanguages/xtend-gen/org/eclipse/xtext/testlanguages/noJdt/formatting2/NoJdtTestLanguageFormatter.java b/org.eclipse.xtext.testlanguages/xtend-gen/org/eclipse/xtext/testlanguages/noJdt/formatting2/NoJdtTestLanguageFormatter.java index 5d6ec4e6b..c6f3de312 100644 --- a/org.eclipse.xtext.testlanguages/xtend-gen/org/eclipse/xtext/testlanguages/noJdt/formatting2/NoJdtTestLanguageFormatter.java +++ b/org.eclipse.xtext.testlanguages/xtend-gen/org/eclipse/xtext/testlanguages/noJdt/formatting2/NoJdtTestLanguageFormatter.java @@ -23,8 +23,8 @@ public class NoJdtTestLanguageFormatter extends AbstractFormatter2 { protected void _format(final Model model, @Extension final IFormattableDocument document) { EList _greetings = model.getGreetings(); - for (final Greeting greetings : _greetings) { - this.format(greetings, document); + for (final Greeting greeting : _greetings) { + document.format(greeting); } } diff --git a/org.eclipse.xtext.tests/src/org/eclipse/xtext/xtext/generator/Formatter2Fragment2Test.xtend b/org.eclipse.xtext.tests/src/org/eclipse/xtext/xtext/generator/Formatter2Fragment2Test.xtend new file mode 100644 index 000000000..04d9a1104 --- /dev/null +++ b/org.eclipse.xtext.tests/src/org/eclipse/xtext/xtext/generator/Formatter2Fragment2Test.xtend @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2016 itemis AG (http://www.itemis.eu) 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.xtext.xtext.generator + +import org.eclipse.emf.ecore.ENamedElement +import org.eclipse.emf.ecore.EcorePackage +import org.eclipse.xtext.xtext.generator.formatting.Formatter2Fragment2 +import org.junit.Test + +import static extension org.junit.Assert.* + +/** + * @author Lorenzo Bettini - Initial contribution and API + */ +class Formatter2Fragment2Test { + + var TestableFormatter2Fragment2 fragment = new TestableFormatter2Fragment2 + + static class TestableFormatter2Fragment2 extends Formatter2Fragment2 { + + override public toVarName(ENamedElement element) { + super.toVarName(element) + } + + } + + @Test def void testVarNameWithEClass() { + "eClass".assertEquals(fragment.toVarName(EcorePackage.eINSTANCE.EClass)) + } + + @Test def void testVarNameWithMultiReference() { + "eOperation".assertEquals(fragment.toVarName(EcorePackage.eINSTANCE.EClass_EAllOperations)) + } + + @Test def void testVarNameWithSingleReference() { + "name".assertEquals(fragment.toVarName(EcorePackage.eINSTANCE.ENamedElement_Name)) + } + + @Test def void testVarNameConflictingWithXtendKeyword() { + "_abstract".assertEquals(fragment.toVarName(EcorePackage.eINSTANCE.EClass_Abstract)) + } +} diff --git a/org.eclipse.xtext.tests/xtend-gen/org/eclipse/xtext/xtext/generator/Formatter2Fragment2Test.java b/org.eclipse.xtext.tests/xtend-gen/org/eclipse/xtext/xtext/generator/Formatter2Fragment2Test.java new file mode 100644 index 000000000..6b694b1e0 --- /dev/null +++ b/org.eclipse.xtext.tests/xtend-gen/org/eclipse/xtext/xtext/generator/Formatter2Fragment2Test.java @@ -0,0 +1,60 @@ +/** + * Copyright (c) 2016 itemis AG (http://www.itemis.eu) 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.xtext.xtext.generator; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.ENamedElement; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.xtext.xtext.generator.formatting.Formatter2Fragment2; +import org.junit.Assert; +import org.junit.Test; + +/** + * @author Lorenzo Bettini - Initial contribution and API + */ +@SuppressWarnings("all") +public class Formatter2Fragment2Test { + public static class TestableFormatter2Fragment2 extends Formatter2Fragment2 { + @Override + public String toVarName(final ENamedElement element) { + return super.toVarName(element); + } + } + + private Formatter2Fragment2Test.TestableFormatter2Fragment2 fragment = new Formatter2Fragment2Test.TestableFormatter2Fragment2(); + + @Test + public void testVarNameWithEClass() { + EClass _eClass = EcorePackage.eINSTANCE.getEClass(); + String _varName = this.fragment.toVarName(_eClass); + Assert.assertEquals("eClass", _varName); + } + + @Test + public void testVarNameWithMultiReference() { + EReference _eClass_EAllOperations = EcorePackage.eINSTANCE.getEClass_EAllOperations(); + String _varName = this.fragment.toVarName(_eClass_EAllOperations); + Assert.assertEquals("eOperation", _varName); + } + + @Test + public void testVarNameWithSingleReference() { + EAttribute _eNamedElement_Name = EcorePackage.eINSTANCE.getENamedElement_Name(); + String _varName = this.fragment.toVarName(_eNamedElement_Name); + Assert.assertEquals("name", _varName); + } + + @Test + public void testVarNameConflictingWithXtendKeyword() { + EAttribute _eClass_Abstract = EcorePackage.eINSTANCE.getEClass_Abstract(); + String _varName = this.fragment.toVarName(_eClass_Abstract); + Assert.assertEquals("_abstract", _varName); + } +} diff --git a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/formatting/Formatter2Fragment2.xtend b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/formatting/Formatter2Fragment2.xtend index 9f914c4b3..5989325b3 100644 --- a/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/formatting/Formatter2Fragment2.xtend +++ b/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/formatting/Formatter2Fragment2.xtend @@ -159,6 +159,8 @@ import org.eclipse.xtext.util.internal.Log } protected def String toVarName(ENamedElement element) { + if (element instanceof EReference) + return element.EReferenceType.toVarName val name = element.name.toFirstLower if (XtendFileAccess.XTEND_KEYWORDS.contains(name)) '_' + name diff --git a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/formatting/Formatter2Fragment2.java b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/formatting/Formatter2Fragment2.java index 936289251..3926883a5 100644 --- a/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/formatting/Formatter2Fragment2.java +++ b/org.eclipse.xtext.xtext.generator/xtend-gen/org/eclipse/xtext/xtext/generator/formatting/Formatter2Fragment2.java @@ -356,6 +356,10 @@ public class Formatter2Fragment2 extends AbstractStubGeneratingFragment { protected String toVarName(final ENamedElement element) { String _xblockexpression = null; { + if ((element instanceof EReference)) { + EClass _eReferenceType = ((EReference)element).getEReferenceType(); + return this.toVarName(_eReferenceType); + } String _name = element.getName(); final String name = StringExtensions.toFirstLower(_name); String _xifexpression = null;