#
# Copyright (c) 2010, 2018, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
option.error.invalid.option="{0}" is not a recognized option. Use "{1}" or "{2}" to see a list of all supported options.

nashorn.options = Usage: jjs [option=value]* [filename.js]+ [-- options...]\n\
                \n\
                Valid options are:

#
# Localized meta descriptions
#
nashorn.options.param = param
nashorn.options.default = default

#
# Which option is "help".
#
nashorn.options.help.key = nashorn.option.help

#
# Which option is "xhelp".
#
nashorn.options.xhelp.key = nashorn.option.xhelp

#
# Which option is "D".
#
nashorn.options.D.key = nashorn.option.D

##
## Grammar: at least short or long form. Arguments are optional, in that case they are given as
##
## params - a description of the parameters for command line usage
## name - the name of the option, e.g. "--long-name"
## short_name - the short name of the option, e.g. "-l"
## type - the type of the option, currently allowed: boolean, integer, string, log, timezone. defaults to boolean if left out
## is_undocumented - should this option never appear in the online help. defaults to no.
## desc - description of what the option does
## default - default value of the option. e.g. debug.lines is true by default. Not set means option not available by default
## dependency - does this arg imply another arg.
## confict - does this arg conflict with another arg e.g trace && instrument
## value_next_arg - is the opton's value passed as next argument in command line?
##
## At least short_name or name needs to be in place for an argument descriptor to be valid.

nashorn.option.help = {                       \
    name="--help",                            \
    short_name="-h",                          \
    desc="Print this help message."           \
}

nashorn.option.xhelp = {                               \
    name="-xhelp",                                     \
    is_undocumented=true,                              \
    desc="Print extended help for command line flags." \
}

nashorn.option.anonymous.classes = {                      \
    name="--anonymous-classes",                           \
    is_undocumented=true,                                 \
    params=[auto|true|false],                             \
    default=auto,                                         \
    type=string,                                          \
    desc="Use VM anonymous classes for compiled scripts." \
}

nashorn.option.class.cache.size ={                            \
    name="--class-cache-size",                                \
    short_name="-ccs",                                        \
    desc="Size of the Class cache size per global scope.",    \
    is_undocumented=true,                                     \
    type=Integer,                                             \
    default=50                                                \
}

nashorn.option.classpath ={                                   \
    name="-classpath",                                        \
    short_name="-cp",                                         \
    desc="-cp path. Specify where to find user class files.", \
    value_next_arg=true,                                      \
    type=String                                               \
}

nashorn.option.compile.only = {       \
    name="--compile-only",            \
    short_name="-co",                 \
    is_undocumented=true,             \
    desc="Compile without running.",  \
    type=Boolean                      \
}

nashorn.option.const.as.var = {          \
    name="--const-as-var",               \
    is_undocumented=true,                \
    desc="Replace 'const' with 'var'.",  \
    type=Boolean                         \
}

nashorn.option.d = {                                             \
    name="--dump-debug-dir",                                     \
    short_name="-d",                                             \
    is_undocumented=true,                                        \
    params="<path>",                                             \
    desc="specify a destination directory to dump source and class files.", \
    type=String                                                  \
}

nashorn.option.D = {                                                          \
    name="-D",                                                                \
    desc="-Dname=value. Set a system property. This option can be repeated.", \
    type=String                                                               \
}

nashorn.option.debug.lines = {                          \
    name="--debug-lines",                               \
    is_undocumented=true,                               \
    desc="Generate line number table in .class files.", \
    default=true                                        \
}

nashorn.option.debug.locals = {                           \
    name="--debug-locals",                                \
    is_undocumented=true,                                 \
    desc="Generate local variable table in .class files." \
}

nashorn.option.debug.scopes = {                                 \
    name="--debug-scopes",                                      \
    is_undocumented=true,                                       \
    desc="Put all variables in scopes to make them debuggable." \
}

nashorn.option.doe = {                   \
    name="-dump-on-error",               \
    short_name="-doe",                   \
    desc="Dump a stack trace on errors." \
}

nashorn.option.empty.statements = {          \
    name="--empty-statements",               \
    is_undocumented=true,                    \
    desc="Preserve empty statements in AST." \
}

