org.eclipse.xtext.xbase.compiler
Class AbstractXbaseCompiler

java.lang.Object
  extended by org.eclipse.xtext.xbase.compiler.AbstractXbaseCompiler
Direct Known Subclasses:
TypeConvertingCompiler

@NonNullByDefault
public abstract class AbstractXbaseCompiler
extends java.lang.Object

Author:
Sven Efftinge - Initial contribution and API

Constructor Summary
AbstractXbaseCompiler()
           
 
Method Summary
 void _toJavaExpression(XExpression func, ITreeAppendable b)
           
 void _toJavaStatement(XExpression func, ITreeAppendable b, boolean isReferenced)
           
protected  void appendDefaultLiteral(ITreeAppendable b, JvmTypeReference type)
           
protected  boolean canCompileToJavaExpression(XExpression expression, ITreeAppendable appendable)
           
 ITreeAppendable compile(XBlockExpression expr, ITreeAppendable b, JvmTypeReference expectedReturnType)
          this one trims the outer block
 ITreeAppendable compile(XExpression obj, ITreeAppendable appendable, JvmTypeReference expectedReturnType)
           
 ITreeAppendable compile(XExpression obj, ITreeAppendable parentAppendable, JvmTypeReference expectedReturnType, java.util.Set<JvmTypeReference> declaredExceptions)
           
 ITreeAppendable compileAsJavaExpression(XExpression obj, ITreeAppendable parentAppendable, JvmTypeReference expectedType)
           
protected  void declareFreshLocalVariable(XExpression expr, ITreeAppendable b, Later expression)
           
protected  void declareSyntheticVariable(XExpression expr, ITreeAppendable b)
           
protected  void doInternalToJavaStatement(XExpression obj, ITreeAppendable builder, boolean isReferenced)
           
protected  void generateCheckedExceptionHandling(XExpression obj, ITreeAppendable appendable)
           
protected  java.lang.String getDefaultValueLiteral(XExpression expr)
           
protected  java.lang.String getFavoriteVariableName(org.eclipse.emf.ecore.EObject ex)
           
protected  IdentifiableSimpleNameProvider getNameProvider()
           
protected  Primitives getPrimitives()
           
protected  java.lang.String getReferenceName(XExpression expr, ITreeAppendable b)
           
protected  TypeConformanceComputer getTypeConformanceComputer()
           
protected  JvmTypeReference getTypeForVariableDeclaration(XExpression expr)
           
protected  ITypeProvider getTypeProvider()
           
protected  TypeReferences getTypeReferences()
           
protected  java.lang.String getVarName(java.lang.Object ex, ITreeAppendable appendable)
           
protected  boolean internalCanCompileToJavaExpression(XExpression expression, ITreeAppendable appendable)
           
protected abstract  void internalToConvertedExpression(XExpression obj, ITreeAppendable appendable, JvmTypeReference toBeConvertedTo)
           
protected  void internalToJavaExpression(XExpression obj, ITreeAppendable appendable)
           
protected  void internalToJavaStatement(XExpression obj, ITreeAppendable builder, boolean isReferenced)
           
protected  boolean isPrimitiveVoid(XExpression xExpression)
           
protected  boolean isReferenceToForeignTypeParameter(JvmTypeReference reference, org.eclipse.emf.ecore.EObject context)
           
protected  boolean isVariableDeclarationRequired(XExpression expr, ITreeAppendable b)
          whether an expression needs to be declared in a statement If an expression has side effects this method must return true for it.
protected  java.lang.String makeJavaIdentifier(java.lang.String name)
           
protected  boolean needsSneakyThrow(XExpression obj, java.util.Collection<JvmTypeReference> declaredExceptions)
           
protected  JvmTypeReference resolveMultiType(JvmTypeReference typeRef)
           
protected  void serialize(JvmTypeReference type, org.eclipse.emf.ecore.EObject context, ITreeAppendable appendable)
           
protected  void serialize(JvmTypeReference type, org.eclipse.emf.ecore.EObject context, ITreeAppendable appendable, boolean withoutConstraints, boolean paramsToWildcard)
           
protected  void serialize(JvmTypeReference type, org.eclipse.emf.ecore.EObject context, ITreeAppendable appendable, boolean withoutConstraints, boolean paramsToWildcard, boolean paramsToObject, boolean allowPrimitives)
           
 void setNameProvider(IdentifiableSimpleNameProvider nameProvider)
           
 void setTypeReferences(TypeReferences typeReferences)
          Public for testing purpose.
 void toJavaExpression(XExpression obj, ITreeAppendable appendable)
           
 void toJavaStatement(XExpression obj, ITreeAppendable appendable, boolean isReferenced)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractXbaseCompiler

public AbstractXbaseCompiler()
Method Detail

getTypeReferences

protected TypeReferences getTypeReferences()

setTypeReferences

public void setTypeReferences(TypeReferences typeReferences)
Public for testing purpose.

This method is not intended to be referenced by clients.
This method is not intended to be referenced by clients.

getTypeProvider

protected ITypeProvider getTypeProvider()

getPrimitives

protected Primitives getPrimitives()

compile

public ITreeAppendable compile(XExpression obj,
                               ITreeAppendable appendable,
                               JvmTypeReference expectedReturnType)

compileAsJavaExpression

