8167117: insert missing final keywords
Reviewed-by: jlaskey, sundar
This commit is contained in:
parent
9bf4e700fc
commit
c86ac94029
nashorn
buildtools/nasgen/src/jdk/nashorn/internal/tools/nasgen
samples/dynalink
ArrayStreamLinkerExporter.javaBufferIndexingLinkerExporter.javaDOMLinkerExporter.javaMissingMethodExample.javaMissingMethodLinkerExporter.javaUnderscoreNameLinkerExporter.java
src/jdk.scripting.nashorn/share/classes/jdk/nashorn
api/tree
DestructuringDeclTreeImpl.javaExportEntryTreeImpl.javaFunctionExpressionTreeImpl.javaIRTranslator.javaImportEntryTreeImpl.javaParser.javaParserImpl.javaSimpleTreeVisitorES5_1.javaSimpleTreeVisitorES6.javaSwitchTreeImpl.javaTemplateLiteralTreeImpl.javaTree.javaUnknownTreeException.java
internal
codegen
ir
objects
parser
runtime
tools
test/src/jdk
dynalink
linker/support/test
test
nashorn
api
internal
runtime
test/framework
test/models
@ -574,7 +574,7 @@ public final class MemberInfo implements Cloneable {
|
||||
|
||||
String getDocumentationKey(final String objName) {
|
||||
if (kind == Kind.FUNCTION) {
|
||||
StringBuilder buf = new StringBuilder(objName);
|
||||
final StringBuilder buf = new StringBuilder(objName);
|
||||
switch (where) {
|
||||
case CONSTRUCTOR:
|
||||
break;
|
||||
|
@ -42,7 +42,7 @@ import static jdk.nashorn.internal.tools.nasgen.StringConstants.RUNTIME_PKG;
|
||||
*
|
||||
*/
|
||||
public final class ScriptClassInfo {
|
||||
private static String getTypeDescriptor(String pkg, String name) {
|
||||
private static String getTypeDescriptor(final String pkg, final String name) {
|
||||
return "L" + pkg + name + ";";
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,6 @@
|
||||
*/
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.lang.invoke.MethodType;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -43,12 +42,12 @@ import jdk.dynalink.CompositeOperation;
|
||||
import jdk.dynalink.NamedOperation;
|
||||
import jdk.dynalink.Operation;
|
||||
import jdk.dynalink.StandardOperation;
|
||||
import jdk.dynalink.linker.GuardedInvocation;
|
||||
import jdk.dynalink.linker.GuardingDynamicLinker;
|
||||
import jdk.dynalink.linker.GuardingDynamicLinkerExporter;
|
||||
import jdk.dynalink.linker.GuardedInvocation;
|
||||
import jdk.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.dynalink.linker.LinkRequest;
|
||||
import jdk.dynalink.linker.LinkerServices;
|
||||
import jdk.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.dynalink.linker.support.Guards;
|
||||
import jdk.dynalink.linker.support.Lookup;
|
||||
|
||||
@ -65,7 +64,7 @@ public final class ArrayStreamLinkerExporter extends GuardingDynamicLinkerExport
|
||||
System.out.println("pluggable dynalink array stream linker loaded");
|
||||
}
|
||||
|
||||
public static Object arrayToStream(Object array) {
|
||||
public static Object arrayToStream(final Object array) {
|
||||
if (array instanceof int[]) {
|
||||
return IntStream.of((int[])array);
|
||||
} else if (array instanceof long[]) {
|
||||
@ -95,17 +94,17 @@ public final class ArrayStreamLinkerExporter extends GuardingDynamicLinkerExport
|
||||
}
|
||||
|
||||
@Override
|
||||
public GuardedInvocation getGuardedInvocation(LinkRequest request,
|
||||
LinkerServices linkerServices) throws Exception {
|
||||
public GuardedInvocation getGuardedInvocation(final LinkRequest request,
|
||||
final LinkerServices linkerServices) throws Exception {
|
||||
final Object self = request.getReceiver();
|
||||
if (self == null || !canLinkType(self.getClass())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
CallSiteDescriptor desc = request.getCallSiteDescriptor();
|
||||
Operation op = desc.getOperation();
|
||||
Object name = NamedOperation.getName(op);
|
||||
boolean getProp = CompositeOperation.contains(
|
||||
final CallSiteDescriptor desc = request.getCallSiteDescriptor();
|
||||
final Operation op = desc.getOperation();
|
||||
final Object name = NamedOperation.getName(op);
|
||||
final boolean getProp = CompositeOperation.contains(
|
||||
NamedOperation.getBaseOperation(op),
|
||||
StandardOperation.GET_PROPERTY);
|
||||
if (getProp && "stream".equals(name)) {
|
||||
|
@ -30,10 +30,7 @@
|
||||
*/
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.lang.invoke.MethodType;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.nio.Buffer;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.CharBuffer;
|
||||
@ -42,17 +39,19 @@ import java.nio.FloatBuffer;
|
||||
import java.nio.IntBuffer;
|
||||
import java.nio.LongBuffer;
|
||||
import java.nio.ShortBuffer;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jdk.dynalink.CallSiteDescriptor;
|
||||
import jdk.dynalink.CompositeOperation;
|
||||
import jdk.dynalink.NamedOperation;
|
||||
import jdk.dynalink.Operation;
|
||||
import jdk.dynalink.StandardOperation;
|
||||
import jdk.dynalink.linker.GuardedInvocation;
|
||||
import jdk.dynalink.linker.GuardingDynamicLinker;
|
||||
import jdk.dynalink.linker.GuardingDynamicLinkerExporter;
|
||||
import jdk.dynalink.linker.GuardedInvocation;
|
||||
import jdk.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.dynalink.linker.LinkRequest;
|
||||
import jdk.dynalink.linker.LinkerServices;
|
||||
import jdk.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.dynalink.linker.support.Guards;
|
||||
import jdk.dynalink.linker.support.Lookup;
|
||||
|
||||
@ -94,7 +93,7 @@ public final class BufferIndexingLinkerExporter extends GuardingDynamicLinkerExp
|
||||
private static final MethodType GUARD_TYPE;
|
||||
|
||||
static {
|
||||
Lookup look = Lookup.PUBLIC;
|
||||
final Lookup look = Lookup.PUBLIC;
|
||||
BUFFER_LIMIT = look.findVirtual(Buffer.class, "limit", MethodType.methodType(int.class));
|
||||
BYTEBUFFER_GET = look.findVirtual(ByteBuffer.class, "get",
|
||||
MethodType.methodType(byte.class, int.class));
|
||||
@ -163,15 +162,15 @@ public final class BufferIndexingLinkerExporter extends GuardingDynamicLinkerExp
|
||||
}
|
||||
|
||||
@Override
|
||||
public GuardedInvocation getGuardedInvocation(LinkRequest request,
|
||||
LinkerServices linkerServices) throws Exception {
|
||||
public GuardedInvocation getGuardedInvocation(final LinkRequest request,
|
||||
final LinkerServices linkerServices) throws Exception {
|
||||
final Object self = request.getReceiver();
|
||||
if (self == null || !canLinkType(self.getClass())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
CallSiteDescriptor desc = request.getCallSiteDescriptor();
|
||||
StandardOperation op = getFirstStandardOperation(desc);
|
||||
final CallSiteDescriptor desc = request.getCallSiteDescriptor();
|
||||
final StandardOperation op = getFirstStandardOperation(desc);
|
||||
if (op == null) {
|
||||
return null;
|
||||
}
|
||||
@ -182,7 +181,7 @@ public final class BufferIndexingLinkerExporter extends GuardingDynamicLinkerExp
|
||||
case SET_ELEMENT:
|
||||
return linkSetElement(self);
|
||||
case GET_PROPERTY: {
|
||||
Object name = NamedOperation.getName(desc.getOperation());
|
||||
final Object name = NamedOperation.getName(desc.getOperation());
|
||||
if ("length".equals(name)) {
|
||||
return linkLength();
|
||||
}
|
||||
@ -195,7 +194,7 @@ public final class BufferIndexingLinkerExporter extends GuardingDynamicLinkerExp
|
||||
return linkers;
|
||||
}
|
||||
|
||||
private static GuardedInvocation linkGetElement(Object self) {
|
||||
private static GuardedInvocation linkGetElement(final Object self) {
|
||||
MethodHandle method = null;
|
||||
MethodHandle guard = null;
|
||||
if (self instanceof ByteBuffer) {
|
||||
@ -224,7 +223,7 @@ public final class BufferIndexingLinkerExporter extends GuardingDynamicLinkerExp
|
||||
return method != null? new GuardedInvocation(method, guard) : null;
|
||||
}
|
||||
|
||||
private static GuardedInvocation linkSetElement(Object self) {
|
||||
private static GuardedInvocation linkSetElement(final Object self) {
|
||||
MethodHandle method = null;
|
||||
MethodHandle guard = null;
|
||||
if (self instanceof ByteBuffer) {
|
||||
|
@ -39,18 +39,17 @@ import jdk.dynalink.CompositeOperation;
|
||||
import jdk.dynalink.NamedOperation;
|
||||
import jdk.dynalink.Operation;
|
||||
import jdk.dynalink.StandardOperation;
|
||||
import jdk.dynalink.linker.GuardedInvocation;
|
||||
import jdk.dynalink.linker.GuardingDynamicLinker;
|
||||
import jdk.dynalink.linker.GuardingDynamicLinkerExporter;
|
||||
import jdk.dynalink.linker.GuardedInvocation;
|
||||
import jdk.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.dynalink.linker.LinkRequest;
|
||||
import jdk.dynalink.linker.LinkerServices;
|
||||
import jdk.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.dynalink.linker.support.Guards;
|
||||
import jdk.dynalink.linker.support.Lookup;
|
||||
import org.w3c.dom.Attr;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.NodeList;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
/**
|
||||
* This is a dynalink pluggable linker (see http://openjdk.java.net/jeps/276).
|
||||
@ -65,12 +64,12 @@ public final class DOMLinkerExporter extends GuardingDynamicLinkerExporter {
|
||||
}
|
||||
|
||||
// return List of child Elements of the given Element matching the given name.
|
||||
private static List<Element> getChildElements(Element elem, String name) {
|
||||
NodeList nodeList = elem.getChildNodes();
|
||||
List<Element> childElems = new ArrayList<>();
|
||||
int len = nodeList.getLength();
|
||||
private static List<Element> getChildElements(final Element elem, final String name) {
|
||||
final NodeList nodeList = elem.getChildNodes();
|
||||
final List<Element> childElems = new ArrayList<>();
|
||||
final int len = nodeList.getLength();
|
||||
for (int i = 0; i < len; i++) {
|
||||
Node node = nodeList.item(i);
|
||||
final Node node = nodeList.item(i);
|
||||
if (node.getNodeType() == Node.ELEMENT_NODE &&
|
||||
((Element)node).getTagName().equals(name)) {
|
||||
childElems.add((Element)node);
|
||||
@ -81,18 +80,18 @@ public final class DOMLinkerExporter extends GuardingDynamicLinkerExporter {
|
||||
|
||||
// method that returns either unique child element matching given name
|
||||
// or a list of child elements of that name (if there are more than one matches).
|
||||
public static Object getElementsByName(Object elem, final String name) {
|
||||
List<Element> elems = getChildElements((Element)elem, name);
|
||||
public static Object getElementsByName(final Object elem, final String name) {
|
||||
final List<Element> elems = getChildElements((Element)elem, name);
|
||||
return elems.size() == 1? elems.get(0) : elems;
|
||||
}
|
||||
|
||||
// method to extract text context under a given DOM Element
|
||||
public static Object getElementText(Object elem) {
|
||||
NodeList nodeList = ((Element)elem).getChildNodes();
|
||||
int len = nodeList.getLength();
|
||||
StringBuilder text = new StringBuilder();
|
||||
public static Object getElementText(final Object elem) {
|
||||
final NodeList nodeList = ((Element)elem).getChildNodes();
|
||||
final int len = nodeList.getLength();
|
||||
final StringBuilder text = new StringBuilder();
|
||||
for (int i = 0; i < len; i++) {
|
||||
Node node = nodeList.item(i);
|
||||
final Node node = nodeList.item(i);
|
||||
if (node.getNodeType() == Node.TEXT_NODE) {
|
||||
text.append(node.getNodeValue());
|
||||
}
|
||||
@ -123,21 +122,21 @@ public final class DOMLinkerExporter extends GuardingDynamicLinkerExporter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public GuardedInvocation getGuardedInvocation(LinkRequest request,
|
||||
LinkerServices linkerServices) throws Exception {
|
||||
public GuardedInvocation getGuardedInvocation(final LinkRequest request,
|
||||
final LinkerServices linkerServices) throws Exception {
|
||||
final Object self = request.getReceiver();
|
||||
if (! (self instanceof Element)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
CallSiteDescriptor desc = request.getCallSiteDescriptor();
|
||||
Operation op = desc.getOperation();
|
||||
Object name = NamedOperation.getName(op);
|
||||
boolean getProp = CompositeOperation.contains(
|
||||
final CallSiteDescriptor desc = request.getCallSiteDescriptor();
|
||||
final Operation op = desc.getOperation();
|
||||
final Object name = NamedOperation.getName(op);
|
||||
final boolean getProp = CompositeOperation.contains(
|
||||
NamedOperation.getBaseOperation(op),
|
||||
StandardOperation.GET_PROPERTY);
|
||||
if (getProp && name instanceof String) {
|
||||
String nameStr = (String)name;
|
||||
final String nameStr = (String)name;
|
||||
|
||||
// Treat names starting with "_" as special names.
|
||||
// Everything else is linked other dynalink bean linker!
|
||||
|
@ -37,13 +37,13 @@ public class MissingMethodExample extends ArrayList
|
||||
implements MissingMethodHandler {
|
||||
|
||||
@Override
|
||||
public Object doesNotUnderstand(String name, Object... args) {
|
||||
public Object doesNotUnderstand(final String name, final Object... args) {
|
||||
// This simple doesNotUnderstand just prints method name and args.
|
||||
// You can put useful method routing logic here.
|
||||
System.out.println("you called " + name);
|
||||
if (args.length != 0) {
|
||||
System.out.println("arguments are: ");
|
||||
for (Object arg : args) {
|
||||
for (final Object arg : args) {
|
||||
System.out.println(" " + arg);
|
||||
}
|
||||
}
|
||||
|
@ -40,12 +40,12 @@ import jdk.dynalink.NamedOperation;
|
||||
import jdk.dynalink.Operation;
|
||||
import jdk.dynalink.StandardOperation;
|
||||
import jdk.dynalink.beans.BeansLinker;
|
||||
import jdk.dynalink.linker.GuardedInvocation;
|
||||
import jdk.dynalink.linker.GuardingDynamicLinker;
|
||||
import jdk.dynalink.linker.GuardingDynamicLinkerExporter;
|
||||
import jdk.dynalink.linker.GuardedInvocation;
|
||||
import jdk.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.dynalink.linker.LinkRequest;
|
||||
import jdk.dynalink.linker.LinkerServices;
|
||||
import jdk.dynalink.linker.TypeBasedGuardingDynamicLinker;
|
||||
import jdk.dynalink.linker.support.Guards;
|
||||
import jdk.dynalink.linker.support.Lookup;
|
||||
|
||||
@ -65,7 +65,7 @@ public final class MissingMethodLinkerExporter extends GuardingDynamicLinkerExpo
|
||||
public static class MissingMethod {
|
||||
private final String name;
|
||||
|
||||
public MissingMethod(String name) {
|
||||
public MissingMethod(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@ -130,20 +130,20 @@ public final class MissingMethodLinkerExporter extends GuardingDynamicLinkerExpo
|
||||
}
|
||||
|
||||
@Override
|
||||
public GuardedInvocation getGuardedInvocation(LinkRequest request,
|
||||
LinkerServices linkerServices) throws Exception {
|
||||
public GuardedInvocation getGuardedInvocation(final LinkRequest request,
|
||||
final LinkerServices linkerServices) throws Exception {
|
||||
final Object self = request.getReceiver();
|
||||
CallSiteDescriptor desc = request.getCallSiteDescriptor();
|
||||
final CallSiteDescriptor desc = request.getCallSiteDescriptor();
|
||||
|
||||
// any method call is done by two steps. Step (1) GET_METHOD and (2) is CALL
|
||||
// For step (1), we check if GET_METHOD can succeed by Java linker, if so
|
||||
// we return that method object. If not, we return a MissingMethod object.
|
||||
if (self instanceof MissingMethodHandler) {
|
||||
// Check if this is a named GET_METHOD first.
|
||||
boolean isGetMethod = getFirstStandardOperation(desc) == StandardOperation.GET_METHOD;
|
||||
Object name = NamedOperation.getName(desc.getOperation());
|
||||
final boolean isGetMethod = getFirstStandardOperation(desc) == StandardOperation.GET_METHOD;
|
||||
final Object name = NamedOperation.getName(desc.getOperation());
|
||||
if (isGetMethod && name instanceof String) {
|
||||
GuardingDynamicLinker javaLinker = beansLinker.getLinkerForClass(self.getClass());
|
||||
final GuardingDynamicLinker javaLinker = beansLinker.getLinkerForClass(self.getClass());
|
||||
GuardedInvocation inv;
|
||||
try {
|
||||
inv = javaLinker.getGuardedInvocation(request, linkerServices);
|
||||
@ -151,11 +151,11 @@ public final class MissingMethodLinkerExporter extends GuardingDynamicLinkerExpo
|
||||
inv = null;
|
||||
}
|
||||
|
||||
String nameStr = name.toString();
|
||||
final String nameStr = name.toString();
|
||||
if (inv == null) {
|
||||
// use "this" for just guard and drop it -- return a constant Method handle
|
||||
// that returns a newly created MissingMethod object
|
||||
MethodHandle mh = MethodHandles.constant(Object.class, new MissingMethod(nameStr));
|
||||
final MethodHandle mh = MethodHandles.constant(Object.class, new MissingMethod(nameStr));
|
||||
inv = new GuardedInvocation(
|
||||
MethodHandles.dropArguments(mh, 0, Object.class),
|
||||
Guards.isOfClass(self.getClass(), MethodType.methodType(Boolean.TYPE, Object.class)));
|
||||
@ -166,7 +166,7 @@ public final class MissingMethodLinkerExporter extends GuardingDynamicLinkerExpo
|
||||
} else if (self instanceof MissingMethod) {
|
||||
// This is step (2). We call MissingMethodHandler.doesNotUnderstand here
|
||||
// Check if this is this a CALL first.
|
||||
boolean isCall = getFirstStandardOperation(desc) == StandardOperation.CALL;
|
||||
final boolean isCall = getFirstStandardOperation(desc) == StandardOperation.CALL;
|
||||
if (isCall) {
|
||||
MethodHandle mh = DOES_NOT_UNDERSTAND;
|
||||
|
||||
|
@ -29,22 +29,18 @@
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.lang.invoke.MethodType;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import jdk.dynalink.CallSiteDescriptor;
|
||||
import jdk.dynalink.CompositeOperation;
|
||||
import jdk.dynalink.NamedOperation;
|
||||
import jdk.dynalink.Operation;
|
||||
import jdk.dynalink.CompositeOperation;
|
||||
import jdk.dynalink.StandardOperation;
|
||||
import jdk.dynalink.linker.GuardedInvocation;
|
||||
import jdk.dynalink.linker.GuardingDynamicLinker;
|
||||
import jdk.dynalink.linker.GuardingDynamicLinkerExporter;
|
||||
import jdk.dynalink.linker.GuardedInvocation;
|
||||
import jdk.dynalink.linker.LinkRequest;
|
||||
import jdk.dynalink.linker.LinkerServices;
|
||||
import jdk.dynalink.linker.support.SimpleLinkRequest;
|
||||
@ -62,9 +58,9 @@ public final class UnderscoreNameLinkerExporter extends GuardingDynamicLinkerExp
|
||||
private static final Pattern UNDERSCORE_NAME = Pattern.compile("_(.)");
|
||||
|
||||
// translate underscore_separated name as a CamelCase name
|
||||
private static String translateToCamelCase(String name) {
|
||||
Matcher m = UNDERSCORE_NAME.matcher(name);
|
||||
StringBuilder buf = new StringBuilder();
|
||||
private static String translateToCamelCase(final String name) {
|
||||
final Matcher m = UNDERSCORE_NAME.matcher(name);
|
||||
final StringBuilder buf = new StringBuilder();
|
||||
while (m.find()) {
|
||||
m.appendReplacement(buf, m.group(1).toUpperCase());
|
||||
}
|
||||
@ -94,28 +90,28 @@ public final class UnderscoreNameLinkerExporter extends GuardingDynamicLinkerExp
|
||||
final ArrayList<GuardingDynamicLinker> linkers = new ArrayList<>();
|
||||
linkers.add(new GuardingDynamicLinker() {
|
||||
@Override
|
||||
public GuardedInvocation getGuardedInvocation(LinkRequest request,
|
||||
LinkerServices linkerServices) throws Exception {
|
||||
public GuardedInvocation getGuardedInvocation(final LinkRequest request,
|
||||
final LinkerServices linkerServices) throws Exception {
|
||||
final Object self = request.getReceiver();
|
||||
CallSiteDescriptor desc = request.getCallSiteDescriptor();
|
||||
Operation op = desc.getOperation();
|
||||
Object name = NamedOperation.getName(op);
|
||||
final CallSiteDescriptor desc = request.getCallSiteDescriptor();
|
||||
final Operation op = desc.getOperation();
|
||||
final Object name = NamedOperation.getName(op);
|
||||
// is this a named GET_METHOD?
|
||||
boolean isGetMethod = getFirstStandardOperation(desc) == StandardOperation.GET_METHOD;
|
||||
final boolean isGetMethod = getFirstStandardOperation(desc) == StandardOperation.GET_METHOD;
|
||||
if (isGetMethod && name instanceof String) {
|
||||
String str = (String)name;
|
||||
final String str = (String)name;
|
||||
if (str.indexOf('_') == -1) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String nameStr = translateToCamelCase(str);
|
||||
final String nameStr = translateToCamelCase(str);
|
||||
// create a new call descriptor to use translated name
|
||||
CallSiteDescriptor newDesc = new CallSiteDescriptor(
|
||||
final CallSiteDescriptor newDesc = new CallSiteDescriptor(
|
||||
desc.getLookup(),
|
||||
new NamedOperation(NamedOperation.getBaseOperation(op), nameStr),
|
||||
desc.getMethodType());
|
||||
// create a new Link request to link the call site with translated name
|
||||
LinkRequest newRequest = new SimpleLinkRequest(newDesc,
|
||||
final LinkRequest newRequest = new SimpleLinkRequest(newDesc,
|
||||
request.isCallSiteUnstable(), request.getArguments());
|
||||
// return guarded invocation linking the translated request
|
||||
return linkerServices.getGuardedInvocation(newRequest);
|
||||
|
2
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/DestructuringDeclTreeImpl.java
2
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/DestructuringDeclTreeImpl.java
@ -36,7 +36,7 @@ final class DestructuringDeclTreeImpl extends StatementTreeImpl
|
||||
private final ExpressionTree lhs;
|
||||
private final ExpressionTree init;
|
||||
|
||||
DestructuringDeclTreeImpl(ExpressionStatement exprStat, final ExpressionTree lhs, final ExpressionTree init) {
|
||||
DestructuringDeclTreeImpl(final ExpressionStatement exprStat, final ExpressionTree lhs, final ExpressionTree init) {
|
||||
super(exprStat);
|
||||
assert exprStat.destructuringDeclarationType() != null : "expecting a destructuring decl. statement";
|
||||
|
||||
|
@ -39,10 +39,10 @@ final class ExportEntryTreeImpl extends TreeImpl implements ExportEntryTree {
|
||||
private final IdentifierTree localName;
|
||||
|
||||
private ExportEntryTreeImpl(final long startPos, final long endPos,
|
||||
IdentifierTree exportName,
|
||||
IdentifierTree moduleRequest,
|
||||
IdentifierTree importName,
|
||||
IdentifierTree localName) {
|
||||
final IdentifierTree exportName,
|
||||
final IdentifierTree moduleRequest,
|
||||
final IdentifierTree importName,
|
||||
final IdentifierTree localName) {
|
||||
super(null); // no underlying Node!
|
||||
this.startPos = startPos;
|
||||
this.endPos = endPos;
|
||||
@ -52,7 +52,7 @@ final class ExportEntryTreeImpl extends TreeImpl implements ExportEntryTree {
|
||||
this.localName = localName;
|
||||
}
|
||||
|
||||
private static ExportEntryTreeImpl createExportEntry(Module.ExportEntry entry) {
|
||||
private static ExportEntryTreeImpl createExportEntry(final Module.ExportEntry entry) {
|
||||
return new ExportEntryTreeImpl(entry.getStartPosition(),
|
||||
entry.getEndPosition(),
|
||||
identOrNull(entry.getExportName()),
|
||||
@ -61,7 +61,7 @@ final class ExportEntryTreeImpl extends TreeImpl implements ExportEntryTree {
|
||||
identOrNull(entry.getLocalName()));
|
||||
}
|
||||
|
||||
static List<ExportEntryTreeImpl> createExportList(List<Module.ExportEntry> exportList) {
|
||||
static List<ExportEntryTreeImpl> createExportList(final List<Module.ExportEntry> exportList) {
|
||||
return exportList.stream().
|
||||
map(ExportEntryTreeImpl::createExportEntry).
|
||||
collect(Collectors.toList());
|
||||
|
2
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/FunctionExpressionTreeImpl.java
2
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/tree/FunctionExpressionTreeImpl.java
@ -51,7 +51,7 @@ final class FunctionExpressionTreeImpl extends ExpressionTreeImpl
|
||||
|
||||
this.params = params;
|
||||
if (node.getFlag(FunctionNode.HAS_EXPRESSION_BODY)) {
|
||||
StatementTree first = body.getStatements().get(0);
|
||||
final StatementTree first = body.getStatements().get(0);
|
||||
assert first instanceof ReturnTree : "consise func. expression should have a return statement";
|
||||
this.body = ((ReturnTree)first).getExpression();
|
||||
} else {
|
||||
|
@ -191,9 +191,9 @@ final class IRTranslator extends SimpleNodeVisitor {
|
||||
@Override
|
||||
public boolean enterExpressionStatement(final ExpressionStatement expressionStatement) {
|
||||
if (expressionStatement.destructuringDeclarationType() != null) {
|
||||
ExpressionTree expr = translateExpr(expressionStatement.getExpression());
|
||||
final ExpressionTree expr = translateExpr(expressionStatement.getExpression());
|
||||
assert expr instanceof AssignmentTree : "destructuring decl. statement does not have assignment";
|
||||
AssignmentTree assign = (AssignmentTree)expr;
|
||||
final AssignmentTree assign = (AssignmentTree)expr;
|
||||
curStat = new DestructuringDeclTreeImpl(expressionStatement, assign.getVariable(), assign.getExpression());
|
||||
} else {
|
||||
curStat = new ExpressionStatementTreeImpl(expressionStatement,
|
||||
@ -544,12 +544,12 @@ final class IRTranslator extends SimpleNodeVisitor {
|
||||
}
|
||||
|
||||
private List<? extends ExpressionTree> translateParameters(final FunctionNode func) {
|
||||
Map<IdentNode, Expression> paramExprs = func.getParameterExpressions();
|
||||
final Map<IdentNode, Expression> paramExprs = func.getParameterExpressions();
|
||||
if (paramExprs != null) {
|
||||
List<IdentNode> params = func.getParameters();
|
||||
final List<IdentNode> params = func.getParameters();
|
||||
final List<ExpressionTreeImpl> exprTrees = new ArrayList<>(params.size());
|
||||
for (final IdentNode ident : params) {
|
||||
Expression expr = paramExprs.containsKey(ident)? paramExprs.get(ident) : ident;
|
||||
final Expression expr = paramExprs.containsKey(ident)? paramExprs.get(ident) : ident;
|
||||
curExpr = null;
|
||||
expr.accept(this);
|
||||
assert curExpr != null;
|
||||
|
@ -38,9 +38,9 @@ final class ImportEntryTreeImpl extends TreeImpl implements ImportEntryTree {
|
||||
private final IdentifierTree localName;
|
||||
|
||||
private ImportEntryTreeImpl(final long startPos, final long endPos,
|
||||
IdentifierTree moduleRequest,
|
||||
IdentifierTree importName,
|
||||
IdentifierTree localName) {
|
||||
final IdentifierTree moduleRequest,
|
||||
final IdentifierTree importName,
|
||||
final IdentifierTree localName) {
|
||||
super(null); // No underlying Node!
|
||||
this.startPos = startPos;
|
||||
this.endPos = endPos;
|
||||
@ -49,7 +49,7 @@ final class ImportEntryTreeImpl extends TreeImpl implements ImportEntryTree {
|
||||
this.localName = localName;
|
||||
}
|
||||
|
||||
private static ImportEntryTreeImpl createImportEntry(Module.ImportEntry entry) {
|
||||
private static ImportEntryTreeImpl createImportEntry(final Module.ImportEntry entry) {
|
||||
return new ImportEntryTreeImpl(entry.getStartPosition(),
|
||||
entry.getEndPosition(),
|
||||
identOrNull(entry.getModuleRequest()),
|
||||
@ -57,7 +57,7 @@ final class ImportEntryTreeImpl extends TreeImpl implements ImportEntryTree {
|
||||
identOrNull(entry.getLocalName()));
|
||||
}
|
||||
|
||||
static List<ImportEntryTreeImpl> createImportList(List<Module.ImportEntry> importList) {
|
||||
static List<ImportEntryTreeImpl> createImportList(final List<Module.ImportEntry> importList) {
|
||||
return importList.stream().
|
||||
map(ImportEntryTreeImpl::createImportEntry).
|
||||
collect(Collectors.toList());
|
||||
|
@ -140,7 +140,7 @@ public interface Parser {
|
||||
*/
|
||||
public static Parser create(final String... options) throws IllegalArgumentException {
|
||||
options.getClass();
|
||||
for (String opt : options) {
|
||||
for (final String opt : options) {
|
||||
switch (opt) {
|
||||
case "--const-as-var":
|
||||
case "-dump-on-error":
|
||||
|
@ -73,9 +73,9 @@ final class ParserImpl implements Parser {
|
||||
|
||||
// append "--parse-only to signal to the Nashorn that it
|
||||
// is being used in "parse only" mode.
|
||||
String[] newArgs = Arrays.copyOf(args, args.length + 1, String[].class);
|
||||
final String[] newArgs = Arrays.copyOf(args, args.length + 1, String[].class);
|
||||
newArgs[args.length] = "--parse-only";
|
||||
Options options = new Options("nashorn");
|
||||
final Options options = new Options("nashorn");
|
||||
options.process(newArgs);
|
||||
this.env = new ScriptEnvironment(options,
|
||||
new PrintWriter(System.out), new PrintWriter(System.err));
|
||||
@ -142,32 +142,32 @@ final class ParserImpl implements Parser {
|
||||
}
|
||||
}
|
||||
|
||||
private CompilationUnitTree parseModule(File file, DiagnosticListener listener) throws IOException, NashornException {
|
||||
private CompilationUnitTree parseModule(final File file, final DiagnosticListener listener) throws IOException, NashornException {
|
||||
final Source src = Source.sourceFor(Objects.requireNonNull(file).getName(), file);
|
||||
return makeModule(src, listener);
|
||||
}
|
||||
|
||||
private CompilationUnitTree parseModule(Path path, DiagnosticListener listener) throws IOException, NashornException {
|
||||
private CompilationUnitTree parseModule(final Path path, final DiagnosticListener listener) throws IOException, NashornException {
|
||||
final Source src = Source.sourceFor(Objects.requireNonNull(path).toString(), path);
|
||||
return makeModule(src, listener);
|
||||
}
|
||||
|
||||
private CompilationUnitTree parseModule(URL url, DiagnosticListener listener) throws IOException, NashornException {
|
||||
private CompilationUnitTree parseModule(final URL url, final DiagnosticListener listener) throws IOException, NashornException {
|
||||
final Source src = Source.sourceFor(url.toString(), url);
|
||||
return makeModule(src, listener);
|
||||
}
|
||||
|
||||
private CompilationUnitTree parseModule(String name, Reader reader, DiagnosticListener listener) throws IOException, NashornException {
|
||||
private CompilationUnitTree parseModule(final String name, final Reader reader, final DiagnosticListener listener) throws IOException, NashornException {
|
||||
final Source src = Source.sourceFor(Objects.requireNonNull(name), Objects.requireNonNull(reader));
|
||||
return makeModule(src, listener);
|
||||
}
|
||||
|
||||
private CompilationUnitTree parseModule(String name, String code, DiagnosticListener listener) throws NashornException {
|
||||
private CompilationUnitTree parseModule(final String name, final String code, final DiagnosticListener listener) throws NashornException {
|
||||
final Source src = Source.sourceFor(name, code);
|
||||
return makeModule(src, listener);
|
||||
}
|
||||
|
||||
private CompilationUnitTree parseModule(ScriptObjectMirror scriptObj, DiagnosticListener listener) throws NashornException {
|
||||
private CompilationUnitTree parseModule(final ScriptObjectMirror scriptObj, final DiagnosticListener listener) throws NashornException {
|
||||
final Map<?, ?> map = Objects.requireNonNull(scriptObj);
|
||||
if (map.containsKey("script") && map.containsKey("name")) {
|
||||
final String script = JSType.toString(map.get("script"));
|
||||
@ -179,7 +179,7 @@ final class ParserImpl implements Parser {
|
||||
}
|
||||
}
|
||||
|
||||
private CompilationUnitTree makeModule(Source src, DiagnosticListener listener) {
|
||||
private CompilationUnitTree makeModule(final Source src, final DiagnosticListener listener) {
|
||||
final FunctionNode modFunc = makeParser(src, listener).parseModule(src.getName());
|
||||
return new IRTranslator().translate(modFunc);
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ public class SimpleTreeVisitorES5_1<R, P> implements TreeVisitor<R, P> {
|
||||
* @return the result of {@code visitUnknown}
|
||||
*/
|
||||
@Override
|
||||
public R visitModule(ModuleTree node, P p) {
|
||||
public R visitModule(final ModuleTree node, final P p) {
|
||||
return visitUnknown(node, p);
|
||||
}
|
||||
|
||||
@ -83,7 +83,7 @@ public class SimpleTreeVisitorES5_1<R, P> implements TreeVisitor<R, P> {
|
||||
* @return the result of {@code visitUnknown}
|
||||
*/
|
||||
@Override
|
||||
public R visitExportEntry(ExportEntryTree node, P p) {
|
||||
public R visitExportEntry(final ExportEntryTree node, final P p) {
|
||||
return visitUnknown(node, p);
|
||||
}
|
||||
|
||||
@ -96,7 +96,7 @@ public class SimpleTreeVisitorES5_1<R, P> implements TreeVisitor<R, P> {
|
||||
* @return the result of {@code visitUnknown}
|
||||
*/
|
||||
@Override
|
||||
public R visitImportEntry(ImportEntryTree node, P p) {
|
||||
public R visitImportEntry(final ImportEntryTree node, final P p) {
|
||||
return visitUnknown(node, p);
|
||||
}
|
||||
|
||||
@ -153,7 +153,7 @@ public class SimpleTreeVisitorES5_1<R, P> implements TreeVisitor<R, P> {
|
||||
* @return the result of {@code visitUnknown}
|
||||
*/
|
||||
@Override
|
||||
public R visitClassDeclaration(ClassDeclarationTree node, P p) {
|
||||
public R visitClassDeclaration(final ClassDeclarationTree node, final P p) {
|
||||
return visitUnknown(node, p);
|
||||
}
|
||||
|
||||
@ -166,7 +166,7 @@ public class SimpleTreeVisitorES5_1<R, P> implements TreeVisitor<R, P> {
|
||||
* @return the result of {@code visitUnknown}
|
||||
*/
|
||||
@Override
|
||||
public R visitClassExpression(ClassExpressionTree node, P p) {
|
||||
public R visitClassExpression(final ClassExpressionTree node, final P p) {
|
||||
return visitUnknown(node, p);
|
||||
}
|
||||
|
||||
@ -247,7 +247,7 @@ public class SimpleTreeVisitorES5_1<R, P> implements TreeVisitor<R, P> {
|
||||
* @return the result of {@code visitUnknown}
|
||||
*/
|
||||
@Override
|
||||
public R visitForOfLoop(ForOfLoopTree node, P p) {
|
||||
public R visitForOfLoop(final ForOfLoopTree node, final P p) {
|
||||
return visitUnknown(node, p);
|
||||
}
|
||||
|
||||
@ -357,21 +357,21 @@ public class SimpleTreeVisitorES5_1<R, P> implements TreeVisitor<R, P> {
|
||||
|
||||
@Override
|
||||
public R visitProperty(final PropertyTree node, final P r) {
|
||||
FunctionExpressionTree getter = node.getGetter();
|
||||
final FunctionExpressionTree getter = node.getGetter();
|
||||
if (getter != null) {
|
||||
getter.accept(this, r);
|
||||
}
|
||||
ExpressionTree key = node.getKey();
|
||||
final ExpressionTree key = node.getKey();
|
||||
if (key != null) {
|
||||
key.accept(this, r);
|
||||
}
|
||||
|
||||
FunctionExpressionTree setter = node.getSetter();
|
||||
final FunctionExpressionTree setter = node.getSetter();
|
||||
if (setter != null) {
|
||||
setter.accept(this, r);
|
||||
}
|
||||
|
||||
ExpressionTree value = node.getValue();
|
||||
final ExpressionTree value = node.getValue();
|
||||
if (value != null) {
|
||||
value.accept(this, r);
|
||||
}
|
||||
@ -392,7 +392,7 @@ public class SimpleTreeVisitorES5_1<R, P> implements TreeVisitor<R, P> {
|
||||
* @return the result of {@code visitUnknown}
|
||||
*/
|
||||
@Override
|
||||
public R visitTemplateLiteral(TemplateLiteralTree node, P p) {
|
||||
public R visitTemplateLiteral(final TemplateLiteralTree node, final P p) {
|
||||
return visitUnknown(node, p);
|
||||
}
|
||||
|
||||
@ -410,7 +410,7 @@ public class SimpleTreeVisitorES5_1<R, P> implements TreeVisitor<R, P> {
|
||||
* @return the result of {@code visitUnknown}
|
||||
*/
|
||||
@Override
|
||||
public R visitSpread(SpreadTree node, P p) {
|
||||
public R visitSpread(final SpreadTree node, final P p) {
|
||||
return visitUnknown(node, p);
|
||||
}
|
||||
|
||||
@ -495,7 +495,7 @@ public class SimpleTreeVisitorES5_1<R, P> implements TreeVisitor<R, P> {
|
||||
* @return the result of {@code visitUnknown}
|
||||
*/
|
||||
@Override
|
||||
public R visitYield(YieldTree node, P p) {
|
||||
public R visitYield(final YieldTree node, final P p) {
|
||||
return visitUnknown(node, p);
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ public class SimpleTreeVisitorES6<R, P> extends SimpleTreeVisitorES5_1<R, P> {
|
||||
* @return value from the visitor
|
||||
*/
|
||||
@Override
|
||||
public R visitModule(ModuleTree node, P p) {
|
||||
public R visitModule(final ModuleTree node, final P p) {
|
||||
node.getImportEntries().forEach(e -> visitImportEntry(e, p));
|
||||
node.getLocalExportEntries().forEach(e -> visitExportEntry(e, p));
|
||||
node.getIndirectExportEntries().forEach(e -> visitExportEntry(e, p));
|
||||
@ -82,7 +82,7 @@ public class SimpleTreeVisitorES6<R, P> extends SimpleTreeVisitorES5_1<R, P> {
|
||||
* @return value from the visitor
|
||||
*/
|
||||
@Override
|
||||
public R visitExportEntry(ExportEntryTree node, P p) {
|
||||
public R visitExportEntry(final ExportEntryTree node, final P p) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -94,7 +94,7 @@ public class SimpleTreeVisitorES6<R, P> extends SimpleTreeVisitorES5_1<R, P> {
|
||||
* @return value from the visitor
|
||||
*/
|
||||
@Override
|
||||
public R visitImportEntry(ImportEntryTree node, P p) {
|
||||
public R visitImportEntry(final ImportEntryTree node, final P p) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -106,7 +106,7 @@ public class SimpleTreeVisitorES6<R, P> extends SimpleTreeVisitorES5_1<R, P> {
|
||||
* @return value from the visitor
|
||||
*/
|
||||
@Override
|
||||
public R visitClassDeclaration(ClassDeclarationTree node, P p) {
|
||||
public R visitClassDeclaration(final ClassDeclarationTree node, final P p) {
|
||||
node.getName().accept(this, p);
|
||||
final ExpressionTree heritage = node.getClassHeritage();
|
||||
if (heritage != null) {
|
||||
@ -118,7 +118,7 @@ public class SimpleTreeVisitorES6<R, P> extends SimpleTreeVisitorES5_1<R, P> {
|
||||
}
|
||||
final List<? extends PropertyTree> elements = node.getClassElements();
|
||||
if (elements != null) {
|
||||
for (PropertyTree prop : elements) {
|
||||
for (final PropertyTree prop : elements) {
|
||||
prop.accept(this, p);
|
||||
}
|
||||
}
|
||||
@ -134,7 +134,7 @@ public class SimpleTreeVisitorES6<R, P> extends SimpleTreeVisitorES5_1<R, P> {
|
||||
* @return value from the visitor
|
||||
*/
|
||||
@Override
|
||||
public R visitClassExpression(ClassExpressionTree node, P p) {
|
||||
public R visitClassExpression(final ClassExpressionTree node, final P p) {
|
||||
node.getName().accept(this, p);
|
||||
final ExpressionTree heritage = node.getClassHeritage();
|
||||
if (heritage != null) {
|
||||
@ -146,7 +146,7 @@ public class SimpleTreeVisitorES6<R, P> extends SimpleTreeVisitorES5_1<R, P> {
|
||||
}
|
||||
final List<? extends PropertyTree> elements = node.getClassElements();
|
||||
if (elements != null) {
|
||||
for (PropertyTree prop : elements) {
|
||||
for (final PropertyTree prop : elements) {
|
||||
prop.accept(this, p);
|
||||
}
|
||||
}
|
||||
@ -180,7 +180,7 @@ public class SimpleTreeVisitorES6<R, P> extends SimpleTreeVisitorES5_1<R, P> {
|
||||
* @return value from the visitor
|
||||
*/
|
||||
@Override
|
||||
public R visitYield(YieldTree node, P p) {
|
||||
public R visitYield(final YieldTree node, final P p) {
|
||||
node.getExpression().accept(this, p);
|
||||
return null;
|
||||
}
|
||||
@ -193,7 +193,7 @@ public class SimpleTreeVisitorES6<R, P> extends SimpleTreeVisitorES5_1<R, P> {
|
||||
* @return value from the visitor
|
||||
*/
|
||||
@Override
|
||||
public R visitSpread(SpreadTree node, P p) {
|
||||
public R visitSpread(final SpreadTree node, final P p) {
|
||||
node.getExpression().accept(this, p);
|
||||
return null;
|
||||
}
|
||||
@ -206,9 +206,9 @@ public class SimpleTreeVisitorES6<R, P> extends SimpleTreeVisitorES5_1<R, P> {
|
||||
* @return value from the visitor
|
||||
*/
|
||||
@Override
|
||||
public R visitTemplateLiteral(TemplateLiteralTree node, P p) {
|
||||
public R visitTemplateLiteral(final TemplateLiteralTree node, final P p) {
|
||||
final List<? extends ExpressionTree> expressions = node.getExpressions();
|
||||
for (ExpressionTree expr : expressions) {
|
||||
for (final ExpressionTree expr : expressions) {
|
||||
expr.accept(this, p);
|
||||
}
|
||||
return null;
|
||||
|
@ -33,7 +33,7 @@ final class SwitchTreeImpl extends StatementTreeImpl implements SwitchTree {
|
||||
private final List<? extends CaseTree> cases;
|
||||
SwitchTreeImpl(final SwitchNode node,
|
||||
final ExpressionTree expr,
|
||||
List<? extends CaseTree> cases) {
|
||||
final List<? extends CaseTree> cases) {
|
||||
super(node);
|
||||
this.expr = expr;
|
||||
this.cases = cases;
|
||||
|
@ -33,7 +33,7 @@ final class TemplateLiteralTreeImpl extends ExpressionTreeImpl
|
||||
|
||||
private final List<? extends ExpressionTree> expressions;
|
||||
|
||||
TemplateLiteralTreeImpl(Expression node, List<? extends ExpressionTree> expressions) {
|
||||
TemplateLiteralTreeImpl(final Expression node, final List<? extends ExpressionTree> expressions) {
|
||||
super(node);
|
||||
this.expressions = expressions;
|
||||
}
|
||||
|
@ -566,7 +566,7 @@ public interface Tree {
|
||||
*/
|
||||
OTHER(null);
|
||||
|
||||
Kind(Class<? extends Tree> intf) {
|
||||
Kind(final Class<? extends Tree> intf) {
|
||||
associatedInterface = intf;
|
||||
}
|
||||
|
||||
|
@ -52,7 +52,7 @@ public class UnknownTreeException extends RuntimeException {
|
||||
* @param t the unknown tree, may be {@code null}
|
||||
* @param p an additional parameter, may be {@code null}
|
||||
*/
|
||||
public UnknownTreeException(Tree t, Object p) {
|
||||
public UnknownTreeException(final Tree t, final Object p) {
|
||||
super("Unknown tree: " + t);
|
||||
this.tree = t;
|
||||
this.parameter = p;
|
||||
|
@ -258,7 +258,7 @@ final class CodeGenerator extends NodeOperatorVisitor<CodeGeneratorLexicalContex
|
||||
private final int[] continuationEntryPoints;
|
||||
|
||||
// Scope object creators needed for for-of and for-in loops
|
||||
private Deque<FieldObjectCreator<?>> scopeObjectCreators = new ArrayDeque<>();
|
||||
private final Deque<FieldObjectCreator<?>> scopeObjectCreators = new ArrayDeque<>();
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
|
4
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/SplitIntoFunctions.java
4
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/SplitIntoFunctions.java
@ -102,7 +102,7 @@ final class SplitIntoFunctions extends NodeVisitor<BlockLexicalContext> {
|
||||
super(new BlockLexicalContext() {
|
||||
@Override
|
||||
protected Block afterSetStatements(final Block block) {
|
||||
for(Statement stmt: block.getStatements()) {
|
||||
for(final Statement stmt: block.getStatements()) {
|
||||
assert !(stmt instanceof SplitNode);
|
||||
}
|
||||
return block;
|
||||
@ -145,7 +145,7 @@ final class SplitIntoFunctions extends NodeVisitor<BlockLexicalContext> {
|
||||
final FunctionState fnState = getCurrentFunctionState();
|
||||
|
||||
final String name = splitNode.getName();
|
||||
Block body = splitNode.getBody();
|
||||
final Block body = splitNode.getBody();
|
||||
final int firstLineNumber = body.getFirstStatementLineNumber();
|
||||
final long token = body.getToken();
|
||||
final int finish = body.getFinish();
|
||||
|
@ -71,10 +71,10 @@ public final class ExpressionList extends Expression {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toString(StringBuilder sb, boolean printType) {
|
||||
public void toString(final StringBuilder sb, final boolean printType) {
|
||||
sb.append("(");
|
||||
boolean first = true;
|
||||
for (Expression expression : expressions) {
|
||||
for (final Expression expression : expressions) {
|
||||
if (first) {
|
||||
first = false;
|
||||
} else {
|
||||
|
@ -51,7 +51,7 @@ public final class TemplateLiteral extends Expression {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Node accept(NodeVisitor<? extends LexicalContext> visitor) {
|
||||
public Node accept(final NodeVisitor<? extends LexicalContext> visitor) {
|
||||
if (visitor.enterTemplateLiteral(this)) {
|
||||
return visitor.leaveTemplateLiteral(this);
|
||||
}
|
||||
@ -60,8 +60,8 @@ public final class TemplateLiteral extends Expression {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toString(StringBuilder sb, boolean printType) {
|
||||
for (Expression expr : exprs) {
|
||||
public void toString(final StringBuilder sb, final boolean printType) {
|
||||
for (final Expression expr : exprs) {
|
||||
sb.append(expr);
|
||||
}
|
||||
}
|
||||
|
@ -2474,7 +2474,7 @@ public final class Global extends Scope {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected FindProperty findProperty(final Object key, final boolean deep, boolean isScope, final ScriptObject start) {
|
||||
protected FindProperty findProperty(final Object key, final boolean deep, final boolean isScope, final ScriptObject start) {
|
||||
if (lexicalScope != null && isScope) {
|
||||
final FindProperty find = lexicalScope.findProperty(key, false);
|
||||
if (find != null) {
|
||||
|
@ -473,7 +473,7 @@ public final class NativeJSON extends ScriptObject {
|
||||
if (holder instanceof ScriptObject) {
|
||||
return ((ScriptObject)holder).get(key);
|
||||
} else if (holder instanceof JSObject) {
|
||||
JSObject jsObj = (JSObject)holder;
|
||||
final JSObject jsObj = (JSObject)holder;
|
||||
if (key instanceof Integer) {
|
||||
return jsObj.getSlot((Integer)key);
|
||||
} else {
|
||||
|
@ -408,7 +408,7 @@ public class Lexer extends Scanner {
|
||||
/**
|
||||
* Test if char is a template literal delimiter ('`').
|
||||
*/
|
||||
private static boolean isTemplateDelimiter(char ch) {
|
||||
private static boolean isTemplateDelimiter(final char ch) {
|
||||
return ch == '`';
|
||||
}
|
||||
|
||||
@ -1077,7 +1077,7 @@ public class Lexer extends Scanner {
|
||||
add(type == TEMPLATE ? TEMPLATE_HEAD : type, stringState.position, stringState.limit);
|
||||
|
||||
// scan to RBRACE
|
||||
Lexer expressionLexer = new Lexer(this, saveState());
|
||||
final Lexer expressionLexer = new Lexer(this, saveState());
|
||||
expressionLexer.templateExpressionOpenBraces = 1;
|
||||
expressionLexer.lexify();
|
||||
restoreState(expressionLexer.saveState());
|
||||
|
@ -632,7 +632,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
return getStatement(false);
|
||||
}
|
||||
|
||||
private Block getStatement(boolean labelledStatement) {
|
||||
private Block getStatement(final boolean labelledStatement) {
|
||||
if (type == LBRACE) {
|
||||
return getBlock(true);
|
||||
}
|
||||
@ -746,28 +746,28 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
return new BinaryNode(op, lhs, rhs);
|
||||
}
|
||||
|
||||
private boolean isDestructuringLhs(Expression lhs) {
|
||||
private boolean isDestructuringLhs(final Expression lhs) {
|
||||
if (lhs instanceof ObjectNode || lhs instanceof LiteralNode.ArrayLiteralNode) {
|
||||
return isES6();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void verifyDestructuringAssignmentPattern(Expression pattern, String contextString) {
|
||||
private void verifyDestructuringAssignmentPattern(final Expression pattern, final String contextString) {
|
||||
assert pattern instanceof ObjectNode || pattern instanceof LiteralNode.ArrayLiteralNode;
|
||||
pattern.accept(new NodeVisitor<LexicalContext>(new LexicalContext()) {
|
||||
@Override
|
||||
public boolean enterLiteralNode(LiteralNode<?> literalNode) {
|
||||
public boolean enterLiteralNode(final LiteralNode<?> literalNode) {
|
||||
if (literalNode.isArray()) {
|
||||
boolean restElement = false;
|
||||
for (Expression element : literalNode.getElementExpressions()) {
|
||||
for (final Expression element : literalNode.getElementExpressions()) {
|
||||
if (element != null) {
|
||||
if (restElement) {
|
||||
throw error(String.format("Unexpected element after rest element"), element.getToken());
|
||||
}
|
||||
if (element.isTokenType(SPREAD_ARRAY)) {
|
||||
restElement = true;
|
||||
Expression lvalue = ((UnaryNode) element).getExpression();
|
||||
final Expression lvalue = ((UnaryNode) element).getExpression();
|
||||
if (!checkValidLValue(lvalue, contextString)) {
|
||||
throw error(AbstractParser.message("invalid.lvalue"), lvalue.getToken());
|
||||
}
|
||||
@ -782,12 +782,12 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean enterObjectNode(ObjectNode objectNode) {
|
||||
public boolean enterObjectNode(final ObjectNode objectNode) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean enterPropertyNode(PropertyNode propertyNode) {
|
||||
public boolean enterPropertyNode(final PropertyNode propertyNode) {
|
||||
if (propertyNode.getValue() != null) {
|
||||
propertyNode.getValue().accept(this);
|
||||
return false;
|
||||
@ -797,7 +797,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean enterIdentNode(IdentNode identNode) {
|
||||
public boolean enterIdentNode(final IdentNode identNode) {
|
||||
verifyIdent(identNode, contextString);
|
||||
if (!checkIdentLValue(identNode)) {
|
||||
referenceError(identNode, null, true);
|
||||
@ -807,17 +807,17 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean enterAccessNode(AccessNode accessNode) {
|
||||
public boolean enterAccessNode(final AccessNode accessNode) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean enterIndexNode(IndexNode indexNode) {
|
||||
public boolean enterIndexNode(final IndexNode indexNode) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean enterBinaryNode(BinaryNode binaryNode) {
|
||||
public boolean enterBinaryNode(final BinaryNode binaryNode) {
|
||||
if (binaryNode.isTokenType(ASSIGN)) {
|
||||
binaryNode.lhs().accept(this);
|
||||
// Initializer(rhs) can be any AssignmentExpression
|
||||
@ -828,7 +828,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean enterUnaryNode(UnaryNode unaryNode) {
|
||||
public boolean enterUnaryNode(final UnaryNode unaryNode) {
|
||||
if (unaryNode.isTokenType(SPREAD_ARRAY)) {
|
||||
// rest element
|
||||
return true;
|
||||
@ -838,7 +838,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean enterDefault(Node node) {
|
||||
protected boolean enterDefault(final Node node) {
|
||||
throw error(String.format("unexpected node in AssignmentPattern: %s", node));
|
||||
}
|
||||
});
|
||||
@ -1221,13 +1221,13 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
* class BindingIdentifier[?Yield] ClassTail[?Yield]
|
||||
* [+Default] class ClassTail[?Yield]
|
||||
*/
|
||||
private ClassNode classDeclaration(boolean isDefault) {
|
||||
int classLineNumber = line;
|
||||
private ClassNode classDeclaration(final boolean isDefault) {
|
||||
final int classLineNumber = line;
|
||||
|
||||
ClassNode classExpression = classExpression(!isDefault);
|
||||
final ClassNode classExpression = classExpression(!isDefault);
|
||||
|
||||
if (!isDefault) {
|
||||
VarNode classVar = new VarNode(classLineNumber, classExpression.getToken(), classExpression.getIdent().getFinish(), classExpression.getIdent(), classExpression, VarNode.IS_CONST);
|
||||
final VarNode classVar = new VarNode(classLineNumber, classExpression.getToken(), classExpression.getIdent().getFinish(), classExpression.getIdent(), classExpression, VarNode.IS_CONST);
|
||||
appendStatement(classVar);
|
||||
}
|
||||
return classExpression;
|
||||
@ -1237,10 +1237,10 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
* ClassExpression[Yield] :
|
||||
* class BindingIdentifier[?Yield]opt ClassTail[?Yield]
|
||||
*/
|
||||
private ClassNode classExpression(boolean isStatement) {
|
||||
private ClassNode classExpression(final boolean isStatement) {
|
||||
assert type == CLASS;
|
||||
int classLineNumber = line;
|
||||
long classToken = token;
|
||||
final int classLineNumber = line;
|
||||
final long classToken = token;
|
||||
next();
|
||||
|
||||
IdentNode className = null;
|
||||
@ -1255,7 +1255,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
private final boolean isStatic;
|
||||
private final String propertyName;
|
||||
|
||||
private ClassElementKey(boolean isStatic, String propertyName) {
|
||||
private ClassElementKey(final boolean isStatic, final String propertyName) {
|
||||
this.isStatic = isStatic;
|
||||
this.propertyName = propertyName;
|
||||
}
|
||||
@ -1270,9 +1270,9 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
public boolean equals(final Object obj) {
|
||||
if (obj instanceof ClassElementKey) {
|
||||
ClassElementKey other = (ClassElementKey) obj;
|
||||
final ClassElementKey other = (ClassElementKey) obj;
|
||||
return this.isStatic == other.isStatic && Objects.equals(this.propertyName, other.propertyName);
|
||||
}
|
||||
return false;
|
||||
@ -1386,7 +1386,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
}
|
||||
}
|
||||
|
||||
private PropertyNode createDefaultClassConstructor(int classLineNumber, long classToken, long lastToken, IdentNode className, boolean subclass) {
|
||||
private PropertyNode createDefaultClassConstructor(final int classLineNumber, final long classToken, final long lastToken, final IdentNode className, final boolean subclass) {
|
||||
final int ctorFinish = finish;
|
||||
final List<Statement> statements;
|
||||
final List<IdentNode> parameters;
|
||||
@ -1844,7 +1844,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
final Expression expression = expression();
|
||||
|
||||
if (expression != null) {
|
||||
ExpressionStatement expressionStatement = new ExpressionStatement(expressionLine, expressionToken, finish, expression);
|
||||
final ExpressionStatement expressionStatement = new ExpressionStatement(expressionLine, expressionToken, finish, expression);
|
||||
appendStatement(expressionStatement);
|
||||
} else {
|
||||
expect(null);
|
||||
@ -2075,7 +2075,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
private boolean lookaheadIsLetDeclaration(final boolean ofContextualKeyword) {
|
||||
assert type == LET;
|
||||
for (int i = 1;; i++) {
|
||||
TokenType t = T(k + i);
|
||||
final TokenType t = T(k + i);
|
||||
switch (t) {
|
||||
case EOL:
|
||||
case COMMENT:
|
||||
@ -3076,7 +3076,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
*/
|
||||
private Expression computedPropertyName() {
|
||||
expect(LBRACKET);
|
||||
Expression expression = assignmentExpression(false);
|
||||
final Expression expression = assignmentExpression(false);
|
||||
expect(RBRACKET);
|
||||
return expression;
|
||||
}
|
||||
@ -3285,11 +3285,11 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
return new PropertyFunction(propertyName, function, computed);
|
||||
}
|
||||
|
||||
private PropertyFunction propertyMethodFunction(Expression key, final long methodToken, final int methodLine, final boolean generator, final int flags, boolean computed) {
|
||||
private PropertyFunction propertyMethodFunction(final Expression key, final long methodToken, final int methodLine, final boolean generator, final int flags, final boolean computed) {
|
||||
final String methodName = key instanceof PropertyKey ? ((PropertyKey) key).getPropertyName() : getDefaultValidFunctionName(methodLine, false);
|
||||
final IdentNode methodNameNode = createIdentNode(((Node)key).getToken(), finish, methodName);
|
||||
|
||||
FunctionNode.Kind functionKind = generator ? FunctionNode.Kind.GENERATOR : FunctionNode.Kind.NORMAL;
|
||||
final FunctionNode.Kind functionKind = generator ? FunctionNode.Kind.GENERATOR : FunctionNode.Kind.NORMAL;
|
||||
final ParserContextFunctionNode functionNode = createParserContextFunctionNode(methodNameNode, methodToken, functionKind, methodLine, null);
|
||||
functionNode.setFlag(flags);
|
||||
if (computed) {
|
||||
@ -3548,7 +3548,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
if (isES6()) {
|
||||
final ParserContextFunctionNode currentFunction = getCurrentNonArrowFunction();
|
||||
if (currentFunction.isMethod()) {
|
||||
long identToken = Token.recast(token, IDENT);
|
||||
final long identToken = Token.recast(token, IDENT);
|
||||
next();
|
||||
lhs = createIdentNode(identToken, finish, SUPER.getName());
|
||||
|
||||
@ -3766,7 +3766,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
isAnonymous = true;
|
||||
}
|
||||
|
||||
FunctionNode.Kind functionKind = generator ? FunctionNode.Kind.GENERATOR : FunctionNode.Kind.NORMAL;
|
||||
final FunctionNode.Kind functionKind = generator ? FunctionNode.Kind.GENERATOR : FunctionNode.Kind.NORMAL;
|
||||
List<IdentNode> parameters = Collections.emptyList();
|
||||
final ParserContextFunctionNode functionNode = createParserContextFunctionNode(name, functionToken, functionKind, functionLine, parameters);
|
||||
lc.push(functionNode);
|
||||
@ -3870,7 +3870,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
}
|
||||
}
|
||||
|
||||
private static Block maybeWrapBodyInParameterBlock(Block functionBody, ParserContextBlockNode parameterBlock) {
|
||||
private static Block maybeWrapBodyInParameterBlock(final Block functionBody, final ParserContextBlockNode parameterBlock) {
|
||||
assert functionBody.isFunctionBody();
|
||||
if (!parameterBlock.getStatements().isEmpty()) {
|
||||
parameterBlock.appendStatement(new BlockStatement(functionBody));
|
||||
@ -4006,26 +4006,26 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
}
|
||||
|
||||
// default parameter
|
||||
Expression initializer = assignmentExpression(false);
|
||||
final Expression initializer = assignmentExpression(false);
|
||||
|
||||
ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
final ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
if (currentFunction != null) {
|
||||
if (env._parse_only) {
|
||||
// keep what is seen in source "as is" and save it as parameter expression
|
||||
BinaryNode assignment = new BinaryNode(Token.recast(paramToken, ASSIGN), ident, initializer);
|
||||
final BinaryNode assignment = new BinaryNode(Token.recast(paramToken, ASSIGN), ident, initializer);
|
||||
currentFunction.addParameterExpression(ident, assignment);
|
||||
} else {
|
||||
// desugar to: param = (param === undefined) ? initializer : param;
|
||||
// possible alternative: if (param === undefined) param = initializer;
|
||||
BinaryNode test = new BinaryNode(Token.recast(paramToken, EQ_STRICT), ident, newUndefinedLiteral(paramToken, finish));
|
||||
TernaryNode value = new TernaryNode(Token.recast(paramToken, TERNARY), test, new JoinPredecessorExpression(initializer), new JoinPredecessorExpression(ident));
|
||||
BinaryNode assignment = new BinaryNode(Token.recast(paramToken, ASSIGN), ident, value);
|
||||
final BinaryNode test = new BinaryNode(Token.recast(paramToken, EQ_STRICT), ident, newUndefinedLiteral(paramToken, finish));
|
||||
final TernaryNode value = new TernaryNode(Token.recast(paramToken, TERNARY), test, new JoinPredecessorExpression(initializer), new JoinPredecessorExpression(ident));
|
||||
final BinaryNode assignment = new BinaryNode(Token.recast(paramToken, ASSIGN), ident, value);
|
||||
lc.getFunctionBody(currentFunction).appendStatement(new ExpressionStatement(paramLine, assignment.getToken(), assignment.getFinish(), assignment));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
final ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
if (currentFunction != null) {
|
||||
currentFunction.addParameterBinding(ident);
|
||||
if (ident.isRestParameter() || ident.isDefaultParameter()) {
|
||||
@ -4044,22 +4044,22 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
ident = ident.setIsDefaultParameter();
|
||||
|
||||
// binding pattern with initializer. desugar to: (param === undefined) ? initializer : param
|
||||
Expression initializer = assignmentExpression(false);
|
||||
final Expression initializer = assignmentExpression(false);
|
||||
|
||||
if (env._parse_only) {
|
||||
// we don't want the synthetic identifier in parse only mode
|
||||
value = initializer;
|
||||
} else {
|
||||
// TODO initializer must not contain yield expression if yield=true (i.e. this is generator function's parameter list)
|
||||
BinaryNode test = new BinaryNode(Token.recast(paramToken, EQ_STRICT), ident, newUndefinedLiteral(paramToken, finish));
|
||||
final BinaryNode test = new BinaryNode(Token.recast(paramToken, EQ_STRICT), ident, newUndefinedLiteral(paramToken, finish));
|
||||
value = new TernaryNode(Token.recast(paramToken, TERNARY), test, new JoinPredecessorExpression(initializer), new JoinPredecessorExpression(ident));
|
||||
}
|
||||
}
|
||||
|
||||
ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
final ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
if (currentFunction != null) {
|
||||
// destructuring assignment
|
||||
BinaryNode assignment = new BinaryNode(Token.recast(paramToken, ASSIGN), pattern, value);
|
||||
final BinaryNode assignment = new BinaryNode(Token.recast(paramToken, ASSIGN), pattern, value);
|
||||
if (env._parse_only) {
|
||||
// in parse-only mode, represent source tree "as is"
|
||||
if (ident.isDefaultParameter()) {
|
||||
@ -4081,10 +4081,10 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
|
||||
private void verifyDestructuringParameterBindingPattern(final Expression pattern, final long paramToken, final int paramLine, final String contextString) {
|
||||
verifyDestructuringBindingPattern(pattern, new Consumer<IdentNode>() {
|
||||
public void accept(IdentNode identNode) {
|
||||
public void accept(final IdentNode identNode) {
|
||||
verifyIdent(identNode, contextString);
|
||||
|
||||
ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
final ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
if (currentFunction != null) {
|
||||
// declare function-scope variables for destructuring bindings
|
||||
if (!env._parse_only) {
|
||||
@ -4398,7 +4398,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
break;
|
||||
}
|
||||
|
||||
Expression expression = leftHandSideExpression();
|
||||
final Expression expression = leftHandSideExpression();
|
||||
|
||||
if (last != EOL) {
|
||||
switch (type) {
|
||||
@ -4549,7 +4549,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
private Expression expression(final boolean noIn) {
|
||||
Expression assignmentExpression = assignmentExpression(noIn);
|
||||
while (type == COMMARIGHT) {
|
||||
long commaToken = token;
|
||||
final long commaToken = token;
|
||||
next();
|
||||
|
||||
boolean rhsRestParameter = false;
|
||||
@ -4707,7 +4707,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
/**
|
||||
* Is type one of {@code = *= /= %= += -= <<= >>= >>>= &= ^= |=}?
|
||||
*/
|
||||
private static boolean isAssignmentOperator(TokenType type) {
|
||||
private static boolean isAssignmentOperator(final TokenType type) {
|
||||
switch (type) {
|
||||
case ASSIGN:
|
||||
case ASSIGN_ADD:
|
||||
@ -4729,7 +4729,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
/**
|
||||
* ConditionalExpression.
|
||||
*/
|
||||
private Expression conditionalExpression(boolean noIn) {
|
||||
private Expression conditionalExpression(final boolean noIn) {
|
||||
return expression(TERNARY.getPrecedence(), noIn);
|
||||
}
|
||||
|
||||
@ -4752,7 +4752,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
|
||||
lc.push(functionNode);
|
||||
try {
|
||||
ParserContextBlockNode parameterBlock = newBlock();
|
||||
final ParserContextBlockNode parameterBlock = newBlock();
|
||||
final List<IdentNode> parameters;
|
||||
try {
|
||||
parameters = convertArrowFunctionParameterList(paramListExpr, functionLine);
|
||||
@ -4829,12 +4829,12 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
return parameters;
|
||||
}
|
||||
|
||||
private IdentNode verifyArrowParameter(Expression param, int index, int paramLine) {
|
||||
private IdentNode verifyArrowParameter(final Expression param, final int index, final int paramLine) {
|
||||
final String contextString = "function parameter";
|
||||
if (param instanceof IdentNode) {
|
||||
IdentNode ident = (IdentNode)param;
|
||||
final IdentNode ident = (IdentNode)param;
|
||||
verifyStrictIdent(ident, contextString);
|
||||
ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
final ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
if (currentFunction != null) {
|
||||
currentFunction.addParameterBinding(ident);
|
||||
}
|
||||
@ -4842,21 +4842,21 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
}
|
||||
|
||||
if (param.isTokenType(ASSIGN)) {
|
||||
Expression lhs = ((BinaryNode) param).lhs();
|
||||
long paramToken = lhs.getToken();
|
||||
Expression initializer = ((BinaryNode) param).rhs();
|
||||
final Expression lhs = ((BinaryNode) param).lhs();
|
||||
final long paramToken = lhs.getToken();
|
||||
final Expression initializer = ((BinaryNode) param).rhs();
|
||||
if (lhs instanceof IdentNode) {
|
||||
// default parameter
|
||||
IdentNode ident = (IdentNode) lhs;
|
||||
final IdentNode ident = (IdentNode) lhs;
|
||||
|
||||
ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
final ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
if (currentFunction != null) {
|
||||
if (env._parse_only) {
|
||||
currentFunction.addParameterExpression(ident, param);
|
||||
} else {
|
||||
BinaryNode test = new BinaryNode(Token.recast(paramToken, EQ_STRICT), ident, newUndefinedLiteral(paramToken, finish));
|
||||
TernaryNode value = new TernaryNode(Token.recast(paramToken, TERNARY), test, new JoinPredecessorExpression(initializer), new JoinPredecessorExpression(ident));
|
||||
BinaryNode assignment = new BinaryNode(Token.recast(paramToken, ASSIGN), ident, value);
|
||||
final BinaryNode test = new BinaryNode(Token.recast(paramToken, EQ_STRICT), ident, newUndefinedLiteral(paramToken, finish));
|
||||
final TernaryNode value = new TernaryNode(Token.recast(paramToken, TERNARY), test, new JoinPredecessorExpression(initializer), new JoinPredecessorExpression(ident));
|
||||
final BinaryNode assignment = new BinaryNode(Token.recast(paramToken, ASSIGN), ident, value);
|
||||
lc.getFunctionBody(currentFunction).appendStatement(new ExpressionStatement(paramLine, assignment.getToken(), assignment.getFinish(), assignment));
|
||||
}
|
||||
|
||||
@ -4867,17 +4867,17 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
} else if (isDestructuringLhs(lhs)) {
|
||||
// binding pattern with initializer
|
||||
// Introduce synthetic temporary parameter to capture the object to be destructured.
|
||||
IdentNode ident = createIdentNode(paramToken, param.getFinish(), String.format("arguments[%d]", index)).setIsDestructuredParameter().setIsDefaultParameter();
|
||||
final IdentNode ident = createIdentNode(paramToken, param.getFinish(), String.format("arguments[%d]", index)).setIsDestructuredParameter().setIsDefaultParameter();
|
||||
verifyDestructuringParameterBindingPattern(param, paramToken, paramLine, contextString);
|
||||
|
||||
ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
final ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
if (currentFunction != null) {
|
||||
if (env._parse_only) {
|
||||
currentFunction.addParameterExpression(ident, param);
|
||||
} else {
|
||||
BinaryNode test = new BinaryNode(Token.recast(paramToken, EQ_STRICT), ident, newUndefinedLiteral(paramToken, finish));
|
||||
TernaryNode value = new TernaryNode(Token.recast(paramToken, TERNARY), test, new JoinPredecessorExpression(initializer), new JoinPredecessorExpression(ident));
|
||||
BinaryNode assignment = new BinaryNode(Token.recast(paramToken, ASSIGN), param, value);
|
||||
final BinaryNode test = new BinaryNode(Token.recast(paramToken, EQ_STRICT), ident, newUndefinedLiteral(paramToken, finish));
|
||||
final TernaryNode value = new TernaryNode(Token.recast(paramToken, TERNARY), test, new JoinPredecessorExpression(initializer), new JoinPredecessorExpression(ident));
|
||||
final BinaryNode assignment = new BinaryNode(Token.recast(paramToken, ASSIGN), param, value);
|
||||
lc.getFunctionBody(currentFunction).appendStatement(new ExpressionStatement(paramLine, assignment.getToken(), assignment.getFinish(), assignment));
|
||||
}
|
||||
}
|
||||
@ -4885,18 +4885,18 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
}
|
||||
} else if (isDestructuringLhs(param)) {
|
||||
// binding pattern
|
||||
long paramToken = param.getToken();
|
||||
final long paramToken = param.getToken();
|
||||
|
||||
// Introduce synthetic temporary parameter to capture the object to be destructured.
|
||||
IdentNode ident = createIdentNode(paramToken, param.getFinish(), String.format("arguments[%d]", index)).setIsDestructuredParameter();
|
||||
final IdentNode ident = createIdentNode(paramToken, param.getFinish(), String.format("arguments[%d]", index)).setIsDestructuredParameter();
|
||||
verifyDestructuringParameterBindingPattern(param, paramToken, paramLine, contextString);
|
||||
|
||||
ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
final ParserContextFunctionNode currentFunction = lc.getCurrentFunction();
|
||||
if (currentFunction != null) {
|
||||
if (env._parse_only) {
|
||||
currentFunction.addParameterExpression(ident, param);
|
||||
} else {
|
||||
BinaryNode assignment = new BinaryNode(Token.recast(paramToken, ASSIGN), param, ident);
|
||||
final BinaryNode assignment = new BinaryNode(Token.recast(paramToken, ASSIGN), param, ident);
|
||||
lc.getFunctionBody(currentFunction).appendStatement(new ExpressionStatement(paramLine, assignment.getToken(), assignment.getFinish(), assignment));
|
||||
}
|
||||
}
|
||||
@ -4913,7 +4913,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
return true;
|
||||
}
|
||||
for (int i = k - 1; i >= 0; i--) {
|
||||
TokenType t = T(i);
|
||||
final TokenType t = T(i);
|
||||
switch (t) {
|
||||
case RPAREN:
|
||||
case IDENT:
|
||||
@ -4941,7 +4941,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
// find IDENT, RPAREN, ARROW, in that order, skipping over EOL (where allowed) and COMMENT
|
||||
int i = 1;
|
||||
for (;;) {
|
||||
TokenType t = T(k + i++);
|
||||
final TokenType t = T(k + i++);
|
||||
if (t == IDENT) {
|
||||
break;
|
||||
} else if (t == EOL || t == COMMENT) {
|
||||
@ -4951,7 +4951,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
}
|
||||
}
|
||||
for (;;) {
|
||||
TokenType t = T(k + i++);
|
||||
final TokenType t = T(k + i++);
|
||||
if (t == RPAREN) {
|
||||
break;
|
||||
} else if (t == EOL || t == COMMENT) {
|
||||
@ -4961,7 +4961,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
}
|
||||
}
|
||||
for (;;) {
|
||||
TokenType t = T(k + i++);
|
||||
final TokenType t = T(k + i++);
|
||||
if (t == ARROW) {
|
||||
break;
|
||||
} else if (t == COMMENT) {
|
||||
@ -5008,7 +5008,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
}
|
||||
|
||||
if (env._parse_only) {
|
||||
List<Expression> exprs = new ArrayList<>();
|
||||
final List<Expression> exprs = new ArrayList<>();
|
||||
exprs.add(literal);
|
||||
TokenType lastLiteralType;
|
||||
do {
|
||||
@ -5096,12 +5096,12 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
* ModuleItemList
|
||||
*/
|
||||
private FunctionNode module(final String moduleName) {
|
||||
boolean oldStrictMode = isStrictMode;
|
||||
final boolean oldStrictMode = isStrictMode;
|
||||
try {
|
||||
isStrictMode = true; // Module code is always strict mode code. (ES6 10.2.1)
|
||||
|
||||
// Make a pseudo-token for the script holding its start and length.
|
||||
int functionStart = Math.min(Token.descPosition(Token.withDelimiter(token)), finish);
|
||||
final int functionStart = Math.min(Token.descPosition(Token.withDelimiter(token)), finish);
|
||||
final long functionToken = Token.toDesc(FUNCTION, functionStart, source.getLength() - functionStart);
|
||||
final int functionLine = line;
|
||||
|
||||
@ -5214,7 +5214,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
} else if (isBindingIdentifier()) {
|
||||
// ImportedDefaultBinding
|
||||
final IdentNode importedDefaultBinding = bindingIdentifier("ImportedBinding");
|
||||
Module.ImportEntry defaultImport = Module.ImportEntry.importSpecifier(importedDefaultBinding, startPosition, finish);
|
||||
final Module.ImportEntry defaultImport = Module.ImportEntry.importSpecifier(importedDefaultBinding, startPosition, finish);
|
||||
|
||||
if (type == COMMARIGHT) {
|
||||
next();
|
||||
@ -5279,7 +5279,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
private List<Module.ImportEntry> namedImports(final int startPosition) {
|
||||
assert type == LBRACE;
|
||||
next();
|
||||
List<Module.ImportEntry> importEntries = new ArrayList<>();
|
||||
final List<Module.ImportEntry> importEntries = new ArrayList<>();
|
||||
while (type != RBRACE) {
|
||||
final boolean bindingIdentifier = isBindingIdentifier();
|
||||
final long nameToken = token;
|
||||
@ -5354,11 +5354,11 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
if (type == IDENT && "from".equals(getValue())) {
|
||||
final IdentNode moduleRequest = fromClause();
|
||||
module.addModuleRequest(moduleRequest);
|
||||
for (Module.ExportEntry exportEntry : exportEntries) {
|
||||
for (final Module.ExportEntry exportEntry : exportEntries) {
|
||||
module.addIndirectExportEntry(exportEntry.withFrom(moduleRequest, finish));
|
||||
}
|
||||
} else {
|
||||
for (Module.ExportEntry exportEntry : exportEntries) {
|
||||
for (final Module.ExportEntry exportEntry : exportEntries) {
|
||||
module.addLocalExportEntry(exportEntry);
|
||||
}
|
||||
}
|
||||
@ -5445,7 +5445,7 @@ public class Parser extends AbstractParser implements Loggable {
|
||||
private List<Module.ExportEntry> exportClause(final int startPosition) {
|
||||
assert type == LBRACE;
|
||||
next();
|
||||
List<Module.ExportEntry> exports = new ArrayList<>();
|
||||
final List<Module.ExportEntry> exports = new ArrayList<>();
|
||||
while (type != RBRACE) {
|
||||
final IdentNode localName = getIdentifierName();
|
||||
if (type == IDENT && "as".equals(getValue())) {
|
||||
|
@ -169,7 +169,7 @@ class ParserContextFunctionNode extends ParserContextBaseNode {
|
||||
return parameters;
|
||||
}
|
||||
|
||||
void setParameters(List<IdentNode> parameters) {
|
||||
void setParameters(final List<IdentNode> parameters) {
|
||||
this.parameters = parameters;
|
||||
}
|
||||
|
||||
@ -182,7 +182,7 @@ class ParserContextFunctionNode extends ParserContextBaseNode {
|
||||
return parameterExpressions;
|
||||
}
|
||||
|
||||
void addParameterExpression(IdentNode ident, Expression node) {
|
||||
void addParameterExpression(final IdentNode ident, final Expression node) {
|
||||
if (parameterExpressions == null) {
|
||||
parameterExpressions = new HashMap<>();
|
||||
}
|
||||
|
@ -41,11 +41,11 @@ class ParserContextModuleNode extends ParserContextBaseNode {
|
||||
/** Module name. */
|
||||
private final String name;
|
||||
|
||||
private List<String> requestedModules = new ArrayList<>();
|
||||
private List<ImportEntry> importEntries = new ArrayList<>();
|
||||
private List<ExportEntry> localExportEntries = new ArrayList<>();
|
||||
private List<ExportEntry> indirectExportEntries = new ArrayList<>();
|
||||
private List<ExportEntry> starExportEntries = new ArrayList<>();
|
||||
private final List<String> requestedModules = new ArrayList<>();
|
||||
private final List<ImportEntry> importEntries = new ArrayList<>();
|
||||
private final List<ExportEntry> localExportEntries = new ArrayList<>();
|
||||
private final List<ExportEntry> indirectExportEntries = new ArrayList<>();
|
||||
private final List<ExportEntry> starExportEntries = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
|
2
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/AllocationStrategy.java
2
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/AllocationStrategy.java
@ -141,7 +141,7 @@ final public class AllocationStrategy implements Serializable {
|
||||
final private WeakReference<ScriptObject> prototype;
|
||||
final private WeakReference<PropertyMap> prototypeMap;
|
||||
|
||||
private PropertyMap allocatorMap;
|
||||
private final PropertyMap allocatorMap;
|
||||
|
||||
AllocatorMap(final ScriptObject prototype, final PropertyMap protoMap, final PropertyMap allocMap) {
|
||||
this.prototype = new WeakReference<>(prototype);
|
||||
|
42
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/CommandExecutor.java
42
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/CommandExecutor.java
@ -148,14 +148,14 @@ class CommandExecutor {
|
||||
boolean check(String token, final Iterator<String> iterator, final String cwd) {
|
||||
// Iterate through redirect prefixes to file a match.
|
||||
for (int i = 0; i < redirectPrefixes.length; i++) {
|
||||
String prefix = redirectPrefixes[i];
|
||||
final String prefix = redirectPrefixes[i];
|
||||
|
||||
// If a match is found.
|
||||
if (token.startsWith(prefix)) {
|
||||
// Indicate we have at least one redirect (efficiency.)
|
||||
hasRedirects = true;
|
||||
// Map prefix to RedirectType.
|
||||
RedirectType redirect = redirects[i];
|
||||
final RedirectType redirect = redirects[i];
|
||||
// Strip prefix from token
|
||||
token = token.substring(prefix.length());
|
||||
|
||||
@ -223,8 +223,8 @@ class CommandExecutor {
|
||||
// Only if there was redirects (saves new structure in ProcessBuilder.)
|
||||
if (hasRedirects) {
|
||||
// If output and error are the same file then merge.
|
||||
File outputFile = outputRedirect.file();
|
||||
File errorFile = errorRedirect.file();
|
||||
final File outputFile = outputRedirect.file();
|
||||
final File errorFile = errorRedirect.file();
|
||||
|
||||
if (outputFile != null && outputFile.equals(errorFile)) {
|
||||
mergeError = true;
|
||||
@ -274,26 +274,26 @@ class CommandExecutor {
|
||||
public void run() {
|
||||
try {
|
||||
// Buffer for copying.
|
||||
byte[] b = new byte[BUFFER_SIZE];
|
||||
final byte[] b = new byte[BUFFER_SIZE];
|
||||
// Read from the InputStream until EOF.
|
||||
int read;
|
||||
while (-1 < (read = input.read(b, 0, b.length))) {
|
||||
// Write available date to OutputStream.
|
||||
output.write(b, 0, read);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
} catch (final Exception e) {
|
||||
// Assume the worst.
|
||||
throw new RuntimeException("Broken pipe", e);
|
||||
} finally {
|
||||
// Make sure the streams are closed.
|
||||
try {
|
||||
input.close();
|
||||
} catch (IOException e) {
|
||||
} catch (final IOException e) {
|
||||
// Don't care.
|
||||
}
|
||||
try {
|
||||
output.close();
|
||||
} catch (IOException e) {
|
||||
} catch (final IOException e) {
|
||||
// Don't care.
|
||||
}
|
||||
}
|
||||
@ -363,7 +363,7 @@ class CommandExecutor {
|
||||
private long envVarLongValue(final String key) {
|
||||
try {
|
||||
return Long.parseLong(envVarValue(key, "0"));
|
||||
} catch (NumberFormatException ex) {
|
||||
} catch (final NumberFormatException ex) {
|
||||
return 0L;
|
||||
}
|
||||
}
|
||||
@ -478,7 +478,7 @@ class CommandExecutor {
|
||||
// iterate through all tokens.
|
||||
final Iterator<String> iterator = tokens.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
String token = iterator.next();
|
||||
final String token = iterator.next();
|
||||
|
||||
// Check if is a redirect.
|
||||
if (redirectInfo.check(token, iterator, cwd)) {
|
||||
@ -551,7 +551,7 @@ class CommandExecutor {
|
||||
* @param tokens tokens of the command
|
||||
* @param isPiped true if the output of this command should be piped to the next
|
||||
*/
|
||||
private void command(final List<String> tokens, boolean isPiped) {
|
||||
private void command(final List<String> tokens, final boolean isPiped) {
|
||||
// Test to see if we should echo the command to output.
|
||||
if (envVarBooleanValue("JJS_ECHO")) {
|
||||
System.out.println(String.join(" ", tokens));
|
||||
@ -584,7 +584,7 @@ class CommandExecutor {
|
||||
boolean inputIsPipe = firstProcessBuilder.redirectInput() == Redirect.PIPE;
|
||||
boolean outputIsPipe = lastProcessBuilder.redirectOutput() == Redirect.PIPE;
|
||||
boolean errorIsPipe = lastProcessBuilder.redirectError() == Redirect.PIPE;
|
||||
boolean inheritIO = envVarBooleanValue("JJS_INHERIT_IO");
|
||||
final boolean inheritIO = envVarBooleanValue("JJS_INHERIT_IO");
|
||||
|
||||
// If not redirected and inputStream is current processes' input.
|
||||
if (inputIsPipe && (inheritIO || inputStream == System.in)) {
|
||||
@ -609,10 +609,10 @@ class CommandExecutor {
|
||||
|
||||
// Start the processes.
|
||||
final List<Process> processes = new ArrayList<>();
|
||||
for (ProcessBuilder pb : processBuilders) {
|
||||
for (final ProcessBuilder pb : processBuilders) {
|
||||
try {
|
||||
processes.add(pb.start());
|
||||
} catch (IOException ex) {
|
||||
} catch (final IOException ex) {
|
||||
reportError("unknown.command", String.join(" ", pb.command()));
|
||||
return;
|
||||
}
|
||||
@ -701,7 +701,7 @@ class CommandExecutor {
|
||||
// Accumulate the output and error streams.
|
||||
outputString += byteOutputStream != null ? byteOutputStream.toString() : "";
|
||||
errorString += byteErrorStream != null ? byteErrorStream.toString() : "";
|
||||
} catch (InterruptedException ex) {
|
||||
} catch (final InterruptedException ex) {
|
||||
// Kill any living processes.
|
||||
processes.stream().forEach(p -> {
|
||||
if (p.isAlive()) {
|
||||
@ -829,7 +829,7 @@ class CommandExecutor {
|
||||
final Iterator<String> iterator = tokens.iterator();
|
||||
while (iterator.hasNext() && exitCode == EXIT_SUCCESS) {
|
||||
// Next word token.
|
||||
String token = iterator.next();
|
||||
final String token = iterator.next();
|
||||
|
||||
if (token == null) {
|
||||
continue;
|
||||
@ -876,23 +876,23 @@ class CommandExecutor {
|
||||
return exitCode;
|
||||
}
|
||||
|
||||
void setEnvironment(Map<String, String> environment) {
|
||||
void setEnvironment(final Map<String, String> environment) {
|
||||
this.environment = environment;
|
||||
}
|
||||
|
||||
void setInputStream(InputStream inputStream) {
|
||||
void setInputStream(final InputStream inputStream) {
|
||||
this.inputStream = inputStream;
|
||||
}
|
||||
|
||||
void setInputString(String inputString) {
|
||||
void setInputString(final String inputString) {
|
||||
this.inputString = inputString;
|
||||
}
|
||||
|
||||
void setOutputStream(OutputStream outputStream) {
|
||||
void setOutputStream(final OutputStream outputStream) {
|
||||
this.outputStream = outputStream;
|
||||
}
|
||||
|
||||
void setErrorStream(OutputStream errorStream) {
|
||||
void setErrorStream(final OutputStream errorStream) {
|
||||
this.errorStream = errorStream;
|
||||
}
|
||||
}
|
||||
|
@ -1339,7 +1339,7 @@ public final class Context {
|
||||
|
||||
final ModuleFinder finder = new ModuleFinder() {
|
||||
@Override
|
||||
public Optional<ModuleReference> find(String name) {
|
||||
public Optional<ModuleReference> find(final String name) {
|
||||
if (name.equals(mn)) {
|
||||
return Optional.of(mref);
|
||||
} else {
|
||||
@ -1387,7 +1387,7 @@ public final class Context {
|
||||
ClassLoader loader = null;
|
||||
try {
|
||||
loader = clazz.getClassLoader();
|
||||
} catch (SecurityException ignored) {
|
||||
} catch (final SecurityException ignored) {
|
||||
// This could fail because of anonymous classes being used.
|
||||
// Accessing loader of anonymous class fails (for extension
|
||||
// loader class too?). In any case, for us fetching Context
|
||||
|
@ -87,7 +87,7 @@ final class FinalScriptFunctionData extends ScriptFunctionData {
|
||||
|
||||
@Override
|
||||
String getDocumentation() {
|
||||
String doc = docKey != null?
|
||||
final String doc = docKey != null?
|
||||
FunctionDocumentation.getDoc(docKey) : null;
|
||||
return doc != null? doc : super.getDocumentation();
|
||||
}
|
||||
@ -109,7 +109,7 @@ final class FinalScriptFunctionData extends ScriptFunctionData {
|
||||
}
|
||||
|
||||
@Override
|
||||
CompiledFunction getBest(final MethodType callSiteType, final ScriptObject runtimeScope, final Collection<CompiledFunction> forbidden, boolean linkLogicOkay) {
|
||||
CompiledFunction getBest(final MethodType callSiteType, final ScriptObject runtimeScope, final Collection<CompiledFunction> forbidden, final boolean linkLogicOkay) {
|
||||
assert isValidCallSite(callSiteType) : callSiteType;
|
||||
|
||||
CompiledFunction best = null;
|
||||
|
@ -155,7 +155,7 @@ public final class JSONListAdapter extends ListAdapter implements JSObject {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getDefaultValue(Class<?> hint) throws UnsupportedOperationException {
|
||||
public Object getDefaultValue(final Class<?> hint) throws UnsupportedOperationException {
|
||||
return obj.getDefaultValue(hint);
|
||||
}
|
||||
}
|
||||
|
@ -221,7 +221,7 @@ abstract class NashornLoader extends SecureClassLoader {
|
||||
final String res = "/"+ MODULE_MANIPULATOR_NAME.replace('.', '/') + ".class";
|
||||
try (InputStream in = NashornLoader.class.getResourceAsStream(res)) {
|
||||
return in.readAllBytes();
|
||||
} catch (IOException exp) {
|
||||
} catch (final IOException exp) {
|
||||
throw new UncheckedIOException(exp);
|
||||
}
|
||||
};
|
||||
|
@ -95,7 +95,7 @@ final class ScriptLoader extends NashornLoader {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class<?> findClass(String name) throws ClassNotFoundException {
|
||||
protected Class<?> findClass(final String name) throws ClassNotFoundException {
|
||||
final ClassLoader appLoader = context.getAppLoader();
|
||||
|
||||
/*
|
||||
|
6
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptingFunctions.java
6
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/ScriptingFunctions.java
@ -149,7 +149,7 @@ public final class ScriptingFunctions {
|
||||
String inputString = null;
|
||||
|
||||
if (arg0 instanceof NativeArray) {
|
||||
String[] array = (String[])JSType.toJavaArray(arg0, String.class);
|
||||
final String[] array = (String[])JSType.toJavaArray(arg0, String.class);
|
||||
tokens = new ArrayList<>();
|
||||
tokens.addAll(Arrays.asList(array));
|
||||
} else {
|
||||
@ -206,7 +206,7 @@ public final class ScriptingFunctions {
|
||||
|
||||
final String outString = executor.getOutputString();
|
||||
final String errString = executor.getErrorString();
|
||||
int exitCode = executor.getExitCode();
|
||||
final int exitCode = executor.getExitCode();
|
||||
|
||||
// Set globals for secondary results.
|
||||
global.set(OUT_NAME, outString, 0);
|
||||
@ -222,7 +222,7 @@ public final class ScriptingFunctions {
|
||||
|
||||
private static Function<String, String> readLineHelper;
|
||||
|
||||
public static void setReadLineHelper(Function<String, String> func) {
|
||||
public static void setReadLineHelper(final Function<String, String> func) {
|
||||
readLineHelper = Objects.requireNonNull(func);
|
||||
}
|
||||
|
||||
|
@ -183,7 +183,7 @@ public final class WithObject extends Scope {
|
||||
* @return FindPropertyData or null if not found.
|
||||
*/
|
||||
@Override
|
||||
protected FindProperty findProperty(final Object key, final boolean deep, boolean isScope, final ScriptObject start) {
|
||||
protected FindProperty findProperty(final Object key, final boolean deep, final boolean isScope, final ScriptObject start) {
|
||||
// We call findProperty on 'expression' with 'expression' itself as start parameter.
|
||||
// This way in ScriptObject.setObject we can tell the property is from a 'with' expression
|
||||
// (as opposed from another non-scope object in the proto chain such as Object.prototype).
|
||||
|
2
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/doubleconv/Bignum.java
2
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/doubleconv/Bignum.java
@ -76,7 +76,7 @@ class Bignum {
|
||||
// grow. There are no checks if the stack-allocated space is sufficient.
|
||||
static final int kBigitCapacity = kMaxSignificantBits / kBigitSize;
|
||||
|
||||
private int[] bigits_ = new int[kBigitCapacity];
|
||||
private final int[] bigits_ = new int[kBigitCapacity];
|
||||
// A vector backed by bigits_buffer_. This way accesses to the array are
|
||||
// checked for out-of-bounds errors.
|
||||
// Vector<int> bigits_;
|
||||
|
@ -214,7 +214,7 @@ public class LinkerCallSite extends ChainedCallSite {
|
||||
// new target uses a more precise 'self' type than Object.class. We need to
|
||||
// convert the filter type. Note that the profileEntry method returns "self"
|
||||
// argument "as is" and so the cast introduced will succeed for any type.
|
||||
MethodType selfFilterType = MethodType.methodType(newSelfType, newSelfType);
|
||||
final MethodType selfFilterType = MethodType.methodType(newSelfType, newSelfType);
|
||||
selfFilter = selfFilter.asType(selfFilterType);
|
||||
}
|
||||
|
||||
|
32
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/NameCodec.java
32
nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/NameCodec.java
@ -283,7 +283,7 @@ public final class NameCodec {
|
||||
* @return the mangled form of the symbolic name.
|
||||
*/
|
||||
public static String encode(final String name) {
|
||||
String bn = mangle(name);
|
||||
final String bn = mangle(name);
|
||||
assert((Object)bn == name || looksMangled(bn)) : bn;
|
||||
assert(name.equals(decode(bn))) : name;
|
||||
return bn;
|
||||
@ -303,11 +303,11 @@ public final class NameCodec {
|
||||
return sn;
|
||||
}
|
||||
|
||||
private static boolean looksMangled(String s) {
|
||||
private static boolean looksMangled(final String s) {
|
||||
return s.charAt(0) == ESCAPE_C;
|
||||
}
|
||||
|
||||
private static String mangle(String s) {
|
||||
private static String mangle(final String s) {
|
||||
if (s.length() == 0)
|
||||
return NULL_ESCAPE;
|
||||
|
||||
@ -315,12 +315,12 @@ public final class NameCodec {
|
||||
StringBuilder sb = null;
|
||||
|
||||
for (int i = 0, slen = s.length(); i < slen; i++) {
|
||||
char c = s.charAt(i);
|
||||
final char c = s.charAt(i);
|
||||
|
||||
boolean needEscape = false;
|
||||
if (c == ESCAPE_C) {
|
||||
if (i+1 < slen) {
|
||||
char c1 = s.charAt(i+1);
|
||||
final char c1 = s.charAt(i+1);
|
||||
if ((i == 0 && c1 == NULL_ESCAPE_C)
|
||||
|| c1 != originalOfReplacement(c1)) {
|
||||
// an accidental escape
|
||||
@ -356,7 +356,7 @@ public final class NameCodec {
|
||||
return s;
|
||||
}
|
||||
|
||||
private static String demangle(String s) {
|
||||
private static String demangle(final String s) {
|
||||
// build this lazily, when we first meet an escape:
|
||||
StringBuilder sb = null;
|
||||
|
||||
@ -369,8 +369,8 @@ public final class NameCodec {
|
||||
|
||||
if (c == ESCAPE_C && i+1 < slen) {
|
||||
// might be an escape sequence
|
||||
char rc = s.charAt(i+1);
|
||||
char oc = originalOfReplacement(rc);
|
||||
final char rc = s.charAt(i+1);
|
||||
final char oc = originalOfReplacement(rc);
|
||||
if (oc != rc) {
|
||||
// build sb if this is the first escape
|
||||
if (sb == null) {
|
||||
@ -398,34 +398,34 @@ public final class NameCodec {
|
||||
|
||||
private static final long[] SPECIAL_BITMAP = new long[2]; // 128 bits
|
||||
static {
|
||||
String SPECIAL = DANGEROUS_CHARS + REPLACEMENT_CHARS;
|
||||
for (char c : SPECIAL.toCharArray()) {
|
||||
final String SPECIAL = DANGEROUS_CHARS + REPLACEMENT_CHARS;
|
||||
for (final char c : SPECIAL.toCharArray()) {
|
||||
SPECIAL_BITMAP[c >>> 6] |= 1L << c;
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isSpecial(char c) {
|
||||
private static boolean isSpecial(final char c) {
|
||||
if ((c >>> 6) < SPECIAL_BITMAP.length)
|
||||
return ((SPECIAL_BITMAP[c >>> 6] >> c) & 1) != 0;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
private static char replacementOf(char c) {
|
||||
private static char replacementOf(final char c) {
|
||||
if (!isSpecial(c)) return c;
|
||||
int i = DANGEROUS_CHARS.indexOf(c);
|
||||
final int i = DANGEROUS_CHARS.indexOf(c);
|
||||
if (i < 0) return c;
|
||||
return REPLACEMENT_CHARS.charAt(i);
|
||||
}
|
||||
|
||||
private static char originalOfReplacement(char c) {
|
||||
private static char originalOfReplacement(final char c) {
|
||||
if (!isSpecial(c)) return c;
|
||||
int i = REPLACEMENT_CHARS.indexOf(c);
|
||||
final int i = REPLACEMENT_CHARS.indexOf(c);
|
||||
if (i < 0) return c;
|
||||
return DANGEROUS_CHARS.charAt(i);
|
||||
}
|
||||
|
||||
private static boolean isDangerous(char c) {
|
||||
private static boolean isDangerous(final char c) {
|
||||
if (!isSpecial(c)) return false;
|
||||
return (DANGEROUS_CHARS.indexOf(c) >= DANGEROUS_CHAR_FIRST_INDEX);
|
||||
}
|
||||
|
@ -292,7 +292,7 @@ public class Shell implements PartialParser {
|
||||
String l = "";
|
||||
try (final BufferedReader r = Files.newBufferedReader(p)) {
|
||||
l = r.readLine();
|
||||
} catch (IOException ioe) {
|
||||
} catch (final IOException ioe) {
|
||||
// ignore
|
||||
}
|
||||
if (l.startsWith("#!")) {
|
||||
|
@ -59,7 +59,7 @@ public class LookupTest {
|
||||
private static void privateStaticFunc() {}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private int myIntField = 0;
|
||||
private final int myIntField = 0;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@DataProvider
|
||||
@ -72,26 +72,26 @@ public class LookupTest {
|
||||
|
||||
@Test(dataProvider = "flags")
|
||||
public void unreflectTest(final boolean publicLookup) throws NoSuchMethodException {
|
||||
MethodHandle mh = Lookup.unreflect(getLookup(publicLookup), LookupTest.class.getMethod("unreflectTest", Boolean.TYPE));
|
||||
final MethodHandle mh = Lookup.unreflect(getLookup(publicLookup), LookupTest.class.getMethod("unreflectTest", Boolean.TYPE));
|
||||
Assert.assertNotNull(mh);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void unreflectTest2() throws NoSuchMethodException {
|
||||
MethodHandle mh = Lookup.PUBLIC.unreflect(LookupTest.class.getMethod("unreflectTest", Boolean.TYPE));
|
||||
final MethodHandle mh = Lookup.PUBLIC.unreflect(LookupTest.class.getMethod("unreflectTest", Boolean.TYPE));
|
||||
Assert.assertNotNull(mh);
|
||||
}
|
||||
|
||||
@Test(dataProvider = "flags")
|
||||
public void unreflectNegativeTest(final boolean publicLookup) throws NoSuchMethodException {
|
||||
try {
|
||||
MethodHandle mh = Lookup.unreflect(getLookup(publicLookup),
|
||||
final MethodHandle mh = Lookup.unreflect(getLookup(publicLookup),
|
||||
LookupTest.class.getDeclaredMethod("privateFunc"));
|
||||
if (publicLookup) {
|
||||
throw new RuntimeException("should have thrown Error");
|
||||
}
|
||||
Assert.assertNotNull(mh);
|
||||
} catch (Error err) {
|
||||
} catch (final Error err) {
|
||||
Assert.assertTrue(publicLookup);
|
||||
Assert.assertTrue(err instanceof NoSuchMethodError || err instanceof IllegalAccessError);
|
||||
}
|
||||
@ -102,33 +102,33 @@ public class LookupTest {
|
||||
try {
|
||||
Lookup.PUBLIC.unreflect(LookupTest.class.getDeclaredMethod("privateFunc"));
|
||||
throw new RuntimeException("should have thrown Error");
|
||||
} catch (Error err) {
|
||||
} catch (final Error err) {
|
||||
Assert.assertTrue(err instanceof NoSuchMethodError || err instanceof IllegalAccessError);
|
||||
}
|
||||
}
|
||||
|
||||
@Test(dataProvider = "flags")
|
||||
public void unreflectConstructorTest(final boolean publicLookup) throws NoSuchMethodException {
|
||||
MethodHandle mh = Lookup.unreflectConstructor(getLookup(publicLookup), LookupTest.class.getConstructor());
|
||||
final MethodHandle mh = Lookup.unreflectConstructor(getLookup(publicLookup), LookupTest.class.getConstructor());
|
||||
Assert.assertNotNull(mh);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void unreflectConstructorTest2() throws NoSuchMethodException {
|
||||
MethodHandle mh = Lookup.PUBLIC.unreflectConstructor(LookupTest.class.getConstructor());
|
||||
final MethodHandle mh = Lookup.PUBLIC.unreflectConstructor(LookupTest.class.getConstructor());
|
||||
Assert.assertNotNull(mh);
|
||||
}
|
||||
|
||||
@Test(dataProvider = "flags")
|
||||
public void unreflectConstructorNegativeTest(final boolean publicLookup) throws NoSuchMethodException {
|
||||
try {
|
||||
MethodHandle mh = Lookup.unreflectConstructor(getLookup(publicLookup),
|
||||
final MethodHandle mh = Lookup.unreflectConstructor(getLookup(publicLookup),
|
||||
LookupTest.class.getDeclaredConstructor(Integer.TYPE));
|
||||
if (publicLookup) {
|
||||
throw new RuntimeException("should have thrown Error");
|
||||
}
|
||||
Assert.assertNotNull(mh);
|
||||
} catch (Error err) {
|
||||
} catch (final Error err) {
|
||||
Assert.assertTrue(publicLookup);
|
||||
Assert.assertTrue(err instanceof NoSuchMethodError || err instanceof IllegalAccessError);
|
||||
}
|
||||
@ -140,7 +140,7 @@ public class LookupTest {
|
||||
Lookup.PUBLIC.unreflectConstructor(
|
||||
LookupTest.class.getDeclaredConstructor(Integer.TYPE));
|
||||
throw new RuntimeException("should have thrown Error");
|
||||
} catch (Error err) {
|
||||
} catch (final Error err) {
|
||||
Assert.assertTrue(err instanceof NoSuchMethodError || err instanceof IllegalAccessError);
|
||||
}
|
||||
}
|
||||
@ -148,13 +148,13 @@ public class LookupTest {
|
||||
@Test(dataProvider = "flags")
|
||||
public void findOwnStaticTest(final boolean publicLookup) {
|
||||
try {
|
||||
MethodHandle mh = Lookup.findOwnStatic(getLookup(publicLookup), "getLookup",
|
||||
final MethodHandle mh = Lookup.findOwnStatic(getLookup(publicLookup), "getLookup",
|
||||
MethodHandles.Lookup.class, Boolean.TYPE);
|
||||
if (publicLookup) {
|
||||
throw new RuntimeException("should have thrown Error");
|
||||
}
|
||||
Assert.assertNotNull(mh);
|
||||
} catch (Error err) {
|
||||
} catch (final Error err) {
|
||||
Assert.assertTrue(publicLookup);
|
||||
Assert.assertTrue(err instanceof NoSuchMethodError || err instanceof IllegalAccessError);
|
||||
}
|
||||
@ -166,7 +166,7 @@ public class LookupTest {
|
||||
Lookup.PUBLIC.findStatic(LookupTest.class, "getLookup",
|
||||
MethodType.methodType(MethodHandles.Lookup.class, Boolean.TYPE));
|
||||
throw new RuntimeException("should have thrown Error");
|
||||
} catch (Error err) {
|
||||
} catch (final Error err) {
|
||||
Assert.assertTrue(err instanceof NoSuchMethodError || err instanceof IllegalAccessError);
|
||||
}
|
||||
}
|
||||
@ -174,12 +174,12 @@ public class LookupTest {
|
||||
@Test(dataProvider = "flags")
|
||||
public void findOwnSepcialTest(final boolean publicLookup) {
|
||||
try {
|
||||
MethodHandle mh = Lookup.findOwnSpecial(getLookup(publicLookup), "privateFunc", Void.TYPE);
|
||||
final MethodHandle mh = Lookup.findOwnSpecial(getLookup(publicLookup), "privateFunc", Void.TYPE);
|
||||
if (publicLookup) {
|
||||
throw new RuntimeException("should have thrown Error");
|
||||
}
|
||||
Assert.assertNotNull(mh);
|
||||
} catch (Error err) {
|
||||
} catch (final Error err) {
|
||||
Assert.assertTrue(publicLookup);
|
||||
Assert.assertTrue(err instanceof NoSuchMethodError || err instanceof IllegalAccessError);
|
||||
}
|
||||
@ -190,7 +190,7 @@ public class LookupTest {
|
||||
try {
|
||||
Lookup.PUBLIC.findOwnSpecial("privateFunc", Void.TYPE);
|
||||
throw new RuntimeException("should have thrown Error");
|
||||
} catch (Error err) {
|
||||
} catch (final Error err) {
|
||||
Assert.assertTrue(err instanceof NoSuchMethodError || err instanceof IllegalAccessError);
|
||||
}
|
||||
}
|
||||
@ -198,12 +198,12 @@ public class LookupTest {
|
||||
@Test(dataProvider = "flags")
|
||||
public void findGetterTest(final boolean publicLookup) {
|
||||
try {
|
||||
MethodHandle mh = new Lookup(getLookup(publicLookup)).findGetter(LookupTest.class, "myIntField", Integer.TYPE);
|
||||
final MethodHandle mh = new Lookup(getLookup(publicLookup)).findGetter(LookupTest.class, "myIntField", Integer.TYPE);
|
||||
if (publicLookup) {
|
||||
throw new RuntimeException("should have thrown Error");
|
||||
}
|
||||
Assert.assertNotNull(mh);
|
||||
} catch (Error err) {
|
||||
} catch (final Error err) {
|
||||
Assert.assertTrue(publicLookup);
|
||||
Assert.assertTrue(err instanceof NoSuchMethodError || err instanceof IllegalAccessError);
|
||||
}
|
||||
@ -214,7 +214,7 @@ public class LookupTest {
|
||||
try {
|
||||
Lookup.PUBLIC.findGetter(LookupTest.class, "myIntField", Integer.TYPE);
|
||||
throw new RuntimeException("should have thrown Error");
|
||||
} catch (Error err) {
|
||||
} catch (final Error err) {
|
||||
Assert.assertTrue(err instanceof NoSuchMethodError || err instanceof IllegalAccessError);
|
||||
}
|
||||
}
|
||||
@ -222,13 +222,13 @@ public class LookupTest {
|
||||
@Test(dataProvider = "flags")
|
||||
public void findVirtualTest(final boolean publicLookup) {
|
||||
try {
|
||||
MethodHandle mh = new Lookup(getLookup(publicLookup)).findVirtual(LookupTest.class, "protectedFunc",
|
||||
final MethodHandle mh = new Lookup(getLookup(publicLookup)).findVirtual(LookupTest.class, "protectedFunc",
|
||||
MethodType.methodType(Void.TYPE));
|
||||
if (publicLookup) {
|
||||
throw new RuntimeException("should have thrown Error");
|
||||
}
|
||||
Assert.assertNotNull(mh);
|
||||
} catch (Error err) {
|
||||
} catch (final Error err) {
|
||||
Assert.assertTrue(publicLookup);
|
||||
Assert.assertTrue(err instanceof NoSuchMethodError || err instanceof IllegalAccessError);
|
||||
}
|
||||
@ -240,7 +240,7 @@ public class LookupTest {
|
||||
Lookup.PUBLIC.findVirtual(LookupTest.class, "protectedFunc",
|
||||
MethodType.methodType(Void.TYPE));
|
||||
throw new RuntimeException("should have thrown Error");
|
||||
} catch (Error err) {
|
||||
} catch (final Error err) {
|
||||
Assert.assertTrue(err instanceof NoSuchMethodError || err instanceof IllegalAccessError);
|
||||
}
|
||||
}
|
||||
@ -248,13 +248,13 @@ public class LookupTest {
|
||||
@Test(dataProvider = "flags")
|
||||
public void findStaticTest(final boolean publicLookup) {
|
||||
try {
|
||||
MethodHandle mh = new Lookup(getLookup(publicLookup)).findStatic(LookupTest.class, "privateStaticFunc",
|
||||
final MethodHandle mh = new Lookup(getLookup(publicLookup)).findStatic(LookupTest.class, "privateStaticFunc",
|
||||
MethodType.methodType(Void.TYPE));
|
||||
if (publicLookup) {
|
||||
throw new RuntimeException("should have thrown Error");
|
||||
}
|
||||
Assert.assertNotNull(mh);
|
||||
} catch (Error err) {
|
||||
} catch (final Error err) {
|
||||
Assert.assertTrue(publicLookup);
|
||||
Assert.assertTrue(err instanceof NoSuchMethodError || err instanceof IllegalAccessError);
|
||||
}
|
||||
@ -266,7 +266,7 @@ public class LookupTest {
|
||||
Lookup.PUBLIC.findStatic(LookupTest.class, "privateStaticFunc",
|
||||
MethodType.methodType(Void.TYPE));
|
||||
throw new RuntimeException("should have thrown Error");
|
||||
} catch (Error err) {
|
||||
} catch (final Error err) {
|
||||
Assert.assertTrue(err instanceof NoSuchMethodError || err instanceof IllegalAccessError);
|
||||
}
|
||||
}
|
||||
|
@ -35,15 +35,15 @@ import javax.script.ScriptEngineManager;
|
||||
import jdk.dynalink.CallSiteDescriptor;
|
||||
import jdk.dynalink.DynamicLinker;
|
||||
import jdk.dynalink.DynamicLinkerFactory;
|
||||
import jdk.dynalink.NoSuchDynamicMethodException;
|
||||
import jdk.dynalink.NamedOperation;
|
||||
import jdk.dynalink.NoSuchDynamicMethodException;
|
||||
import jdk.dynalink.Operation;
|
||||
import jdk.dynalink.StandardOperation;
|
||||
import jdk.dynalink.linker.GuardedInvocation;
|
||||
import jdk.dynalink.linker.GuardingDynamicLinker;
|
||||
import jdk.dynalink.linker.LinkRequest;
|
||||
import jdk.dynalink.linker.LinkerServices;
|
||||
import jdk.dynalink.support.SimpleRelinkableCallSite;
|
||||
import jdk.dynalink.linker.GuardedInvocation;
|
||||
import jdk.nashorn.api.scripting.AbstractJSObject;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
@ -80,7 +80,7 @@ public class DynamicLinkerFactoryTest {
|
||||
final Operation myOperation = new Operation() {
|
||||
};
|
||||
final boolean[] reachedFallback = { false };
|
||||
factory.setFallbackLinkers((GuardingDynamicLinker) (LinkRequest linkRequest, LinkerServices linkerServices) -> {
|
||||
factory.setFallbackLinkers((GuardingDynamicLinker) (final LinkRequest linkRequest, final LinkerServices linkerServices) -> {
|
||||
Assert.assertEquals(linkRequest.getCallSiteDescriptor().getOperation(), myOperation);
|
||||
reachedFallback[0] = true;
|
||||
return null;
|
||||
@ -95,10 +95,10 @@ public class DynamicLinkerFactoryTest {
|
||||
Assert.assertFalse(reachedFallback[0]);
|
||||
try {
|
||||
cs.getTarget().invoke();
|
||||
} catch (NoSuchDynamicMethodException nsdm) {
|
||||
} catch (final NoSuchDynamicMethodException nsdm) {
|
||||
// we do expect NoSuchDynamicMethod!
|
||||
// because our dummy fallback linker returns null!
|
||||
} catch (Throwable th) {
|
||||
} catch (final Throwable th) {
|
||||
throw new RuntimeException("should not reach here with: " + th);
|
||||
}
|
||||
|
||||
@ -112,7 +112,7 @@ public class DynamicLinkerFactoryTest {
|
||||
final Operation myOperation = new Operation() {
|
||||
};
|
||||
final boolean[] reachedProrityLinker = { false };
|
||||
factory.setPrioritizedLinker((GuardingDynamicLinker) (LinkRequest linkRequest, LinkerServices linkerServices) -> {
|
||||
factory.setPrioritizedLinker((GuardingDynamicLinker) (final LinkRequest linkRequest, final LinkerServices linkerServices) -> {
|
||||
Assert.assertEquals(linkRequest.getCallSiteDescriptor().getOperation(), myOperation);
|
||||
reachedProrityLinker[0] = true;
|
||||
return null;
|
||||
@ -127,10 +127,10 @@ public class DynamicLinkerFactoryTest {
|
||||
Assert.assertFalse(reachedProrityLinker[0]);
|
||||
try {
|
||||
cs.getTarget().invoke();
|
||||
} catch (NoSuchDynamicMethodException nsdm) {
|
||||
} catch (final NoSuchDynamicMethodException nsdm) {
|
||||
// we do expect NoSuchDynamicMethod!
|
||||
// because our dummy priority linker returns null!
|
||||
} catch (Throwable th) {
|
||||
} catch (final Throwable th) {
|
||||
throw new RuntimeException("should not reach here with: " + th);
|
||||
}
|
||||
|
||||
@ -144,12 +144,12 @@ public class DynamicLinkerFactoryTest {
|
||||
final Operation myOperation = new Operation() {
|
||||
};
|
||||
final int[] linkerReachCounter = { 0 };
|
||||
factory.setPrioritizedLinker((GuardingDynamicLinker) (LinkRequest linkRequest, LinkerServices linkerServices) -> {
|
||||
factory.setPrioritizedLinker((GuardingDynamicLinker) (final LinkRequest linkRequest, final LinkerServices linkerServices) -> {
|
||||
Assert.assertEquals(linkRequest.getCallSiteDescriptor().getOperation(), myOperation);
|
||||
linkerReachCounter[0]++;
|
||||
return null;
|
||||
});
|
||||
factory.setFallbackLinkers((GuardingDynamicLinker) (LinkRequest linkRequest, LinkerServices linkerServices) -> {
|
||||
factory.setFallbackLinkers((GuardingDynamicLinker) (final LinkRequest linkRequest, final LinkerServices linkerServices) -> {
|
||||
Assert.assertEquals(linkRequest.getCallSiteDescriptor().getOperation(), myOperation);
|
||||
Assert.assertEquals(linkerReachCounter[0], 1);
|
||||
linkerReachCounter[0]++;
|
||||
@ -166,9 +166,9 @@ public class DynamicLinkerFactoryTest {
|
||||
|
||||
try {
|
||||
cs.getTarget().invoke();
|
||||
} catch (NoSuchDynamicMethodException nsdm) {
|
||||
} catch (final NoSuchDynamicMethodException nsdm) {
|
||||
// we do expect NoSuchDynamicMethod!
|
||||
} catch (Throwable th) {
|
||||
} catch (final Throwable th) {
|
||||
throw new RuntimeException("should not reach here with: " + th);
|
||||
}
|
||||
|
||||
@ -180,7 +180,7 @@ public class DynamicLinkerFactoryTest {
|
||||
final DynamicLinkerFactory factory = newDynamicLinkerFactory(true);
|
||||
final boolean[] reachedPrelinkTransformer = { false };
|
||||
|
||||
factory.setPrelinkTransformer((GuardedInvocation inv, LinkRequest linkRequest, LinkerServices linkerServices) -> {
|
||||
factory.setPrelinkTransformer((final GuardedInvocation inv, final LinkRequest linkRequest, final LinkerServices linkerServices) -> {
|
||||
reachedPrelinkTransformer[0] = true;
|
||||
// just identity transformer!
|
||||
return inv;
|
||||
@ -200,7 +200,7 @@ public class DynamicLinkerFactoryTest {
|
||||
final DynamicLinkerFactory factory = newDynamicLinkerFactory(true);
|
||||
final boolean[] reachedInternalObjectsFilter = { false };
|
||||
|
||||
factory.setInternalObjectsFilter((MethodHandle mh) -> {
|
||||
factory.setInternalObjectsFilter((final MethodHandle mh) -> {
|
||||
reachedInternalObjectsFilter[0] = true;
|
||||
return mh;
|
||||
});
|
||||
@ -249,10 +249,10 @@ public class DynamicLinkerFactoryTest {
|
||||
|
||||
try {
|
||||
cs.getTarget().invoke(new Object());
|
||||
} catch (ReachedAutoLoadedDynamicLinkerException e) {
|
||||
} catch (final ReachedAutoLoadedDynamicLinkerException e) {
|
||||
// TrustedGuardingDynamicLinkerExporter threw exception on TestLinkerOperation as expected!
|
||||
reachedAutoLinker = true;
|
||||
} catch (Throwable th) {
|
||||
} catch (final Throwable th) {
|
||||
throw new RuntimeException(th);
|
||||
}
|
||||
|
||||
@ -270,9 +270,9 @@ public class DynamicLinkerFactoryTest {
|
||||
MethodHandles.publicLookup(), op, mt)));
|
||||
final boolean[] reachedGetMember = new boolean[1];
|
||||
// check that the nashorn exported linker can be used for user defined JSObject
|
||||
Object obj = new AbstractJSObject() {
|
||||
final Object obj = new AbstractJSObject() {
|
||||
@Override
|
||||
public Object getMember(String name) {
|
||||
public Object getMember(final String name) {
|
||||
reachedGetMember[0] = true;
|
||||
return name.equals("foo")? "bar" : "<unknown>";
|
||||
}
|
||||
@ -281,7 +281,7 @@ public class DynamicLinkerFactoryTest {
|
||||
Object value = null;
|
||||
try {
|
||||
value = cs.getTarget().invoke(obj);
|
||||
} catch (Throwable th) {
|
||||
} catch (final Throwable th) {
|
||||
throw new RuntimeException(th);
|
||||
}
|
||||
|
||||
@ -304,7 +304,7 @@ public class DynamicLinkerFactoryTest {
|
||||
try {
|
||||
final Object obj = engine.eval("({ foo: 'hello' })");
|
||||
value = cs.getTarget().invoke(obj);
|
||||
} catch (Throwable th) {
|
||||
} catch (final Throwable th) {
|
||||
throw new RuntimeException(th);
|
||||
}
|
||||
Assert.assertEquals(value, "hello");
|
||||
|
@ -40,7 +40,7 @@ public final class TrustedGuardingDynamicLinkerExporter extends GuardingDynamicL
|
||||
@Override
|
||||
public List<GuardingDynamicLinker> get() {
|
||||
final ArrayList<GuardingDynamicLinker> linkers = new ArrayList<>();
|
||||
linkers.add((GuardingDynamicLinker) (LinkRequest linkRequest, LinkerServices linkerServices) -> {
|
||||
linkers.add((GuardingDynamicLinker) (final LinkRequest linkRequest, final LinkerServices linkerServices) -> {
|
||||
// handle only the TestLinkerOperation instances
|
||||
if (linkRequest.getCallSiteDescriptor().getOperation() instanceof TestLinkerOperation) {
|
||||
System.out.println("inside " + this.getClass().getName());
|
||||
|
@ -54,7 +54,7 @@ public class JDK_8148140_Test {
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public Object call(Object thiz, Object... args) {
|
||||
public Object call(final Object thiz, final Object... args) {
|
||||
return Arrays.deepToString(args);
|
||||
}
|
||||
});
|
||||
|
@ -737,52 +737,52 @@ public class ScopeTest {
|
||||
try {
|
||||
c.getAttribute("");
|
||||
throw new AssertionError("should have thrown IAE");
|
||||
} catch (IllegalArgumentException iae1) {}
|
||||
} catch (final IllegalArgumentException iae1) {}
|
||||
|
||||
try {
|
||||
c.getAttribute(null);
|
||||
throw new AssertionError("should have thrown NPE");
|
||||
} catch (NullPointerException npe1) {}
|
||||
} catch (final NullPointerException npe1) {}
|
||||
|
||||
try {
|
||||
c.getAttribute("", ScriptContext.ENGINE_SCOPE);
|
||||
throw new AssertionError("should have thrown IAE");
|
||||
} catch (IllegalArgumentException iae2) {}
|
||||
} catch (final IllegalArgumentException iae2) {}
|
||||
|
||||
try {
|
||||
c.getAttribute(null, ScriptContext.ENGINE_SCOPE);
|
||||
throw new AssertionError("should have thrown NPE");
|
||||
} catch (NullPointerException npe2) {}
|
||||
} catch (final NullPointerException npe2) {}
|
||||
|
||||
try {
|
||||
c.removeAttribute("", ScriptContext.ENGINE_SCOPE);
|
||||
throw new AssertionError("should have thrown IAE");
|
||||
} catch (IllegalArgumentException iae3) {}
|
||||
} catch (final IllegalArgumentException iae3) {}
|
||||
|
||||
try {
|
||||
c.removeAttribute(null, ScriptContext.ENGINE_SCOPE);
|
||||
throw new AssertionError("should have thrown NPE");
|
||||
} catch (NullPointerException npe3) {}
|
||||
} catch (final NullPointerException npe3) {}
|
||||
|
||||
try {
|
||||
c.setAttribute("", "value", ScriptContext.ENGINE_SCOPE);
|
||||
throw new AssertionError("should have thrown IAE");
|
||||
} catch (IllegalArgumentException iae4) {}
|
||||
} catch (final IllegalArgumentException iae4) {}
|
||||
|
||||
try {
|
||||
c.setAttribute(null, "value", ScriptContext.ENGINE_SCOPE);
|
||||
throw new AssertionError("should have thrown NPE");
|
||||
} catch (NullPointerException npe4) {}
|
||||
} catch (final NullPointerException npe4) {}
|
||||
|
||||
try {
|
||||
c.getAttributesScope("");
|
||||
throw new AssertionError("should have thrown IAE");
|
||||
} catch (IllegalArgumentException iae5) {}
|
||||
} catch (final IllegalArgumentException iae5) {}
|
||||
|
||||
try {
|
||||
c.getAttributesScope(null);
|
||||
throw new AssertionError("should have thrown NPE");
|
||||
} catch (NullPointerException npe5) {}
|
||||
} catch (final NullPointerException npe5) {}
|
||||
}
|
||||
|
||||
public static class RecursiveEval {
|
||||
@ -791,8 +791,8 @@ public class ScopeTest {
|
||||
private final Bindings engineBindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
|
||||
|
||||
public void program() throws ScriptException {
|
||||
ScriptContext sc = new SimpleScriptContext();
|
||||
Bindings global = new SimpleBindings();
|
||||
final ScriptContext sc = new SimpleScriptContext();
|
||||
final Bindings global = new SimpleBindings();
|
||||
sc.setBindings(global, ScriptContext.GLOBAL_SCOPE);
|
||||
sc.setBindings(engineBindings, ScriptContext.ENGINE_SCOPE);
|
||||
global.put("text", "programText");
|
||||
@ -812,7 +812,7 @@ public class ScopeTest {
|
||||
sc.setBindings(global, ScriptContext.GLOBAL_SCOPE);
|
||||
sc.setBindings(engineBindings, ScriptContext.ENGINE_SCOPE);
|
||||
global.put("text", "methodText");
|
||||
String value = engine.eval("text", sc).toString();
|
||||
final String value = engine.eval("text", sc).toString();
|
||||
Assert.assertEquals(value, "methodText");
|
||||
}
|
||||
}
|
||||
@ -878,7 +878,7 @@ public class ScopeTest {
|
||||
engine.eval("newfunc = function() { return func() }");
|
||||
|
||||
// call "newfunc" and check the return value
|
||||
Object value = ((Invocable)engine).invokeFunction("newfunc");
|
||||
final Object value = ((Invocable)engine).invokeFunction("newfunc");
|
||||
assertTrue(((Number)value).intValue() == 42);
|
||||
}
|
||||
|
||||
@ -910,7 +910,7 @@ public class ScopeTest {
|
||||
engine.eval("newfunc = function() { return func() }");
|
||||
|
||||
// call "newfunc" and check the return value
|
||||
Object value = ((Invocable)engine).invokeFunction("newfunc");
|
||||
final Object value = ((Invocable)engine).invokeFunction("newfunc");
|
||||
assertTrue(((Number)value).intValue() == 42);
|
||||
}
|
||||
|
||||
@ -922,18 +922,18 @@ public class ScopeTest {
|
||||
final ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
|
||||
|
||||
// create an engine and a ScriptContext, but don't set it as default
|
||||
ScriptContext scriptContext = new SimpleScriptContext();
|
||||
final ScriptContext scriptContext = new SimpleScriptContext();
|
||||
|
||||
// Set some value in the context
|
||||
scriptContext.setAttribute("myString", "foo", ScriptContext.ENGINE_SCOPE);
|
||||
|
||||
// Evaluate script with custom context and get back a function
|
||||
final String script = "function (c) { return myString.indexOf(c); }";
|
||||
CompiledScript compiledScript = ((Compilable)engine).compile(script);
|
||||
Object func = compiledScript.eval(scriptContext);
|
||||
final CompiledScript compiledScript = ((Compilable)engine).compile(script);
|
||||
final Object func = compiledScript.eval(scriptContext);
|
||||
|
||||
// Invoked function should be able to see context it was evaluated with
|
||||
Object result = ((Invocable) engine).invokeMethod(func, "call", func, "o", null);
|
||||
final Object result = ((Invocable) engine).invokeMethod(func, "call", func, "o", null);
|
||||
assertTrue(((Number)result).intValue() == 1);
|
||||
}
|
||||
}
|
||||
|
@ -683,7 +683,7 @@ public class ScriptEngineTest {
|
||||
final ScriptEngineManager manager = new ScriptEngineManager();
|
||||
final ScriptEngine e = manager.getEngineByName("nashorn");
|
||||
// no exception expected here!
|
||||
Object value = e.getFactory().getParameter("no value assigned to this key");
|
||||
final Object value = e.getFactory().getParameter("no value assigned to this key");
|
||||
assertNull(value);
|
||||
}
|
||||
|
||||
@ -695,7 +695,7 @@ public class ScriptEngineTest {
|
||||
final AtomicBoolean invoked = new AtomicBoolean(false);
|
||||
e.put("f", new Function<String, String>() {
|
||||
@Override
|
||||
public String apply(String t) {
|
||||
public String apply(final String t) {
|
||||
invoked.set(true);
|
||||
return t;
|
||||
}
|
||||
@ -712,7 +712,7 @@ public class ScriptEngineTest {
|
||||
final AtomicBoolean invoked = new AtomicBoolean(false);
|
||||
e.put("c", new Consumer<Object>() {
|
||||
@Override
|
||||
public void accept(Object t) {
|
||||
public void accept(final Object t) {
|
||||
assertTrue(t instanceof ScriptObjectMirror);
|
||||
assertEquals(((ScriptObjectMirror)t).get("a"), "xyz");
|
||||
invoked.set(true);
|
||||
@ -740,14 +740,14 @@ public class ScriptEngineTest {
|
||||
try {
|
||||
e.put(null, "null-value");
|
||||
fail();
|
||||
} catch (NullPointerException x) {
|
||||
} catch (final NullPointerException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
try {
|
||||
e.put("", "empty-value");
|
||||
fail();
|
||||
} catch (IllegalArgumentException x) {
|
||||
} catch (final IllegalArgumentException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
@ -757,98 +757,98 @@ public class ScriptEngineTest {
|
||||
try {
|
||||
b.put(null, "null-value");
|
||||
fail();
|
||||
} catch (NullPointerException x) {
|
||||
} catch (final NullPointerException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
try {
|
||||
b.put("", "empty-value");
|
||||
fail();
|
||||
} catch (IllegalArgumentException x) {
|
||||
} catch (final IllegalArgumentException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
try {
|
||||
b.get(null);
|
||||
fail();
|
||||
} catch (NullPointerException x) {
|
||||
} catch (final NullPointerException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
try {
|
||||
b.get("");
|
||||
fail();
|
||||
} catch (IllegalArgumentException x) {
|
||||
} catch (final IllegalArgumentException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
try {
|
||||
b.get(1);
|
||||
fail();
|
||||
} catch (ClassCastException x) {
|
||||
} catch (final ClassCastException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
try {
|
||||
b.remove(null);
|
||||
fail();
|
||||
} catch (NullPointerException x) {
|
||||
} catch (final NullPointerException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
try {
|
||||
b.remove("");
|
||||
fail();
|
||||
} catch (IllegalArgumentException x) {
|
||||
} catch (final IllegalArgumentException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
try {
|
||||
b.remove(1);
|
||||
fail();
|
||||
} catch (ClassCastException x) {
|
||||
} catch (final ClassCastException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
try {
|
||||
b.containsKey(null);
|
||||
fail();
|
||||
} catch (NullPointerException x) {
|
||||
} catch (final NullPointerException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
try {
|
||||
b.containsKey("");
|
||||
fail();
|
||||
} catch (IllegalArgumentException x) {
|
||||
} catch (final IllegalArgumentException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
try {
|
||||
b.containsKey(1);
|
||||
fail();
|
||||
} catch (ClassCastException x) {
|
||||
} catch (final ClassCastException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
try {
|
||||
b.putAll(null);
|
||||
fail();
|
||||
} catch (NullPointerException x) {
|
||||
} catch (final NullPointerException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
try {
|
||||
b.putAll(Collections.singletonMap((String)null, "null-value"));
|
||||
fail();
|
||||
} catch (NullPointerException x) {
|
||||
} catch (final NullPointerException x) {
|
||||
// expected
|
||||
}
|
||||
|
||||
try {
|
||||
b.putAll(Collections.singletonMap("", "empty-value"));
|
||||
fail();
|
||||
} catch (IllegalArgumentException x) {
|
||||
} catch (final IllegalArgumentException x) {
|
||||
// expected
|
||||
}
|
||||
}
|
||||
|
@ -53,9 +53,9 @@ public class ParseAPITest {
|
||||
private static final String TEST262_SUITE_DIR;
|
||||
|
||||
static {
|
||||
String testSrc = System.getProperty("test.src");
|
||||
final String testSrc = System.getProperty("test.src");
|
||||
if (testSrc != null) {
|
||||
String testScriptDir = testSrc + "/../../../../../../script/";
|
||||
final String testScriptDir = testSrc + "/../../../../../../script/";
|
||||
TEST_BASIC_DIR = testScriptDir + "basic";
|
||||
TEST_MAPTESTS_DIR = testScriptDir + "maptests";
|
||||
TEST_SANDBOX_DIR = testScriptDir + "sandbox";
|
||||
@ -74,7 +74,7 @@ public class ParseAPITest {
|
||||
public boolean exclude(File file, String content);
|
||||
}
|
||||
|
||||
private void log(String msg) {
|
||||
private void log(final String msg) {
|
||||
org.testng.Reporter.log(msg, true);
|
||||
}
|
||||
|
||||
|
@ -97,8 +97,8 @@ public class BignumTest {
|
||||
@Test
|
||||
public void testAssign() throws Exception {
|
||||
|
||||
Object bignum = ctor.newInstance();
|
||||
Object bignum2 = ctor.newInstance();
|
||||
final Object bignum = ctor.newInstance();
|
||||
final Object bignum2 = ctor.newInstance();
|
||||
|
||||
final Method assignUInt16 = method("assignUInt16", char.class);
|
||||
final Method assignUInt64 = method("assignUInt64", long.class);
|
||||
|
@ -228,8 +228,8 @@ public class IeeeDoubleTest {
|
||||
|
||||
@Test
|
||||
public void testNormalizedBoundaries() throws Exception {
|
||||
Object boundary_plus = DiyFpCtor.newInstance();
|
||||
Object boundary_minus = DiyFpCtor.newInstance();
|
||||
final Object boundary_plus = DiyFpCtor.newInstance();
|
||||
final Object boundary_minus = DiyFpCtor.newInstance();
|
||||
Object diy_fp = asNormalizedDiyFp.invoke(null, doubleToLong.invoke(null, 1.5));
|
||||
normalizedBoundaries.invoke(null, doubleToLong.invoke(null, 1.5), boundary_minus, boundary_plus);
|
||||
assertEquals(e.invoke(diy_fp), e.invoke(boundary_minus));
|
||||
|
@ -60,11 +60,11 @@ public class NameCodecTest {
|
||||
static final String REPLACEMENT_CHARS = "-|,?!%{}^_";
|
||||
|
||||
static String[][] canonicalSamples() {
|
||||
int ndc = DANGEROUS_CHARS.length();
|
||||
String[][] res = new String[2 * ndc][];
|
||||
final int ndc = DANGEROUS_CHARS.length();
|
||||
final String[][] res = new String[2 * ndc][];
|
||||
for (int i = 0; i < ndc; i++) {
|
||||
char dc = DANGEROUS_CHARS.charAt(i);
|
||||
char rc = REPLACEMENT_CHARS.charAt(i);
|
||||
final char dc = DANGEROUS_CHARS.charAt(i);
|
||||
final char rc = REPLACEMENT_CHARS.charAt(i);
|
||||
if (dc == '\\') {
|
||||
res[2 * i + 0] = new String[]{"\\-%", "\\%"};
|
||||
} else {
|
||||
@ -82,11 +82,11 @@ public class NameCodecTest {
|
||||
testEncode(canonicalSamples());
|
||||
}
|
||||
|
||||
private void testEncode(String[][] samples) {
|
||||
for (String[] sample : samples) {
|
||||
String s = sample[1];
|
||||
String expResult = sample[0];
|
||||
String result = NameCodec.encode(s);
|
||||
private void testEncode(final String[][] samples) {
|
||||
for (final String[] sample : samples) {
|
||||
final String s = sample[1];
|
||||
final String expResult = sample[0];
|
||||
final String result = NameCodec.encode(s);
|
||||
if (!result.equals(expResult)) {
|
||||
System.out.println(s + " => " + result + " != " + expResult);
|
||||
}
|
||||
@ -101,11 +101,11 @@ public class NameCodecTest {
|
||||
testDecode(canonicalSamples());
|
||||
}
|
||||
|
||||
private void testDecode(String[][] samples) {
|
||||
for (String[] sample : samples) {
|
||||
String s = sample[0];
|
||||
String expResult = sample[1];
|
||||
String result = NameCodec.decode(s);
|
||||
private void testDecode(final String[][] samples) {
|
||||
for (final String[] sample : samples) {
|
||||
final String s = sample[0];
|
||||
final String expResult = sample[1];
|
||||
final String result = NameCodec.decode(s);
|
||||
assertEquals(expResult, result);
|
||||
}
|
||||
}
|
||||
|
@ -224,8 +224,8 @@ public final class TestFinder {
|
||||
|
||||
boolean explicitOptimistic = false;
|
||||
|
||||
String allContent = new String(Files.readAllBytes(testFile));
|
||||
Iterator<String> scanner = Shell.tokenizeString(allContent).iterator();
|
||||
final String allContent = new String(Files.readAllBytes(testFile));
|
||||
final Iterator<String> scanner = Shell.tokenizeString(allContent).iterator();
|
||||
while (scanner.hasNext()) {
|
||||
// TODO: Scan for /ref=file qualifiers, etc, to determine run
|
||||
// behavior
|
||||
|
@ -26,7 +26,7 @@
|
||||
package jdk.nashorn.test.models;
|
||||
|
||||
public abstract class BigAbstract {
|
||||
public static void accept(BigAbstract ba) {
|
||||
public static void accept(final BigAbstract ba) {
|
||||
}
|
||||
|
||||
public abstract void f0();
|
||||
|
@ -49,7 +49,7 @@ public class Jdk8072596TestSubject {
|
||||
}
|
||||
|
||||
// Test having to wrap some arguments but not others, and a vararg array
|
||||
public void test2(String x, final Object y, final ScriptObject w, final Object... z) {
|
||||
public void test2(final String x, final Object y, final ScriptObject w, final Object... z) {
|
||||
test1(x, y, w);
|
||||
|
||||
Assert.assertEquals(z.length, 2);
|
||||
|
@ -42,7 +42,7 @@ public final class Reflector {
|
||||
private Reflector() {}
|
||||
private static final Module NASHORN_MOD = Context.class.getModule();
|
||||
|
||||
public static Object invoke(Method m, Object self, Object...args) {
|
||||
public static Object invoke(final Method m, final Object self, final Object...args) {
|
||||
if (m.getDeclaringClass().getModule() != NASHORN_MOD) {
|
||||
throw new RuntimeException(m + " is not from Nashorn module");
|
||||
}
|
||||
@ -58,7 +58,7 @@ public final class Reflector {
|
||||
}
|
||||
}
|
||||
|
||||
public static Object newInstance(Constructor c, Object...args) {
|
||||
public static Object newInstance(final Constructor c, final Object...args) {
|
||||
if (c.getDeclaringClass().getModule() != NASHORN_MOD) {
|
||||
throw new RuntimeException(c + " is not from Nashorn module");
|
||||
}
|
||||
@ -74,7 +74,7 @@ public final class Reflector {
|
||||
}
|
||||
}
|
||||
|
||||
public static Object get(Field f, Object self) {
|
||||
public static Object get(final Field f, final Object self) {
|
||||
if (f.getDeclaringClass().getModule() != NASHORN_MOD) {
|
||||
throw new RuntimeException(f + " is not from Nashorn module");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user