Package org.glassfish.rmic.tools.javac
Class BatchEnvironment
- java.lang.Object
-
- org.glassfish.rmic.tools.java.Environment
-
- org.glassfish.rmic.tools.javac.BatchEnvironment
-
- All Implemented Interfaces:
Constants
,RuntimeConstants
,ErrorConsumer
- Direct Known Subclasses:
BatchEnvironment
public class BatchEnvironment extends Environment implements ErrorConsumer
Main environment of the batch version of the Java compiler, this needs more work. WARNING: The contents of this source file are not part of any supported API. Code that depends on them does so at its own risk: they are subject to change or removal without notice.
-
-
Field Summary
Fields Modifier and Type Field Description private static int
ASM_ONLY_JAVA_VERSION
protected ClassPath
binaryPath
The path we use for finding class (binary) files.private static ClassDefinitionFactory
classDefinitionFactory
private java.util.Hashtable<Type,ClassDeclaration>
classes
The classes, keyed by ClassDeclaration.private java.util.Vector<ClassDeclaration>
classesOrdered
The classes, in order of appearance.private java.io.File
covFile
coverage data fileprivate java.util.Vector<java.lang.Object>
deprecationFiles
A list of files containing deprecation warnings.private ErrorConsumer
errorConsumer
writes out error messagesprivate java.lang.String
errorFileName
The filename where the last errors have occurredprivate int
errorLimit
Maximum number of errors to print.private ErrorMessage
errors
List of outstanding error messagesprivate int
errorsPushed
private java.util.Set<Identifier>
exemptPackages
A set of Identifiers for all packages exempt from the "exists" check in Imports#resolve().int
flags
flagsprivate boolean
hitErrorLimit
private static java.lang.String
JAVA_VERSION_PROPERTY
short
majorVersion
Major and minor versions to use for generated class files.short
minorVersion
private int
ndeprecations
int
nerrors
The number of errors and warningsint
nwarnings
private java.io.OutputStream
out
The stream where error message are printed.private java.util.Hashtable<Identifier,Package>
packages
A hashtable of resource contexts.private static java.lang.String
USE_LEGACY_PARSING_PROPERTY
-
Fields inherited from interface org.glassfish.rmic.tools.java.Constants
ABSTRACT, ACCM_CLASS, ACCM_FIELD, ACCM_INNERCLASS, ACCM_MEMBER, ACCM_METHOD, ADD, AND, ARRAY, ARRAYACCESS, ASGADD, ASGBITAND, ASGBITOR, ASGBITXOR, ASGDIV, ASGLSHIFT, ASGMUL, ASGREM, ASGRSHIFT, ASGSUB, ASGURSHIFT, ASSIGN, ATT_ALL, ATT_ALLCLASSES, ATT_CODE, BITAND, BITNOT, BITOR, BITXOR, BOOLEAN, BOOLEANVAL, BREAK, BYTE, BYTEVAL, CASE, CAST, CATCH, CHAR, CHARVAL, CLASS, COLON, COMMA, COMMENT, COND, CONST, CONTINUE, CONVERT, CS_BINARY, CS_CHECKED, CS_COMPILED, CS_NOTFOUND, CS_PARSED, CS_SOURCE, CS_UNDECIDED, CS_UNDEFINED, CT_BLOCK, CT_BRANCH_FALSE, CT_BRANCH_TRUE, CT_CASE, CT_FIKT_METHOD, CT_FIKT_RET, CT_FIRST_KIND, CT_LAST_KIND, CT_METHOD, CT_SWITH_WO_DEF, DEC, DECLARATION, DEFAULT, DIV, DO, DOUBLE, DOUBLEVAL, ELSE, EQ, ERROR, EXPR, EXPRESSION, EXTENDS, F_COVDATA, F_COVERAGE, F_DEBUG_LINES, F_DEBUG_SOURCE, F_DEBUG_VARS, F_DEPENDENCIES, F_DEPRECATION, F_DUMP, F_ERRORSREPORTED, F_OPT, F_OPT_INTERCLASS, F_PRINT_DEPENDENCIES, F_STRICTDEFAULT, F_VERBOSE, F_VERSION12, F_WARNINGS, FALSE, FIELD, FINAL, FINALLY, FLOAT, FLOATVAL, FOR, GE, GOTO, GT, idAppend, idClass, idClassInit, idClone, idCode, idConstantValue, idCoverageTable, idDeprecated, idDocumentation, IDENT, idExceptions, idFinallyReturnValue, idGetClass, idInit, idInnerClasses, idJavaIoSerializable, idJavaLang, idJavaLangClass, idJavaLangCloneable, idJavaLangError, idJavaLangException, idJavaLangObject, idJavaLangRuntimeException, idJavaLangString, idJavaLangStringBuffer, idJavaLangThrowable, idLength, idLineNumberTable, idLocalVariableTable, idNew, idNull, idSourceFile, idStar, idSuper, idSynthetic, idThis, idToString, idTYPE, idValueOf, IF, IMPLEMENTS, IMPORT, INC, INLINEMETHOD, INLINENEWINSTANCE, INLINERETURN, INSTANCEOF, INT, INTERFACE, INTVAL, LBRACE, LE, LENGTH, LONG, LONGVAL, LPAREN, LSHIFT, LSQBRACKET, LT, M_ABSTRACT, M_ANONYMOUS, M_DEPRECATED, M_FINAL, M_INLINEABLE, M_INTERFACE, M_LOCAL, M_NATIVE, M_PRIVATE, M_PROTECTED, M_PUBLIC, M_STATIC, M_STRICTFP, M_SYNCHRONIZED, M_SYNTHETIC, M_TRANSIENT, M_VOLATILE, MAXFILESIZE, MAXLINENUMBER, METHOD, MM_CLASS, MM_FIELD, MM_MEMBER, MM_METHOD, MUL, NATIVE, NE, NEG, NEW, NEWARRAY, NEWFROMNAME, NEWINSTANCE, NOT, NULL, opNames, opPrecedence, OR, PACKAGE, paraDeprecated, POS, POSTDEC, POSTINC, PREDEC, prefixAccess, prefixArray, prefixClass, prefixLoc, prefixThis, prefixVal, PREINC, PRIVATE, PROTECTED, PUBLIC, QUESTIONMARK, RBRACE, REM, RETURN, RPAREN, RSHIFT, RSQBRACKET, SEMICOLON, SHORT, SHORTVAL, SIG_INNERCLASS, SIGC_INNERCLASS, STAT, STATIC, STRICTFP, STRINGVAL, SUB, SUPER, SWITCH, SYNCHRONIZED, TC_ARRAY, TC_BOOLEAN, TC_BYTE, TC_CHAR, TC_CLASS, TC_DOUBLE, TC_ERROR, TC_FLOAT, TC_INT, TC_LONG, TC_METHOD, TC_NULL, TC_SHORT, TC_VOID, THIS, THROW, THROWS, TM_ARRAY, TM_BOOLEAN, TM_BYTE, TM_CHAR, TM_CLASS, TM_DOUBLE, TM_ERROR, TM_FLOAT, TM_INT, TM_INT32, TM_INTEGER, TM_LONG, TM_METHOD, TM_NULL, TM_NUM32, TM_NUM64, TM_NUMBER, TM_REAL, TM_REFERENCE, TM_SHORT, TM_VOID, tracing, TRANSIENT, TRUE, TRY, TYPE, URSHIFT, VARDECLARATION, VOID, VOLATILE, WHEREOFFSETBITS, WHILE
-
Fields inherited from interface org.glassfish.rmic.tools.java.RuntimeConstants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, CONSTANT_CLASS, CONSTANT_DOUBLE, CONSTANT_FIELD, CONSTANT_FLOAT, CONSTANT_INTEGER, CONSTANT_INTERFACEMETHOD, CONSTANT_INVOKEDYNAMIC, CONSTANT_LONG, CONSTANT_METHOD, CONSTANT_METHODHANDLE, CONSTANT_METHODTYPE, CONSTANT_NAMEANDTYPE, CONSTANT_STRING, CONSTANT_UNICODE, CONSTANT_UTF8, JAVA_DEFAULT_MINOR_VERSION, JAVA_DEFAULT_VERSION, JAVA_MAGIC, JAVA_MAX_SUPPORTED_MINOR_VERSION, JAVA_MAX_SUPPORTED_VERSION, JAVA_MIN_SUPPORTED_VERSION, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_breakpoint, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dead, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokedynamic, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_label, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_try, opc_wide, opcLengths, opcNames, SIG_ARRAY, SIG_BOOLEAN, SIG_BYTE, SIG_CHAR, SIG_CLASS, SIG_DOUBLE, SIG_ENDCLASS, SIG_ENDMETHOD, SIG_FLOAT, SIG_INT, SIG_LONG, SIG_METHOD, SIG_PACKAGE, SIG_SHORT, SIG_VOID, SIGC_ARRAY, SIGC_BOOLEAN, SIGC_BYTE, SIGC_CHAR, SIGC_CLASS, SIGC_DOUBLE, SIGC_ENDCLASS, SIGC_ENDMETHOD, SIGC_FLOAT, SIGC_INT, SIGC_LONG, SIGC_METHOD, SIGC_PACKAGE, SIGC_SHORT, SIGC_VOID, T_BOOLEAN, T_BYTE, T_CHAR, T_CLASS, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT
-
-
Constructor Summary
Constructors Constructor Description BatchEnvironment(java.io.OutputStream out, ClassPath binaryPath)
BatchEnvironment(java.io.OutputStream out, ClassPath binaryPath, ErrorConsumer errorConsumer)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
classExists(Identifier nm)
Check if a class exists Applies only to package members (non-nested classes).(package private) static ClassDefinitionFactory
createClassDefinitionFactory()
void
error(java.lang.Object source, long where, java.lang.String err, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)
Issue an errorjava.lang.String
errorString(java.lang.String err, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)
Error Stringvoid
flushErrors()
ClassDeclaration
getClassDeclaration(Identifier nm)
Get a class, given the fully qualified class nameClassDeclaration
getClassDeclaration(Type t)
Return a class declaration given a type.java.util.Enumeration<ClassDeclaration>
getClasses()
Return an enumeration of all the currently defined classes in order of appearance to getClassDeclaration().java.io.File
getcovFile()
Return coverage data fileint
getFlags()
Return flagsjava.lang.Iterable<ClassDeclaration>
getGeneratedClasses()
Return the declarations for all generated classes.short
getMajorVersion()
Return major version to use for generated class filesstatic int
getMaxSupportedClassVersion()
short
getMinorVersion()
Return minor version to use for generated class filesPackage
getPackage(Identifier pkg)
Get the package path for a packageprivate static int
getVersionPortion(java.lang.String versionString)
private boolean
insertError(long where, java.lang.String message)
Insert an error message in the list of outstanding error messages.private static boolean
isBinaryClassCompatibleJavaVersion(java.lang.String property)
boolean
isExemptPackage(Identifier id)
Tells whether an Identifier refers to a package which should be exempt from the "exists" check in Imports#resolve().void
loadDefinition(ClassDeclaration c)
Load the definition of a class or at least determine how to load it.private ClassDefinition
loadFile(ClassFile file)
Load a binary fileClassDefinition
makeClassDefinition(Environment toplevelEnv, long where, IdentifierToken name, java.lang.String doc, int modifiers, IdentifierToken superClass, IdentifierToken[] interfaces, ClassDefinition outerClass)
Create a new class.MemberDefinition
makeMemberDefinition(Environment origEnv, long where, ClassDefinition clazz, java.lang.String doc, int modifiers, Type type, Identifier name, IdentifierToken[] argNames, IdentifierToken[] expIds, java.lang.Object value)
Create a new field.static boolean
mayUseBinaryClassFactory()
private boolean
needsCompilation(java.util.Hashtable<ClassDeclaration,ClassDeclaration> check, ClassDeclaration c)
Load a binary classvoid
output(java.lang.String msg)
Output a string.void
parseFile(ClassFile file)
Parse a source filevoid
pushError(java.lang.String errorFileName, int line, java.lang.String message, java.lang.String referenceText, java.lang.String referenceTextPointer)
Flush outstanding errorsprivate void
reportError(java.lang.Object src, long where, java.lang.String err, java.lang.String msg)
Report errorprivate void
setExemptPackages()
Set the set of packages which are exempt from the exists check in Imports#resolve().void
shutdown()
Release resources in classpath.private static boolean
useBinaryClassFactory()
-
Methods inherited from class org.glassfish.rmic.tools.java.Environment
classExists, covdata, coverage, debug_lines, debug_source, debug_vars, debugOutput, dependencies, deprecation, dtEnter, dtEvent, dtExit, dump, dumpModifiers, error, error, error, error, explicitCast, getCharacterEncoding, getClassDefinition, getClassDefinition, getImports, getQualifiedClassDefinition, getSource, implicitCast, isApplicable, isMoreSpecific, isMoreSpecific, opt, opt_interclass, print_dependencies, resolve, resolve, resolveByName, resolveExtendsByName, resolveName, resolveNames, resolvePackageQualifiedName, setCharacterEncoding, strictdefault, verbose, version12, warnings
-
-
-
-
Field Detail
-
USE_LEGACY_PARSING_PROPERTY
private static final java.lang.String USE_LEGACY_PARSING_PROPERTY
- See Also:
- Constant Field Values
-
JAVA_VERSION_PROPERTY
private static final java.lang.String JAVA_VERSION_PROPERTY
- See Also:
- Constant Field Values
-
ASM_ONLY_JAVA_VERSION
private static final int ASM_ONLY_JAVA_VERSION
- See Also:
- Constant Field Values
-
classDefinitionFactory
private static final ClassDefinitionFactory classDefinitionFactory
-
out
private java.io.OutputStream out
The stream where error message are printed.
-
binaryPath
protected ClassPath binaryPath
The path we use for finding class (binary) files.
-
packages
private java.util.Hashtable<Identifier,Package> packages
A hashtable of resource contexts.
-
classesOrdered
private java.util.Vector<ClassDeclaration> classesOrdered
The classes, in order of appearance.
-
classes
private java.util.Hashtable<Type,ClassDeclaration> classes
The classes, keyed by ClassDeclaration.
-
flags
public int flags
flags
-
majorVersion
public short majorVersion
Major and minor versions to use for generated class files. Environments that extend BatchEnvironment (such as javadoc's Env class) get the default values below. javac itself may override these versions with values determined from the command line "-target" option.
-
minorVersion
public short minorVersion
-
covFile
private java.io.File covFile
coverage data file
-
nerrors
public int nerrors
The number of errors and warnings
-
nwarnings
public int nwarnings
-
ndeprecations
private int ndeprecations
-
deprecationFiles
private java.util.Vector<java.lang.Object> deprecationFiles
A list of files containing deprecation warnings.
-
errorConsumer
private ErrorConsumer errorConsumer
writes out error messages
-
exemptPackages
private java.util.Set<Identifier> exemptPackages
A set of Identifiers for all packages exempt from the "exists" check in Imports#resolve(). These are the current packages for all classes being compiled as of the first call to isExemptPackage.
-
errorFileName
private java.lang.String errorFileName
The filename where the last errors have occurred
-
errors
private ErrorMessage errors
List of outstanding error messages
-
errorsPushed
private int errorsPushed
-
errorLimit
private int errorLimit
Maximum number of errors to print.
-
hitErrorLimit
private boolean hitErrorLimit
-
-
Constructor Detail
-
BatchEnvironment
public BatchEnvironment(java.io.OutputStream out, ClassPath binaryPath)
-
BatchEnvironment
public BatchEnvironment(java.io.OutputStream out, ClassPath binaryPath, ErrorConsumer errorConsumer)
-
-
Method Detail
-
createClassDefinitionFactory
static ClassDefinitionFactory createClassDefinitionFactory()
-
getMaxSupportedClassVersion
public static int getMaxSupportedClassVersion()
-
useBinaryClassFactory
private static boolean useBinaryClassFactory()
-
mayUseBinaryClassFactory
public static boolean mayUseBinaryClassFactory()
-
isBinaryClassCompatibleJavaVersion
private static boolean isBinaryClassCompatibleJavaVersion(java.lang.String property)
-
getVersionPortion
private static int getVersionPortion(java.lang.String versionString)
-
getFlags
public int getFlags()
Return flags- Overrides:
getFlags
in classEnvironment
-
getMajorVersion
public short getMajorVersion()
Return major version to use for generated class files- Overrides:
getMajorVersion
in classEnvironment
-
getMinorVersion
public short getMinorVersion()
Return minor version to use for generated class files- Overrides:
getMinorVersion
in classEnvironment
-
getcovFile
public java.io.File getcovFile()
Return coverage data file- Overrides:
getcovFile
in classEnvironment
-
getClasses
public java.util.Enumeration<ClassDeclaration> getClasses()
Return an enumeration of all the currently defined classes in order of appearance to getClassDeclaration().
-
getGeneratedClasses
public java.lang.Iterable<ClassDeclaration> getGeneratedClasses()
Return the declarations for all generated classes. These can be recognized as having the 'parsed' status
-
isExemptPackage
public boolean isExemptPackage(Identifier id)
Tells whether an Identifier refers to a package which should be exempt from the "exists" check in Imports#resolve().- Overrides:
isExemptPackage
in classEnvironment
-
setExemptPackages
private void setExemptPackages()
Set the set of packages which are exempt from the exists check in Imports#resolve().
-
getClassDeclaration
public ClassDeclaration getClassDeclaration(Identifier nm)
Get a class, given the fully qualified class name- Overrides:
getClassDeclaration
in classEnvironment
-
getClassDeclaration
public ClassDeclaration getClassDeclaration(Type t)
Description copied from class:Environment
Return a class declaration given a type. Only works for class types.- Overrides:
getClassDeclaration
in classEnvironment
-
classExists
public boolean classExists(Identifier nm)
Check if a class exists Applies only to package members (non-nested classes).- Overrides:
classExists
in classEnvironment
-
getPackage
public Package getPackage(Identifier pkg)
Get the package path for a package- Overrides:
getPackage
in classEnvironment
-
parseFile
public void parseFile(ClassFile file) throws java.io.FileNotFoundException
Parse a source file- Throws:
java.io.FileNotFoundException
-
loadFile
private ClassDefinition loadFile(ClassFile file) throws java.io.IOException
Load a binary file- Throws:
java.io.IOException
-
needsCompilation
private boolean needsCompilation(java.util.Hashtable<ClassDeclaration,ClassDeclaration> check, ClassDeclaration c)
Load a binary class
-
loadDefinition
public void loadDefinition(ClassDeclaration c)
Load the definition of a class or at least determine how to load it. The caller must repeat calls to this method until it the state converges to CS_BINARY, CS_PARSED, or the like..- Overrides:
loadDefinition
in classEnvironment
- See Also:
ClassDeclaration.getClassDefinition()
-
makeClassDefinition
public ClassDefinition makeClassDefinition(Environment toplevelEnv, long where, IdentifierToken name, java.lang.String doc, int modifiers, IdentifierToken superClass, IdentifierToken[] interfaces, ClassDefinition outerClass)
Create a new class.- Overrides:
makeClassDefinition
in classEnvironment
-
makeMemberDefinition
public MemberDefinition makeMemberDefinition(Environment origEnv, long where, ClassDefinition clazz, java.lang.String doc, int modifiers, Type type, Identifier name, IdentifierToken[] argNames, IdentifierToken[] expIds, java.lang.Object value)
Create a new field.- Overrides:
makeMemberDefinition
in classEnvironment
-
shutdown
public void shutdown()
Release resources in classpath.- Overrides:
shutdown
in classEnvironment
-
errorString
public java.lang.String errorString(java.lang.String err, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)
Error String
-
insertError
private boolean insertError(long where, java.lang.String message)
Insert an error message in the list of outstanding error messages. The list is sorted on input position and contains no duplicates. The return value indicates whether or not the message was actually inserted. The method flushErrors() used to check for duplicate error messages. It would only detect duplicates if they were contiguous. Removing non-contiguous duplicate error messages is slightly less complicated at insertion time, so the functionality was moved here. This also saves a miniscule number of allocations.
-
pushError
public void pushError(java.lang.String errorFileName, int line, java.lang.String message, java.lang.String referenceText, java.lang.String referenceTextPointer)
Flush outstanding errors- Specified by:
pushError
in interfaceErrorConsumer
-
flushErrors
public void flushErrors()
-
reportError
private void reportError(java.lang.Object src, long where, java.lang.String err, java.lang.String msg)
Report error
-
error
public void error(java.lang.Object source, long where, java.lang.String err, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)
Issue an error- Overrides:
error
in classEnvironment
-
output
public void output(java.lang.String msg)
Output a string. This can either be an error message or something for debugging.- Overrides:
output
in classEnvironment
-
-