public ITreeAppendable compileAsJavaExpression(XExpression obj,
                                               ITreeAppendable parentAppendable,
                                               JvmTypeReference expectedType)

appendDefaultLiteral

protected void appendDefaultLiteral(ITreeAppendable b,
                                    @Nullable
                                    JvmTypeReference type)

generateCheckedExceptionHandling

protected void generateCheckedExceptionHandling(XExpression obj,
                                                ITreeAppendable appendable)

canCompileToJavaExpression

protected boolean canCompileToJavaExpression(XExpression expression,
                                             ITreeAppendable appendable)

internalCanCompileToJavaExpression

protected boolean internalCanCompileToJavaExpression(XExpression expression,
                                                     ITreeAppendable appendable)

compile

public ITreeAppendable compile(XExpression obj,
                               ITreeAppendable parentAppendable,
                               @Nullable
                               JvmTypeReference expectedReturnType,
                               @Nullable
                               java.util.Set<JvmTypeReference> declaredExceptions)

needsSneakyThrow

protected boolean needsSneakyThrow(XExpression obj,
                                   java.util.Collection<JvmTypeReference> declaredExceptions)

compile

public ITreeAppendable compile(XBlockExpression expr,
                               ITreeAppendable b,
                               JvmTypeReference expectedReturnType)
this one trims the outer block


internalToConvertedExpression

protected abstract void internalToConvertedExpression(XExpression obj,
                                                      ITreeAppendable appendable,
                                                      @Nullable
                                                      JvmTypeReference toBeConvertedTo)

isPrimitiveVoid

protected boolean isPrimitiveVoid(XExpression xExpression)

internalToJavaStatement

protected final void internalToJavaStatement(XExpression obj,
                                             ITreeAppendable builder,
                                             boolean isReferenced)

doInternalToJavaStatement

protected void doInternalToJavaStatement(XExpression obj,
                                         ITreeAppendable builder,
                                         boolean isReferenced)

toJavaExpression

public void toJavaExpression(XExpression obj,
                             ITreeAppendable appendable)

toJavaStatement

public void toJavaStatement(XExpression obj,
                            ITreeAppendable appendable,
                            boolean isReferenced)

internalToJavaExpression

protected void internalToJavaExpression(XExpression obj,
                                        ITreeAppendable appendable)

_toJavaStatement

public void _toJavaStatement(XExpression func,
                             ITreeAppendable b,
                             boolean isReferenced)
Parameters:
b - the appendable, unused, but necessary for dispatching purpose
isReferenced - unused, but necessary for dispatching purpose

_toJavaExpression

public void _toJavaExpression(XExpression func,
                              ITreeAppendable b)
Parameters:
b - the appendable, unused, but necessary for dispatching purpose

serialize

protected void serialize(JvmTypeReference type,
                         org.eclipse.emf.ecore.EObject context,
                         ITreeAppendable appendable)

serialize

protected void serialize(JvmTypeReference type,
                         org.eclipse.emf.ecore.EObject context,
                         ITreeAppendable appendable,
                         boolean withoutConstraints,
                         boolean paramsToWildcard)

serialize

protected void serialize(JvmTypeReference type,
                         org.eclipse.emf.ecore.EObject context,
                         ITreeAppendable appendable,
                         boolean withoutConstraints,
                         boolean paramsToWildcard,
                         boolean paramsToObject,
                         boolean allowPrimitives)

isReferenceToForeignTypeParameter

protected boolean isReferenceToForeignTypeParameter(JvmTypeReference reference,
                                                    org.eclipse.emf.ecore.EObject context)

resolveMultiType

protected JvmTypeReference resolveMultiType(JvmTypeReference typeRef)

getVarName

protected java.lang.String getVarName(java.lang.Object ex,
                                      ITreeAppendable appendable)

setNameProvider

public void setNameProvider(IdentifiableSimpleNameProvider nameProvider)

getNameProvider

protected IdentifiableSimpleNameProvider getNameProvider()

getFavoriteVariableName

protected java.lang.String getFavoriteVariableName(org.eclipse.emf.ecore.EObject ex)

makeJavaIdentifier

protected java.lang.String makeJavaIdentifier(java.lang.String name)

declareSyntheticVariable

protected void declareSyntheticVariable(XExpression expr,
                                        ITreeAppendable b)

getDefaultValueLiteral

protected java.lang.String getDefaultValueLiteral(XExpression expr)

declareFreshLocalVariable

protected void declareFreshLocalVariable(XExpression expr,
                                         ITreeAppendable b,
                                         Later expression)

getTypeForVariableDeclaration

protected JvmTypeReference getTypeForVariableDeclaration(XExpression expr)

isVariableDeclarationRequired

protected boolean isVariableDeclarationRequired(XExpression expr,
                                                ITreeAppendable b)
whether an expression needs to be declared in a statement If an expression has side effects this method must return true for it.

Parameters:
expr - the checked expression
b - the appendable which represents the current compiler state

getTypeConformanceComputer

protected TypeConformanceComputer getTypeConformanceComputer()

getReferenceName

@Nullable
protected java.lang.String getReferenceName(XExpression expr,
                                                     ITreeAppendable b)
Returns:
the variable name under which the result of the expression is stored. Returns null if the expression hasn't been assigned to a local variable before.