public class UnitCompiler extends Object
Modifier and Type | Class and Description |
---|---|
static interface |
UnitCompiler.ErrorHandler
Interface type for
setCompileErrorHandler(org.codehaus.janino.UnitCompiler.ErrorHandler) . |
static class |
UnitCompiler.SimpleIField
Short-hand implementation of
IClass.IField that implements a
non-constant, non-static, package-accessible field. |
Modifier and Type | Field and Description |
---|---|
Java.CompilationUnit |
compilationUnit |
Constructor and Description |
---|
UnitCompiler(Java.CompilationUnit compilationUnit,
IClassLoader iClassLoader) |
Modifier and Type | Method and Description |
---|---|
protected void |
buildLocalVariableMap(Java.CatchClause cc,
Map localVars) |
void |
compile2(Java.AnonymousClassDeclaration acd) |
void |
compile2(Java.ClassDeclaration cd) |
void |
compile2(org.codehaus.janino.Java.InnerClassDeclaration icd) |
void |
compile2(Java.InterfaceDeclaration id) |
void |
compile2(Java.LocalClassDeclaration lcd) |
void |
compile2(Java.MemberClassDeclaration mcd) |
void |
compile2(Java.PackageMemberTypeDeclaration pmtd) |
ClassFile[] |
compileUnit(boolean debugSource,
boolean debugLines,
boolean debugVars)
Generates an array of
ClassFile objects which represent the classes and
interfaces declared in the compilation unit. |
IClass |
findClass(String className)
Find one class or interface declared in this compilation unit by name.
|
IClass.IMethod |
findIMethod(Java.MethodInvocation mi)
Find named methods of "targetType", examine the argument types and choose the
most specific method.
|
IClass.IMethod |
findIMethod(Java.SuperclassMethodInvocation scmi) |
IClass.IInvocable |
findMostSpecificIInvocable(Java.Locatable l,
IClass.IInvocable[] iInvocables,
IClass[] argumentTypes,
boolean boxingPermitted,
Java.Scope contextScope)
Determine the applicable invocables and choose the most specific invocable.
|
boolean |
generatesCode2(Java.Block b) |
boolean |
generatesCode2(Java.BlockStatement bs) |
boolean |
generatesCode2(Java.EmptyStatement es) |
boolean |
generatesCode2(Java.FieldDeclaration fd) |
boolean |
generatesCode2(Java.Initializer i) |
boolean |
generatesCode2(Java.LocalClassDeclarationStatement lcds) |
boolean |
generatesCode2ListStatements(List l) |
Object |
getConstantValue(Java.Rvalue rv)
Attempts to evaluate as a constant expression.
|
void |
getIMethods(IClass type,
String methodName,
List v)
Add all methods with the given
methodName that are declared
by the type , its superclasses and all their superinterfaces
to the result list v . |
Java.LocalVariable |
getLocalVariable(Java.FunctionDeclarator.FormalParameter fp) |
Java.LocalVariable |
getLocalVariable(Java.LocalVariableDeclarationStatement lvds,
Java.VariableDeclarator vd) |
String[] |
getSingleTypeImport(String name)
Check if the given name was imported through a "single type import", e.g.
|
CodeContext.Offset |
getWhereToBreak(Java.BreakableStatement bs) |
IClass |
importTypeOnDemand(String simpleTypeName,
Location location)
6.5.2.BL1.B1.B5, 6.5.2.BL1.B1.B6 Type-import-on-demand.
6.5.5.1.6 Type-import-on-demand declaration. |
void |
leave2(Java.BlockStatement bs,
IClass optionalStackValueType) |
void |
leave2(Java.SynchronizedStatement ss,
IClass optionalStackValueType) |
void |
leave2(Java.TryStatement ts,
IClass optionalStackValueType) |
void |
setCompileErrorHandler(UnitCompiler.ErrorHandler optionalCompileErrorHandler)
By default,
CompileException s are thrown on compile errors, but an application my install its own
(thread-local) UnitCompiler.ErrorHandler . |
void |
setWarningHandler(WarningHandler optionalWarningHandler)
By default, warnings are discarded, but an application my install a custom
WarningHandler . |
IClass.IMethod |
toIMethod(Java.MethodDeclarator md) |
Java.Lvalue |
toLvalueOrCE(Java.Atom a) |
public final Java.CompilationUnit compilationUnit
public UnitCompiler(Java.CompilationUnit compilationUnit, IClassLoader iClassLoader) throws CompileException
CompileException
public ClassFile[] compileUnit(boolean debugSource, boolean debugLines, boolean debugVars) throws CompileException
ClassFile
objects which represent the classes and
interfaces declared in the compilation unit.CompileException
public void compile2(Java.PackageMemberTypeDeclaration pmtd) throws CompileException
CompileException
public void compile2(Java.ClassDeclaration cd) throws CompileException
CompileException
public void compile2(Java.AnonymousClassDeclaration acd) throws CompileException
CompileException
public void compile2(Java.LocalClassDeclaration lcd) throws CompileException
CompileException
public void compile2(org.codehaus.janino.Java.InnerClassDeclaration icd) throws CompileException
CompileException
public void compile2(Java.MemberClassDeclaration mcd) throws CompileException
CompileException
public void compile2(Java.InterfaceDeclaration id) throws CompileException
CompileException
public Java.LocalVariable getLocalVariable(Java.LocalVariableDeclarationStatement lvds, Java.VariableDeclarator vd) throws CompileException
CompileException
protected void buildLocalVariableMap(Java.CatchClause cc, Map localVars) throws CompileException
CompileException
public Java.LocalVariable getLocalVariable(Java.FunctionDeclarator.FormalParameter fp) throws CompileException
CompileException
public final Object getConstantValue(Java.Rvalue rv) throws CompileException
Expression type | Return value type |
---|---|
String | String |
byte | Byte |
short | Short |
int | Integer |
boolean | Boolean |
char | Character |
float | Float |
long | Long |
double | Double |
null | Java.Rvalue.CONSTANT_VALUE_NULL |
null
iff the rvalue is not a constant valueCompileException
public boolean generatesCode2(Java.BlockStatement bs)
public boolean generatesCode2(Java.EmptyStatement es)
public boolean generatesCode2(Java.LocalClassDeclarationStatement lcds)
public boolean generatesCode2(Java.Initializer i) throws CompileException
CompileException
public boolean generatesCode2ListStatements(List l) throws CompileException
CompileException
public boolean generatesCode2(Java.Block b) throws CompileException
CompileException
public boolean generatesCode2(Java.FieldDeclaration fd) throws CompileException
CompileException
public void leave2(Java.BlockStatement bs, IClass optionalStackValueType)
public void leave2(Java.SynchronizedStatement ss, IClass optionalStackValueType)
public void leave2(Java.TryStatement ts, IClass optionalStackValueType)
public final Java.Lvalue toLvalueOrCE(Java.Atom a) throws CompileException
CompileException
public IClass.IMethod findIMethod(Java.MethodInvocation mi) throws CompileException
Notice that the returned IClass.IMethod
may be declared in an enclosing type.
IClass.IMethod
or null
CompileException
public void getIMethods(IClass type, String methodName, List v) throws CompileException
methodName
that are declared
by the type
, its superclasses and all their superinterfaces
to the result list v
.type
- methodName
- v
- CompileException
public IClass.IMethod findIMethod(Java.SuperclassMethodInvocation scmi) throws CompileException
CompileException
public IClass.IInvocable findMostSpecificIInvocable(Java.Locatable l, IClass.IInvocable[] iInvocables, IClass[] argumentTypes, boolean boxingPermitted, Java.Scope contextScope) throws CompileException
IClass.IInvocable
or null
if no IClass.IInvocable
is applicableCompileException
public IClass.IMethod toIMethod(Java.MethodDeclarator md)
public String[] getSingleTypeImport(String name)
import java.util.Map
null
public IClass importTypeOnDemand(String simpleTypeName, Location location) throws CompileException
null
if the given simpleTypeName
cannot be resolved through any of the
import-on-demand directivesCompileException
public IClass findClass(String className)
className
- Fully qualified class name, e.g. "pkg1.pkg2.Outer$Inner".null
if a class with that name is not declared in this compilation unitpublic void setCompileErrorHandler(UnitCompiler.ErrorHandler optionalCompileErrorHandler)
CompileException
s are thrown on compile errors, but an application my install its own
(thread-local) UnitCompiler.ErrorHandler
.
Be aware that a single problem during compilation often causes a bunch of compile errors, so a good UnitCompiler.ErrorHandler
counts errors and throws a CompileException
when a limit is reached.
If the given UnitCompiler.ErrorHandler
does not throw CompileException
s, then compileUnit(boolean, boolean, boolean)
will throw one when the compilation of the unit is finished, and errors had
occurred. In other words: The UnitCompiler.ErrorHandler
may throw a CompileException
or not, but compileUnit(boolean, boolean, boolean)
will definitely throw a CompileException
if one or more compile errors have
occurred.
optionalCompileErrorHandler
- null
to restore the default behavior (throwing a CompileException
public void setWarningHandler(WarningHandler optionalWarningHandler)
WarningHandler
.optionalWarningHandler
- null
to indicate that no warnings be issuedpublic CodeContext.Offset getWhereToBreak(Java.BreakableStatement bs)
Copyright © 2001–2014. All rights reserved.