nashorn.option.early.lvalue.error = {                                      \
    name="--early-lvalue-error",                                           \
    is_undocumented=true,                                                  \
    desc="invalid lvalue expressions should be reported as early errors.", \
    type=Boolean,                                                          \
    default=true                                                           \
}

nashorn.option.fullversion = {                 \
    name="-fullversion",                       \
    short_name="-fv",                          \
    desc="Print full version info of Nashorn." \
}

nashorn.option.function.statement.error= {                                    \
    name="--function-statement-error",                                        \
    desc="Report an error when function declaration is used as a statement.", \
    is_undocumented=true,                                                     \
    default=false                                                             \
}

nashorn.option.function.statement.warning = {                      \
    name="--function-statement-warning",                           \
    desc="Warn when function declaration is used as a statement.", \
    is_undocumented=true,                                          \
    default=false                                                  \
}

nashorn.option.fx = {                           \
    name="-fx",                                 \
    desc="Launch script as an fx application.", \
    default=false                               \
}

nashorn.option.global.per.engine = {            \
    name="--global-per-engine",                 \
    desc="Use single Global instance per script engine instance.", \
    is_undocumented=true,                                          \
    type=Boolean,                               \
    default=false                               \
}

nashorn.option.language = {                      \
    name="--language",                           \
    type=String,                                 \
    params=[es5|es6],                            \
    default=es5,                                 \
    desc="Specify ECMAScript language version."  \
}

nashorn.option.log = {                                                       \
    name="--log",                                                            \
    is_undocumented=true,                                                    \
    params="<module:level>,*",                                               \
    desc="Enable logging of a given level for a given number of sub systems. \
        [for example: --log=fields:finest,codegen:info].",                   \
    type=Log                                                                 \
}

nashorn.option.no.deprecation.warning = {                      \
    name="--no-deprecation-warning",                           \
    type=Boolean,                                 \
    default=false,                                \
    desc="Do not show nashorn deprecation warning."  \
}


nashorn.option.lazy.compilation = {                                                                      \
    name="--lazy-compilation",                                                                           \
    is_undocumented=true,                                                                                \
    desc="Use lazy code generation strategies - do not compile the entire script at once.", \
    default=true                                   \
}

nashorn.option.loader.per.compile = {              \
    name="--loader-per-compile",                   \
    is_undocumented=true,                          \
    desc="Create a new class loader per compile.", \
    default=true                                   \
}

nashorn.option.module.path ={                                 \
    name="--module-path",                                     \
    desc="--module-path path. Specify where to find user java modules.", \
    value_next_arg=true,                                      \
    type=String                                               \
}

nashorn.option.add.modules ={                                 \
    name="--add-modules",                                     \
    desc="--add-modules modules. Specify the root user java modules.", \
    repeated=true,                                            \
    value_next_arg=true,                                      \
    type=String                                               \
}

nashorn.option.no.java = {                         \
    name="--no-java",                              \
    short_name="-nj",                              \
    is_undocumented=true,                          \
    desc="Disable Java support.",                  \
    default=false                                  \
}

nashorn.option.no.syntax.extensions = {              \
    name="--no-syntax-extensions",                   \
    short_name="-nse",                               \
    is_undocumented=true,                            \
    desc="Disallow non-standard syntax extensions.", \
    default=false                                    \
}

nashorn.option.no.typed.arrays = {                 \
    name="--no-typed-arrays",                      \
    short_name="-nta",                             \
    is_undocumented=true,                          \
    desc="Disable typed arrays support.",          \
    default=false                                  \
}

nashorn.option.optimistic.types = {                                                                      \
    name="--optimistic-types",                                                                           \
    short_name="-ot",                                                                                    \
    desc="Use optimistic type assumptions with deoptimizing recompilation. This makes the compiler try, for any program symbol whose type cannot be proven at compile time, to type it as narrow and primitive as possible. If the runtime encounters an error because symbol type is too narrow, a wider method will be generated until steady stage is reached. While this produces as optimal Java Bytecode as possible, erroneous type guesses will lead to longer warmup. Optimistic typing is currently enabled by default, but can be disabled for faster startup performance.",                     \
    default=true                                                                                         \
}

nashorn.option.parse.only = {       \
    name="--parse-only",            \
    is_undocumented=true,           \
    desc="Parse without compiling." \
}

