|
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, CompileExceptions 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.
CompileExceptionpublic Java.LocalVariable getLocalVariable(Java.LocalVariableDeclarationStatement lvds,
Java.VariableDeclarator vd)
throws CompileException
Java.LocalVariable corresponding with the local variable declaration/declarator
CompileExceptionprotected void buildLocalVariableMap(Java.CatchClause catchClause,
<,Java.LocalVariable> localVars)
throws CompileException
localVars to the 'local variable map' of the given catchClause.
CompileExceptionpublic Java.LocalVariable getLocalVariable(Java.FunctionDeclarator.FormalParameter parameter)
throws CompileException
Java.LocalVariable corresponding with the parameter
CompileExceptionpublic 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
CompileExceptionpublic final getConstantValue(Java.Rvalue rv)
throws CompileException
NOT_CONSTANT iff the rvalue is not a constant value
CompileExceptionpublic 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
CompileExceptionpublic 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.
CompileExceptionpublic IClass.IMethod findIMethod(Java.SuperclassMethodInvocation superclassMethodInvocation)
throws CompileException
IClass.IMethod that implements the superclassMethodInvocation
CompileExceptionpublic 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
CompileExceptionpublic IClass.IMethod toIMethod(Java.MethodDeclarator methodDeclarator)
IClass.IMethod that implements the methodDeclaratorpublic [] getSingleTypeImport( name,
Location location)
throws CompileException
name - The simple type name, e.g. Inner
{ "pkg", "Outer", "Inner" }, or null
CompileExceptionpublic IClass importTypeOnDemand( simpleTypeName,
Location location)
throws CompileException
null if the given simpleTypeName cannot be resolved through any of the
import-on-demand directives
CompileExceptionpublic 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)
CompileExceptions 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 CompileExceptions, 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 CompileExceptionpublic 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 .