@Override public String declareSyntheticVariable(Object key, String proposedName) { return this.delegate.declareSyntheticVariable(key, proposedName); }
protected String declareAndAppendSwitchSyntheticLocalVariable(XSwitchExpression expr, String name, ITreeAppendable b) { JvmFormalParameter declaredParam = expr.getDeclaredParam(); if (declaredParam == null) { String declareSyntheticVariable = b.declareSyntheticVariable(expr, name); b.append(declareSyntheticVariable); return declareSyntheticVariable; } String declareSyntheticVariable = b.declareSyntheticVariable(declaredParam, name); b.trace(declaredParam, TypesPackage.Literals.JVM_FORMAL_PARAMETER__NAME, 0).append(declareSyntheticVariable); return declareSyntheticVariable; }
protected void doReassignThisInClosure(final ITreeAppendable b, JvmType prevType) { final String proposedName = prevType.getSimpleName()+".this"; if (!b.hasObject(proposedName)) { b.declareSyntheticVariable(prevType, proposedName); if (b.hasObject("super")) { Object superElement = b.getObject("super"); if (superElement instanceof JvmType) { // Don't reassign the super of the enclosing type if it has already been reassigned String superVariable = b.getName(superElement); if ("super".equals(superVariable)) { b.declareSyntheticVariable(superElement, prevType.getSimpleName()+".super"); } } } } }
/** * Symmetric to {@link XtendGenerator#reassignThisType(ITreeAppendable, JvmDeclaredType)} */ @Override protected void doReassignThisInClosure(ITreeAppendable b, JvmType prevType) { if (prevType instanceof JvmDeclaredType && ((JvmDeclaredType) prevType).isLocal()) { if (b.hasName(Pair.of("this", prevType))) { b.declareVariable(prevType, b.getName(Pair.of("this", prevType))); } else { b.declareSyntheticVariable(prevType, ""); } if (b.hasObject("super")) { Object superElement = b.getObject("super"); if (superElement instanceof JvmType) { // Don't reassign the super of the enclosing type if it has already been reassigned String superVariable = b.getName(superElement); if ("super".equals(superVariable)) { b.declareSyntheticVariable(superElement, prevType.getSimpleName()+".super"); } } } } else { super.doReassignThisInClosure(b, prevType); } }
if (!forceNaming || Strings.isEmpty(refName)) { final String proposedName = "$" + makeJavaIdentifier(getFavoriteVariableName(root)); //$NON-NLS-1$ appendable.declareSyntheticVariable(root, proposedName);
protected void declareFreshLocalVariable(XExpression expr, ITreeAppendable b, Later expression) { LightweightTypeReference type = getTypeForVariableDeclaration(expr); final String proposedName = makeJavaIdentifier(getFavoriteVariableName(expr)); final String varName = b.declareSyntheticVariable(expr, proposedName); b.newLine(); b.append(type); b.append(" ").append(varName).append(" = "); expression.exec(b); b.append(";"); }
protected String declareSwitchResultVariable(XSwitchExpression expr, ITreeAppendable b, boolean isReferenced) { LightweightTypeReference type = getTypeForVariableDeclaration(expr); String switchResultName = b.declareSyntheticVariable(getSwitchExpressionKey(expr), "_switchResult"); if (isReferenced) { b.newLine(); b.append(type); b.append(" ").append(switchResultName).append(" = "); b.append(getDefaultValueLiteral(expr)); b.append(";"); } return switchResultName; }
protected void generateCheckedExceptionHandling(ITreeAppendable appendable) { String name = appendable.declareSyntheticVariable(new Object(), "_e"); appendable.decreaseIndentation().newLine().append("} catch (").append(Throwable.class).append(" ").append(name).append(") {").increaseIndentation(); appendable.newLine().append("throw "); appendable.append(Exceptions.class); appendable.append(".sneakyThrow("); appendable.append(name); appendable.append(");"); appendable.decreaseIndentation().newLine().append("}"); }
protected void appendCatchAndFinally(XTryCatchFinallyExpression expr, ITreeAppendable b, boolean isReferenced) { final EList<XCatchClause> catchClauses = expr.getCatchClauses(); if (!catchClauses.isEmpty()) { String variable = b.declareSyntheticVariable(Tuples.pair(expr, "_catchedThrowable"), "_t"); b.append(" catch (final Throwable ").append(variable).append(") "); b.append("{").increaseIndentation();
protected void _toJavaStatement(final XClosure closure, final ITreeAppendable b, boolean isReferenced) { if (!isReferenced) throw new IllegalArgumentException("a closure definition does not cause any side-effects"); LightweightTypeReference type = getLightweightType(closure); JvmOperation operation = findImplementingOperation(type); if (operation != null) { b.newLine().append("final "); b.append(type); b.append(" "); String variableName = b.declareSyntheticVariable(closure, "_function"); b.append(variableName).append(" = "); GeneratorConfig config = b.getGeneratorConfig(); if (config != null && config.getJavaSourceVersion().isAtLeast(JAVA8) && canCompileToJavaLambda(closure, type, operation)) { toLambda(closure, b, type, operation, false); } else { toAnonymousClass(closure, b, type, operation); } b.append(";"); } }
String matchedVariable = b.declareSyntheticVariable(Tuples.pair(expr, "matches"), "_matched");
b = b.trace(richString); if (actualType.isType(StringConcatenationClient.class)) { String resultVariableName = b.declareSyntheticVariable(richString, "_client"); b.newLine(); b.append(actualType); b.newLine().append("protected void appendTo("); b.append(StringConcatenationClient.TargetStringConcatenation.class); String variableName = b.declareSyntheticVariable(richString, "_builder"); b.append(" ").append(variableName).append(") {"); b.increaseIndentation(); } else { String variableName = b.declareSyntheticVariable(richString, "_builder"); b.newLine(); b.append(StringConcatenation.class);
String variableName = null; if (forLoop.getBefore() != null || forLoop.getSeparator() != null || forLoop.getAfter() != null) { variableName = debugAppendable.declareSyntheticVariable(forLoop, "_hasElements"); debugAppendable.newLine(); debugAppendable.append("boolean ");
if (expectedType != null && !isJavaConformant(expectedType, type)) { String varName = getVarName(((XAbstractFeatureCall) arg).getFeature(), b); String finalVariable = b.declareSyntheticVariable(arg, "_converted_" + varName); b.newLine().append("final "); b.append(type); String mutableName = b.removeName(arg); String finalNameProposal = "_final" + mutableName; String finalName = b.declareSyntheticVariable(arg, finalNameProposal); b.newLine(); b.append("final ");
final String varName = loopAppendable.declareSyntheticVariable(expr, "_while");
/** * @param isReferenced unused in this context but necessary for dispatch signature */ protected void _toJavaStatement(XDoWhileExpression expr, ITreeAppendable b, boolean isReferenced) { boolean needsStatement = !canCompileToJavaExpression(expr.getPredicate(), b); String variable = null; if (needsStatement) { variable = b.declareSyntheticVariable(expr, "_dowhile"); b.newLine().append("boolean ").append(variable).append(" = false;"); } b.newLine().append("do {").increaseIndentation(); internalToJavaStatement(expr.getBody(), b, false); if (needsStatement && !isEarlyExit(expr.getBody())) { internalToJavaStatement(expr.getPredicate(), b, true); b.newLine(); b.append(variable).append(" = "); internalToJavaExpression(expr.getPredicate(), b); b.append(";"); } b.decreaseIndentation().newLine().append("} while("); if (needsStatement) { b.append(variable); } else { internalToJavaExpression(expr.getPredicate(), b); } b.append(");"); }
final LightweightTypeReference actualType = resolvedTypes.getActualType(anonymousClass); Pair<String, JvmDeclaredType> _mappedTo = Pair.<String, JvmDeclaredType>of("this", it); final String thisName = appendable.declareSyntheticVariable(_mappedTo, "_this"); appendable.newLine().append("final ").append(actualType).append(" ").append(thisName).append(" = this;");
String cacheKeyVarName = appendable.declareSyntheticVariable("CacheKey", "_cacheKey"); appendable.append("final ").append(listType).append(" ").append(cacheKeyVarName) .append(" = ").append(CollectionLiterals.class).append(".newArrayList(");
if (needsStatement) { internalToJavaStatement(expr.getPredicate(), b, true); varName = b.declareSyntheticVariable(expr, "_while"); b.newLine().append("boolean ").append(varName).append(" = "); internalToJavaExpression(expr.getPredicate(), b);
String _simpleName = it.getSimpleName(); String _plus = ("_this" + _simpleName); final String thisName = childAppendable.declareSyntheticVariable(_mappedTo, _plus); childAppendable.newLine().append("final ").append(it.getSimpleName()).append(" ").append(thisName).append(" = this;").newLine();