nashorn.option.persistent.code.cache = {            \
    name="--persistent-code-cache",                 \
    short_name="-pcc",                              \
    desc="Enable disk cache for compiled scripts.", \
    is_undocumented=true,                           \
    default=false                                   \
}

nashorn.option.profile.callsites = {   \
    name="--profile-callsites",        \
    short_name="-pcs",                 \
    is_undocumented=true,              \
    desc="Dump callsite profile data." \
}

nashorn.option.print.ast = {            \
    name="--print-ast",                 \
    is_undocumented=true,               \
    desc="Print abstract syntax tree."  \
}

nashorn.option.print.lower.ast = {              \
    name="--print-lower-ast",                   \
    is_undocumented=true,                       \
    desc="Print lowered abstract syntax tree."  \
}

nashorn.option.print.code = { \
    name="--print-code",      \
    short_name="-pc",         \
    is_undocumented=true,     \
    params="[dir:<output-dir>,function:<name>]", \
    type=keyvalues,           \
    desc="Print generated bytecode. If a directory is specified, nothing will be dumped to stderr. Also, in that case, .dot files will be generated for all functions or for the function with the specified name only."  \
}

nashorn.option.print.no.newline = {                     \
    name="--print-no-newline",                          \
    is_undocumented=true,                               \
    desc="Print function will not print new line char." \
}

nashorn.option.print.parse = {   \
    name="--print-parse",        \
    short_name="-pp",            \
    is_undocumented=true,        \
    desc="Print the parse tree." \
}

nashorn.option.print.lower.parse = {            \
    name="--print-lower-parse",                 \
    short_name="-plp",                          \
    is_undocumented=true,                       \
    desc="Print the parse tree after lowering." \
}

nashorn.option.print.symbols = {   \
    name="--print-symbols",        \
    is_undocumented=true,          \
    desc="Print the symbol table." \
}

nashorn.option.strict = {              \
    name="-strict",                    \
    desc="Run scripts in strict mode." \
}

nashorn.option.scripting = {            \
    name="-scripting",                  \
    desc="Enable scripting features."   \
}

nashorn.option.stdout = {                                                \
    name="--stdout",                                                     \
    is_undocumented=true,                                                \
    type=String,                                                         \
    params="<output console>",                                           \
    desc="Redirect stdout to a filename or to another tty, e.g. stderr." \
}

nashorn.option.stderr = {                                                \
    name="--stderr",                                                     \
    is_undocumented=true,                                                \
    type=String,                                                         \
    params="<output console>",                                           \
    desc="Redirect stderr to a filename or to another tty, e.g. stdout." \
}

nashorn.option.timezone = {                    \
    name="-timezone",                          \
    short_name="-t",                           \
    params="<timezone>",                       \
    desc="Set timezone for script execution.", \
    type=TimeZone                              \
}

nashorn.option.locale = {                    \
    name="--locale",                         \
    short_name="-l",                         \
    is_undocumented=true,                    \
    params="<locale>",                       \
    desc="Set Locale for script execution.", \
    type=Locale                              \
}

nashorn.option.trace.callsites = {                                               \
    name="--trace-callsites",                                                    \
    short_name="-tcs",                                                           \
    is_undocumented=true,                                                        \
    type=keyvalues,                                                              \
    params="[=[option,]*]",                                                      \
    desc="Enable callsite trace mode. Options are: miss [trace callsite misses]  \
    enterexit [trace callsite enter/exit], objects [print object properties]."   \
}

nashorn.option.unstable.relink.threshold ={                   \
    name="--unstable-relink-threshold",                       \
    short_name="-urt",                                        \
    desc="Number of times a dynamic call site has to be       \
    relinked before it is considered unstable, when the       \
    runtime will try to link it as if it is megamorphic.",    \
    is_undocumented=true,                                     \
    type=Integer,                                             \
    default=-1                                                \
}


nashorn.option.verify.code = {              \
    name="--verify-code",                   \
    is_undocumented=true,                   \
    desc="Verify byte code before running." \
}

nashorn.option.version = {                \
    name="-version",                      \
    short_name="-v",                      \
    desc="Print version info of Nashorn." \
}

