diff --git a/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/test/TestCorrelatedPairExtractionRhino.java b/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/test/TestCorrelatedPairExtractionRhino.java new file mode 100644 index 000000000..9c79a5a7e --- /dev/null +++ b/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/test/TestCorrelatedPairExtractionRhino.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright (c) 2011 IBM Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +package com.ibm.wala.cast.js.test; + +import java.io.IOException; + +import com.ibm.wala.cast.js.ipa.callgraph.correlations.CorrelationFinder; +import com.ibm.wala.cast.js.translator.CAstRhinoTranslatorFactory; +import com.ibm.wala.cast.tree.CAstEntity; +import com.ibm.wala.cast.tree.impl.CAstImpl; +import com.ibm.wala.classLoader.SourceModule; +import org.mozilla.javascript.RhinoToAstTranslator; + +public class TestCorrelatedPairExtractionRhino extends TestCorrelatedPairExtraction { + protected CorrelationFinder makeCorrelationFinder() { + return new CorrelationFinder(new CAstRhinoTranslatorFactory()); + } + + protected CAstEntity parseJS(CAstImpl ast, SourceModule module) throws IOException { + RhinoToAstTranslator.resetGensymCounters(); + RhinoToAstTranslator translator = new RhinoToAstTranslator(ast, module, module.getName()); + CAstEntity entity = translator.translate(); + return entity; + } +} diff --git a/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/test/TestForInBodyExtractionRhino.java b/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/test/TestForInBodyExtractionRhino.java new file mode 100644 index 000000000..661221223 --- /dev/null +++ b/com.ibm.wala.cast.js.rhino.test/harness-src/com/ibm/wala/cast/js/test/TestForInBodyExtractionRhino.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2011 IBM Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +package com.ibm.wala.cast.js.test; + +import java.io.IOException; + +import org.mozilla.javascript.RhinoToAstTranslator; + +import com.ibm.wala.cast.tree.CAstEntity; +import com.ibm.wala.cast.tree.impl.CAstImpl; +import com.ibm.wala.classLoader.SourceModule; + +public class TestForInBodyExtractionRhino extends TestForInBodyExtraction { + protected CAstEntity parseJS(CAstImpl ast, SourceModule module) throws IOException { + RhinoToAstTranslator.resetGensymCounters(); + RhinoToAstTranslator translator = new RhinoToAstTranslator(ast, module, module.getName()); + CAstEntity entity = translator.translate(); + return entity; + } +} diff --git a/com.ibm.wala.cast.js.rhino/META-INF/MANIFEST.MF b/com.ibm.wala.cast.js.rhino/META-INF/MANIFEST.MF index 425d4531f..947ffa5fb 100644 --- a/com.ibm.wala.cast.js.rhino/META-INF/MANIFEST.MF +++ b/com.ibm.wala.cast.js.rhino/META-INF/MANIFEST.MF @@ -11,4 +11,5 @@ Require-Bundle: org.eclipse.core.runtime, com.ibm.wala.core;bundle-version="1.1.3" Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-ActivationPolicy: lazy -Export-Package: com.ibm.wala.cast.js.translator +Export-Package: com.ibm.wala.cast.js.translator, + org.mozilla.javascript diff --git a/com.ibm.wala.cast.js.test/harness-src/com/ibm/wala/cast/js/test/CAstDumper.java b/com.ibm.wala.cast.js.test/harness-src/com/ibm/wala/cast/js/test/CAstDumper.java new file mode 100644 index 000000000..0311db161 --- /dev/null +++ b/com.ibm.wala.cast.js.test/harness-src/com/ibm/wala/cast/js/test/CAstDumper.java @@ -0,0 +1,162 @@ +/******************************************************************************* + * Copyright (c) 2011 IBM Corporation. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +package com.ibm.wala.cast.js.test; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Map; +import java.util.Map.Entry; + +import com.ibm.wala.cast.js.ipa.callgraph.correlations.extraction.NodeLabeller; +import com.ibm.wala.cast.tree.CAstControlFlowMap; +import com.ibm.wala.cast.tree.CAstEntity; +import com.ibm.wala.cast.tree.CAstNode; +import com.ibm.wala.cast.util.CAstPrinter; +import com.ibm.wala.util.collections.HashMapFactory; + +/** + * A class for dumping a textual representation of a CAst syntax tree. + * + *
Similar to {@link CAstPrinter}, but additionally prints control flow information.
+ * + *It also suppresses certain kinds of spurious nodes such as empty statements within a block or + * block expressions with a single child, which are simply artifacts of the translation process. This + * is not nice, but needed for our tests.
+ * + * @author mschaefer + * + */ +public class CAstDumper { + private final NodeLabeller labeller; + + public CAstDumper() { + labeller = new NodeLabeller(); + } + + public CAstDumper(NodeLabeller labeller) { + this.labeller = labeller; + } + + private static String indent(int indent) { + StringBuilder buf = new StringBuilder(); + for(int i=0;i