Merge pull request #42 from eclipse/lb_task_40

Formatter2Fragment2 should generate a better name for multi-references
This commit is contained in:
Lorenzo Bettini 2016-07-20 09:46:36 +02:00 committed by GitHub
commit 3ba8751d37
10 changed files with 168 additions and 498 deletions

View file

@ -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
}

View file

@ -50,7 +50,9 @@ XtextGeneratorLanguage {
fragment = builder.BuilderIntegrationFragment2 {}
// formatter API
fragment = formatting.Formatter2Fragment2 {}
fragment = formatting.Formatter2Fragment2 {
generateXtendStub=true
}
// labeling API
fragment = ui.labeling.LabelProviderFragment2 {}

View file

@ -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 {}

View file

@ -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
}

View file

@ -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<Unit> _units = model.getUnits();
for (final Unit units : _units) {
this.format(units, document);
for (final Unit unit : _units) {
document.<Unit>format(unit);
}
EList<Function> _functions = model.getFunctions();
for (final Function functions : _functions) {
this.format(functions, document);
for (final Function function : _functions) {
document.<Function>format(function);
}
}
protected void _format(final Unit unit, @Extension final IFormattableDocument document) {
EList<SimpleTypeRef> _implements = unit.getImplements();
for (final SimpleTypeRef _implements_1 : _implements) {
this.format(_implements_1, document);
for (final SimpleTypeRef simpleTypeRef : _implements) {
document.<SimpleTypeRef>format(simpleTypeRef);
}
EList<ProvidedCapability> _providedCapabilities = unit.getProvidedCapabilities();
for (final ProvidedCapability providedCapabilities : _providedCapabilities) {
this.format(providedCapabilities, document);
for (final ProvidedCapability providedCapability : _providedCapabilities) {
document.<ProvidedCapability>format(providedCapability);
}
EList<AliasedRequiredCapability> _requiredCapabilities = unit.getRequiredCapabilities();
for (final AliasedRequiredCapability requiredCapabilities : _requiredCapabilities) {
this.format(requiredCapabilities, document);
for (final AliasedRequiredCapability aliasedRequiredCapability : _requiredCapabilities) {
document.<AliasedRequiredCapability>format(aliasedRequiredCapability);
}
EList<RequiredCapability> _metaRequiredCapabilities = unit.getMetaRequiredCapabilities();
for (final RequiredCapability metaRequiredCapabilities : _metaRequiredCapabilities) {
this.format(metaRequiredCapabilities, document);
for (final RequiredCapability requiredCapability : _metaRequiredCapabilities) {
document.<RequiredCapability>format(requiredCapability);
}
EList<Function> _functions = unit.getFunctions();
for (final Function functions : _functions) {
this.format(functions, document);
for (final Function function : _functions) {
document.<Function>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<Parameter> _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<ParameterDeclaration> _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<Expression> _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.<Object>asList(callNamedFunction, document).toString());
Arrays.<Object>asList(model, document).toString());
}
}
}

View file

@ -23,8 +23,8 @@ public class NoJdtTestLanguageFormatter extends AbstractFormatter2 {
protected void _format(final Model model, @Extension final IFormattableDocument document) {
EList<Greeting> _greetings = model.getGreetings();
for (final Greeting greetings : _greetings) {
this.format(greetings, document);
for (final Greeting greeting : _greetings) {
document.<Greeting>format(greeting);
}
}

View file

@ -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))
}
}

View file

@ -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);
}
}

View file

@ -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

View file

@ -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;