|
janino.net | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
org.codehaus.janino.UnitCompiler
public class UnitCompiler
This class actually implements the Java™ compiler. It is associated with exactly one compilation unit which it compiles.
Nested Class Summary | |
---|---|
static class |
UnitCompiler.SimpleIField
Short-hand implementation of IClass.IField that implements a non-constant, non-static,
package-accessible field. |
Field Summary | |
---|---|
static boolean |
JUMP_IF_FALSE
Special value for the orientation parameter of the compileBoolean(Java.Rvalue,
CodeContext.Offset, boolean) methods, indicating that the code should be generated such that execution branches
if the value on top of the operand stack is FALSE. |
static boolean |
JUMP_IF_TRUE
Special value for the orientation parameter of the compileBoolean(Java.Rvalue,
CodeContext.Offset, boolean) methods, indicating that the code should be generated such that execution branches
if the value on top of the operand stack is TRUE. |
static |
NOT_CONSTANT
Special return value for the getConstantValue(Java.Rvalue) method family indicating that the given
Java.Rvalue does not evaluate to a constant value. |
Constructor Summary | |
---|---|
UnitCompiler(Java.CompilationUnit compilationUnit,
IClassLoader iClassLoader)
|
Method Summary | |
---|---|
protected void |
buildLocalVariableMap(Java.CatchClause catchClause,
<,Java.LocalVariable> localVars)
Adds the given localVars to the 'local variable map' of the given catchClause . |
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( 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 superclassMethodInvocation)
|
IClass.IInvocable |
findMostSpecificIInvocable(Java.Locatable locatable,
IClass.IInvocable[] iInvocables,
IClass[] argumentTypes,
boolean boxingPermitted,
Java.Scope contextScope)
Determine the applicable invocables and choose the most specific invocable. |
Java.CompilationUnit |
getCompilationUnit()
|
|
getConstantValue(Java.Rvalue rv)
Attempts to evaluate as a constant expression. |
void |
getIMethods(IClass type,
methodName,
<IClass.IMethod> 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 parameter)
|
Java.LocalVariable |
getLocalVariable(Java.FunctionDeclarator.FormalParameter parameter,
boolean isVariableArityParameter)
|
Java.LocalVariable |
getLocalVariable(Java.LocalVariableDeclarationStatement lvds,
Java.VariableDeclarator vd)
|
[] |
getSingleTypeImport( name,
Location location)
Check if the given simple name was imported through a single type import. |
IClass |
importTypeOnDemand( simpleTypeName,
Location location)
6.5.2.BL1.B1.B5, 6.5.2.BL1.B1.B6 Type-import-on-demand. |
void |
setCompileErrorHandler(ErrorHandler optionalCompileErrorHandler)
By default, CompileException s are thrown on compile errors, but an application my install its own
(thread-local) ErrorHandler . |
void |
setWarningHandler(WarningHandler optionalWarningHandler)
By default, warnings are discarded, but an application my install a custom WarningHandler . |
IClass.IMethod |
toIMethod(Java.MethodDeclarator methodDeclarator)
|
Methods inherited from class java.lang. |
---|
, , , , , , , , , , |
Field Detail |
---|
public static final boolean JUMP_IF_TRUE
orientation
parameter of the compileBoolean(Java.Rvalue,
CodeContext.Offset, boolean)
methods, indicating that the code should be generated such that execution branches
if the value on top of the operand stack is TRUE.
public static final boolean JUMP_IF_FALSE
orientation
parameter of the compileBoolean(Java.Rvalue,
CodeContext.Offset, boolean)
methods, indicating that the code should be generated such that execution branches
if the value on top of the operand stack is FALSE.
public static final NOT_CONSTANT
getConstantValue(Java.Rvalue)
method family indicating that the given
Java.Rvalue
does not evaluate to a constant value.
Constructor Detail |
---|
public UnitCompiler(Java.CompilationUnit compilationUnit, IClassLoader iClassLoader)
Method Detail |
---|
public Java.CompilationUnit getCompilationUnit()
Java.CompilationUnit
that this UnitCompiler
compilespublic 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 Java.LocalVariable getLocalVariable(Java.LocalVariableDeclarationStatement lvds, Java.VariableDeclarator vd) throws CompileException
Java.LocalVariable
corresponding with the local variable declaration/declarator
CompileException
protected void buildLocalVariableMap(Java.CatchClause catchClause, <,Java.LocalVariable> localVars) throws CompileException
localVars
to the 'local variable map' of the given catchClause
.
CompileException
public Java.LocalVariable getLocalVariable(Java.FunctionDeclarator.FormalParameter parameter) throws CompileException
Java.LocalVariable
corresponding with the parameter
CompileException
public Java.LocalVariable getLocalVariable(Java.FunctionDeclarator.FormalParameter parameter, boolean isVariableArityParameter) throws CompileException
isVariableArityParameter
- Whether the parameter
is the last parameter of a 'variable arity'
(a.k.a. 'varargs') method declaration
Java.LocalVariable
corresponding with the parameter
CompileException
public final getConstantValue(Java.Rvalue rv) throws CompileException
NOT_CONSTANT
iff the rvalue is not a constant value
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, methodName, <IClass.IMethod> v) throws CompileException
methodName
that are declared by the type
, its superclasses and
all their superinterfaces to the result list v
.
CompileException
public IClass.IMethod findIMethod(Java.SuperclassMethodInvocation superclassMethodInvocation) throws CompileException
IClass.IMethod
that implements the superclassMethodInvocation
CompileException
public IClass.IInvocable findMostSpecificIInvocable(Java.Locatable locatable, IClass.IInvocable[] iInvocables, IClass[] argumentTypes, boolean boxingPermitted, Java.Scope contextScope) throws CompileException
IClass.IInvocable
or null
if no IClass.IInvocable
is
applicable
CompileException
public IClass.IMethod toIMethod(Java.MethodDeclarator methodDeclarator)
IClass.IMethod
that implements the methodDeclarator
public [] getSingleTypeImport( name, Location location) throws CompileException
name
- The simple type name, e.g. Inner
{ "pkg", "Outer", "Inner" }
, or null
CompileException
public IClass importTypeOnDemand( simpleTypeName, Location location) throws CompileException
null
if the given simpleTypeName
cannot be resolved through any of the
import-on-demand directives
CompileException
public IClass findClass( className)
className
- Fully qualified class name, e.g. "pkg1.pkg2.Outer$Inner".
null
if a class or an interface with that name is not declared in this compilation unitpublic void setCompileErrorHandler(ErrorHandler optionalCompileErrorHandler)
CompileException
s are thrown on compile errors, but an application my install its own
(thread-local) ErrorHandler
.
Be aware that a single problem during compilation often causes a bunch of compile errors, so a good ErrorHandler
counts errors and throws a CompileException
when a limit is reached.
If the given 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 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 issued
|
janino.net | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright @2023 . janino. All Rights Reserved .