org.eclipse.xtext.xbase.compiler
Class AbstractXbaseCompiler
java.lang.Object
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
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 |
AbstractXbaseCompiler
public AbstractXbaseCompiler()
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 purposeisReferenced
- 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 expressionb
- 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.