Fix for issue #774. Deleted several archaic tests that are not relevant anymore. Moved a two tests into user and cleaned them up big time.
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@583 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/test/com/google/gwt/dev/jjs/JavaToJavaScriptCompilerTest.java b/dev/core/test/com/google/gwt/dev/jjs/JavaToJavaScriptCompilerTest.java
deleted file mode 100644
index 5b137c8..0000000
--- a/dev/core/test/com/google/gwt/dev/jjs/JavaToJavaScriptCompilerTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2006 Google Inc. All Rights Reserved.
-package com.google.gwt.dev.jjs;
-
-import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.dev.jdt.RebindOracle;
-import com.google.gwt.dev.jdt.RebindPermutationOracle;
-import com.google.gwt.dev.jdt.WebModeCompilerFrontEnd;
-import com.google.gwt.dev.util.log.AbstractTreeLogger;
-import com.google.gwt.dev.util.log.PrintWriterTreeLogger;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class JavaToJavaScriptCompilerTest {
-
- public static void main(String[] args) throws UnableToCompleteException {
- if (args.length < 1) {
- System.err.println("Usage: root-class [[rebind] ...]\n"
- + " mainClass must implement public void appMain()\n"
- + " rebind is of the form com.before.class:com.after.class\n");
- System.exit(1);
- }
-
- Map rebinds = new HashMap();
-
- for (int i = 1; i < args.length; ++i) {
- String[] split = args[i].split(":");
- if (split.length != 2) {
- System.err
- .println("Rebinds must be of the form com.before.class:com.after.class\n");
- System.exit(1);
- }
- rebinds.put(split[0], split[1]);
- }
-
- AbstractTreeLogger logger = new PrintWriterTreeLogger();
- logger.setMaxDetail(TreeLogger.INFO);
- SourceOracleImpl soi = new SourceOracleImpl();
- WebModeCompilerFrontEnd compiler = new WebModeCompilerFrontEnd(soi, new RebindPermutationOracle() {
- public String[] getAllPossibleRebindAnswers(TreeLogger logger, String sourceTypeName) throws UnableToCompleteException {
- return new String[] { sourceTypeName };
- }
- });
-
- JavaToJavaScriptCompiler jjs = new JavaToJavaScriptCompiler(logger,
- compiler, new String[]{args[0]});
-
-
- jjs.compile(logger, new RebindOracle() {
- public String rebind(TreeLogger logger, String sourceTypeName) throws UnableToCompleteException {
- return sourceTypeName;
- }
- });
- System.exit(0);
- }
-}
diff --git a/dev/core/test/com/google/gwt/dev/jjs/RebindPermOracleImpl.java b/dev/core/test/com/google/gwt/dev/jjs/RebindPermOracleImpl.java
deleted file mode 100644
index d281f5a..0000000
--- a/dev/core/test/com/google/gwt/dev/jjs/RebindPermOracleImpl.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2006 Google Inc. All Rights Reserved.
-package com.google.gwt.dev.jjs;
-
-import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.dev.jdt.RebindOracle;
-import com.google.gwt.dev.jdt.RebindPermutationOracle;
-
-import java.util.Map;
-
-final class RebindPermOracleImpl implements RebindPermutationOracle,
- RebindOracle {
-
- public RebindPermOracleImpl(Map rebinds) {
- this.rebinds = rebinds;
- }
-
- public String[] getAllPossibleRebindAnswers(TreeLogger logger,
- String sourceTypeName) throws UnableToCompleteException {
- return new String[]{rebind(logger, sourceTypeName)};
- }
-
- public String rebind(TreeLogger logger, String sourceTypeName)
- throws UnableToCompleteException {
- String result = (String) rebinds.get(sourceTypeName);
- if (result != null) {
- return result;
- } else {
- return sourceTypeName;
- }
- }
-
- private final Map rebinds;
-}
diff --git a/dev/core/test/com/google/gwt/dev/jjs/ReflectiveWebModeCompilerTestCase.java b/dev/core/test/com/google/gwt/dev/jjs/ReflectiveWebModeCompilerTestCase.java
deleted file mode 100644
index 45af4aa..0000000
--- a/dev/core/test/com/google/gwt/dev/jjs/ReflectiveWebModeCompilerTestCase.java
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright 2006 Google Inc. All Rights Reserved.
-package com.google.gwt.dev.jjs;
-
-import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.core.ext.typeinfo.CompilationUnitProvider;
-import com.google.gwt.dev.jdt.SourceOracle;
-import com.google.gwt.dev.jdt.StaticCompilationUnitProvider;
-import com.google.gwt.dev.jdt.WebModeCompilerFrontEnd;
-import com.google.gwt.dev.util.log.AbstractTreeLogger;
-import com.google.gwt.dev.util.log.PrintWriterTreeLogger;
-
-import junit.framework.TestCase;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-public class ReflectiveWebModeCompilerTestCase extends TestCase {
-
- public ReflectiveWebModeCompilerTestCase() {
- // Build a map of packages and classes.
- // Each package P is represented by a nested class named
- // "Package_P", whose methods are declared as "src_T()",
- // where T is the name of a type within logical package P.
- // Calling src_T() produces the source for type T.
- // The default package class should be called "Package_".
- //
- ctorMapPackagesInTestCase(getClass());
- }
-
- public void compile(String appClass, Map rebinds)
- throws UnableToCompleteException {
- rebinds = rebinds != null ? rebinds : new HashMap();
- AbstractTreeLogger logger = new PrintWriterTreeLogger();
- logger.setMaxDetail(TreeLogger.INFO);
- RebindPermOracleImpl rpoi = new RebindPermOracleImpl(rebinds);
- SourceOracleReflectiveDecorator soi = new SourceOracleReflectiveDecorator();
- WebModeCompilerFrontEnd astCompiler = new WebModeCompilerFrontEnd(soi, rpoi);
- JavaToJavaScriptCompiler jjs = new JavaToJavaScriptCompiler(logger,
- astCompiler, new String[]{appClass});
- jjs.compile(logger, rpoi);
- }
-
- private class SourceOracleReflectiveDecorator implements SourceOracle {
-
- private final SourceOracle inner = new SourceOracleImpl();
-
- public CompilationUnitProvider findCompilationUnit(TreeLogger logger,
- String sourceTypeName) throws UnableToCompleteException {
- CompilationUnitProvider result = inner.findCompilationUnit(logger,
- sourceTypeName);
- if (result == null) {
- int lastDot = sourceTypeName.lastIndexOf('.');
- String packageName = "";
- String simpleName = sourceTypeName;
- if (lastDot != -1) {
- packageName = sourceTypeName.substring(0, lastDot);
- simpleName = sourceTypeName.substring(lastDot + 1);
- }
-
- String mangledPackageName = makeMangledPackageName(packageName);
- Map methodsByMangledClassName = (Map) methodMapByPackageName
- .get(mangledPackageName);
-
- if (methodsByMangledClassName != null) {
- String mangledSimpleName = makeMangledSimpleName(simpleName);
- Method method = (Method) methodsByMangledClassName
- .get(mangledSimpleName);
- if (method != null) {
- try {
- String source = (String) method.invoke(null, new Object[0]);
- result = new StaticCompilationUnitProvider(packageName,
- simpleName, source.toCharArray());
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- return null;
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- return null;
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- return null;
- }
- }
- }
- }
- return result;
- }
-
- public boolean isPackage(String possiblePackageName) {
- boolean result = inner.isPackage(possiblePackageName);
- if (!result) {
- String mangledName = makeMangledPackageName(possiblePackageName);
-
- // Any matching prefix qualifies.
- //
- for (Iterator iter = methodMapByPackageName.keySet().iterator(); iter
- .hasNext();) {
- String testMangledPackageName = (String) iter.next();
- if (testMangledPackageName.startsWith(mangledName))
- return true;
- }
- }
- return result;
- }
-
- }
-
- private void ctorMapMethodsInPackage(Class packageClass,
- Map/* <String, Method> */methodByName) {
- // We build the map from the top of the hierachy downward, so that map
- // inserts in derived classes will override those in superclasses.
- //
- Class superClass = packageClass.getSuperclass();
- if (superClass != null)
- ctorMapMethodsInPackage(superClass, methodByName);
-
- // Now contribute to the map on behalf of packageClass.
- //
- Method[] methods = packageClass.getDeclaredMethods();
- for (int i = 0; i < methods.length; i++) {
- Method method = methods[i];
- String methodName = method.getName();
- if (methodName.startsWith("src_")) {
- if (method.getParameterTypes().length == 0) {
- int modifiers = method.getModifiers();
- if (Modifier.isStatic(modifiers) && Modifier.isPublic(modifiers)) {
- // This counts as a source-producing method.
- //
- method.setAccessible(true);
- methodByName.put(methodName, method);
- } else {
- System.err.println("Source method " + methodName + " in class "
- + packageClass.getName() + " should be 'public' and 'static'");
- }
- }
- }
- }
- }
-
- private void ctorMapPackagesInTestCase(Class testCaseClass) {
- // We build the map from the top of the hierachy downward, so that map
- // inserts in derived classes will override those in superclasses.
- //
- if (!testCaseClass.equals(ReflectiveWebModeCompilerTestCase.class)) {
- Class superClass = testCaseClass.getSuperclass();
- if (superClass != null)
- ctorMapPackagesInTestCase(superClass);
- }
-
- // Now contribute to the map on behalf of containingClass.
- //
- Class[] nestedClasses = testCaseClass.getDeclaredClasses();
-
- for (int i = 0; i < nestedClasses.length; i++) {
- Class nestedClass = nestedClasses[i];
- String nestedClassName = nestedClass.getName();
- int indexOfSimpleName = nestedClassName.lastIndexOf('$') + 1;
- nestedClassName = nestedClassName.substring(indexOfSimpleName);
- if (nestedClassName.startsWith("Package_")) {
- int modifiers = nestedClass.getModifiers();
- if (Modifier.isStatic(modifiers) && Modifier.isPublic(modifiers)) {
- // This counts as a package.
- //
- Map/* <String, Method> */methodMap = (Map) methodMapByPackageName
- .get(nestedClassName);
- if (methodMap == null) {
- methodMap = new HashMap();
- methodMapByPackageName.put(nestedClassName, methodMap);
- }
-
- // Add source-producing methods.
- //
- ctorMapMethodsInPackage(nestedClass, methodMap);
- } else {
- System.err.println("Package class " + nestedClassName + " in class "
- + testCaseClass.getName() + " should be 'public' and 'static'");
- }
- }
- }
- }
-
- private String makeMangledPackageName(String packageName) {
- packageName = "Package_" + packageName.replace('.', '_');
- return packageName;
- }
-
- private String makeMangledSimpleName(String typeName) {
- return "src_" + typeName;
- }
-
- private final Map/* <String, Map<String, Method>> */methodMapByPackageName = new HashMap();
-
-}
diff --git a/dev/core/test/com/google/gwt/dev/jjs/SimpleWebModeCompilerTestCase.java b/dev/core/test/com/google/gwt/dev/jjs/SimpleWebModeCompilerTestCase.java
deleted file mode 100644
index e389db8..0000000
--- a/dev/core/test/com/google/gwt/dev/jjs/SimpleWebModeCompilerTestCase.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2006 Google Inc. All Rights Reserved.
-package com.google.gwt.dev.jjs;
-
-import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.dev.jdt.WebModeCompilerFrontEnd;
-import com.google.gwt.dev.util.log.AbstractTreeLogger;
-import com.google.gwt.dev.util.log.PrintWriterTreeLogger;
-
-import junit.framework.TestCase;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public abstract class SimpleWebModeCompilerTestCase extends TestCase {
-
- protected void compile(String appClass, Map rebinds)
- throws UnableToCompleteException {
- rebinds = rebinds != null ? rebinds : new HashMap();
- AbstractTreeLogger logger = new PrintWriterTreeLogger();
- logger.setMaxDetail(TreeLogger.INFO);
- SourceOracleImpl soi = new SourceOracleImpl();
- RebindPermOracleImpl rpoi = new RebindPermOracleImpl(rebinds);
- WebModeCompilerFrontEnd astCompiler = new WebModeCompilerFrontEnd(soi, rpoi);
- JavaToJavaScriptCompiler jjs = new JavaToJavaScriptCompiler(logger,
- astCompiler, new String[]{appClass}, false, false);
- String result = jjs.compile(logger, rpoi);
-
- // print source
- if (true) {
- System.out.println("<html><head></head>");
- System.out.println("<body onload=\'init()\'>");
- System.out.println("<script>");
- System.out.println(result);
- System.out.println("</script>");
- System.out.println("</body></html>");
- }
-
- }
-
-}
diff --git a/dev/core/test/com/google/gwt/dev/jjs/SourceOracleImpl.java b/dev/core/test/com/google/gwt/dev/jjs/SourceOracleImpl.java
deleted file mode 100644
index da3455a..0000000
--- a/dev/core/test/com/google/gwt/dev/jjs/SourceOracleImpl.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006 Google Inc. All Rights Reserved.
-package com.google.gwt.dev.jjs;
-
-import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.core.ext.typeinfo.CompilationUnitProvider;
-import com.google.gwt.dev.jdt.SourceOracle;
-import com.google.gwt.dev.jdt.URLCompilationUnitProvider;
-
-import java.net.URL;
-
-final class SourceOracleImpl implements SourceOracle {
-
- public CompilationUnitProvider findCompilationUnit(TreeLogger logger,
- String sourceTypeName) {
- ClassLoader cl = getClass().getClassLoader();
- URL url = cl.getResource(sourceTypeName.replace('.', '/') + ".java");
- if (url != null) {
- String packageName = "";
- int i = sourceTypeName.lastIndexOf('.');
- if (i != -1) {
- packageName = sourceTypeName.substring(0, i);
- }
- return new URLCompilationUnitProvider(url, packageName);
- } else {
- return null;
- }
- }
-
- public boolean isPackage(String maybePackage) {
- ClassLoader cl = getClass().getClassLoader();
- URL url = cl.getResource(maybePackage.replace('.', '/').concat("/"));
- if (url != null)
- return true;
- else
- return false;
- }
-
-}
diff --git a/dev/core/test/com/google/gwt/dev/jjs/WebModeCompilerNoRebind.java b/dev/core/test/com/google/gwt/dev/jjs/WebModeCompilerNoRebind.java
deleted file mode 100644
index 0cc1404..0000000
--- a/dev/core/test/com/google/gwt/dev/jjs/WebModeCompilerNoRebind.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2006 Google Inc. All Rights Reserved.
-package com.google.gwt.dev.jjs;
-
-/**
- *
- */
-public class WebModeCompilerNoRebind extends ReflectiveWebModeCompilerTestCase {
-
- public void testCompile() throws Exception {
- compile("test.TestNoRebind", null);
- }
-
- public static class Package_test {
- public static String src_TestNoRebind() {
- StringBuffer sb = new StringBuffer();
- sb.append("package test;\n");
- sb.append("public class TestNoRebind {\n");
- sb.append(" public void onModuleLoad() {\n");
- sb.append(" }\n");
- sb.append("}\n");
- return sb.toString();
- }
- }
-}
diff --git a/dev/core/test/com/google/gwt/dev/jjs/WebModeCompilerSamePackageRebind.java b/dev/core/test/com/google/gwt/dev/jjs/WebModeCompilerSamePackageRebind.java
deleted file mode 100644
index cf122ac..0000000
--- a/dev/core/test/com/google/gwt/dev/jjs/WebModeCompilerSamePackageRebind.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2006 Google Inc. All Rights Reserved.
-package com.google.gwt.dev.jjs;
-
-import com.google.gwt.core.ext.UnableToCompleteException;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class WebModeCompilerSamePackageRebind extends ReflectiveWebModeCompilerTestCase {
-
- public void testCompile() throws UnableToCompleteException {
- Map rebinds = new HashMap();
- rebinds.put("test.rebind.SamePackageRebindBefore", "test.rebind.SamePackageRebindAfter");
- compile("test.rebind.TestRebind", rebinds);
- }
-
- public static class Package_test_rebind {
-
- public static String src_SamePackageRebindBefore() {
- StringBuffer sb = new StringBuffer();
- sb.append("package test.rebind;\n");
- sb.append("public class SamePackageRebindBefore {\n");
- sb.append(" protected void foo() {\n");
- sb.append(" }\n");
- sb.append("}\n");
- return sb.toString();
- }
-
- public static String src_SamePackageRebindAfter() {
- StringBuffer sb = new StringBuffer();
- sb.append("package test.rebind;\n");
- sb.append("public class SamePackageRebindAfter {\n");
- sb.append(" protected void foo() {\n");
- sb.append(" }\n");
- sb.append("}\n");
- return sb.toString();
- }
-
- public static String src_TestRebind() {
- StringBuffer sb = new StringBuffer();
- sb.append("package test.rebind;\n");
- sb.append("import com.google.gwt.core.client.Rebind;");
- sb.append("public class TestRebind {\n");
- sb.append(" public void onModuleLoad() {\n");
- sb.append(" SamePackageRebindBefore b;\n");
- sb.append(" b = (SamePackageRebindBefore)GWT.create(SamePackageRebindBefore.class);\n");
- sb.append(" }\n");
- sb.append("}\n");
- return sb.toString();
- }
- }
-
-}
diff --git a/dev/core/test/com/google/gwt/dev/jjs/inneroutersuper/Test.java b/dev/core/test/com/google/gwt/dev/jjs/inneroutersuper/Test.java
deleted file mode 100644
index 3a9d288..0000000
--- a/dev/core/test/com/google/gwt/dev/jjs/inneroutersuper/Test.java
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2006 Google Inc. All Rights Reserved.
-package com.google.gwt.dev.jjs.inneroutersuper;
-
-import com.google.gwt.dev.jjs.SimpleWebModeCompilerTestCase;
-
-public class Test extends SimpleWebModeCompilerTestCase {
-
- public void testCompile() throws Exception {
- compile(Main.class.getName(), null);
- }
-
-}
diff --git a/dev/core/test/com/google/gwt/dev/jjs/jdtcoverage/Main.java b/dev/core/test/com/google/gwt/dev/jjs/jdtcoverage/Main.java
deleted file mode 100644
index cf1f056..0000000
--- a/dev/core/test/com/google/gwt/dev/jjs/jdtcoverage/Main.java
+++ /dev/null
@@ -1,490 +0,0 @@
-// Copyright 2006 Google Inc. All Rights Reserved.
-package com.google.gwt.dev.jjs.jdtcoverage;
-
-/**
- * This test is intended to exercise as many code paths and node types as
- * possible in the Java to JavaScript compiler. This test is not at all intended
- * to execute correctly.
- */
-public class Main extends MainSuper {
-
- public static int i = 1 + 2 + 3;
- public static final int j = 2;
- public static long l;
- public static int[] ia;
- public static int[][] iaa;
- public static int[][][] iaaa;
- public static Object o;
- public static boolean z;
- public static double d;
- public static float f;
- public static String s = "foo";
- public static Main singleton;
-
- public int x = 3;
- public final int y = 4;
- public Main next;
-
- public void onModuleLoad() {
- new Inner().go();
- }
-
- public Main getNext() {
- return next;
- }
-
- public void foo() {
- }
-
- protected static void sfoo() {
- }
-
- public static class Super {
- // Initializer
- static {
- Super.i = 1;
- }
-
- public static int i = 2;
- public static final int j = 2;
-
- // Initializer
- static {
- Super.i = 3;
- }
-
- // Initializer
- {
- x = 1;
- }
-
- public int x = 2;
- public final int y = 4;
-
- // Initializer
- {
- x = 3;
- }
-
-
- public Super() {
- }
-
- public Super(int i) {
- }
-
- public void foo() {
- }
-
- protected static void sfoo() {
- }
-
- }
-
- public class Inner extends Super {
-
- public int x = 3;
- public final int y = 4;
-
- public Inner() {
- // ExplicitConstructorCall
- this(4);
- }
-
- public Inner(int i) {
- // ExplicitConstructorCall
- super(i);
- }
-
- public void go() {
-
- // AllocationExpression
- o = new Super();
- o = new Super(42);
-
- // AND_AND_Expression
- z = i == 1 && j == 2;
-
- // ArrayAllocationExpression
- ia = new int[4];
- iaa = new int[4][3];
- iaaa = new int[4][3][];
-
- // ArrayInitializer
- ia = new int[]{i, j};
- iaa = new int[][]{{i, j}};
- iaa = new int[][]{{i, j}, ia};
-
- // ArrayQualifiedTypeReference
- // TODO: ???
-
- // ArrayReference
- i = ia[0];
- ia[0] = i;
-
- // Assignment
- i = j;
-
- // BinaryExpression
- i = i + j;
- i = i - j;
- i = i * j;
- i = i / j;
- i = i % j;
- i = i & j;
- i = i | j;
- i = i ^ j;
- i = i << j;
- i = i >> j;
- i = i >>> j;
-
- // CastExpression
- o = (Super) o;
-
- // CharLiteral
- i = 'c';
-
- // ClassLiteralAccess
- o = Super.class;
-
- // ConditionalExpression
- i = z ? i : j;
-
- // CompoundAssignment
- i += j;
- i -= j;
- i *= j;
- i /= j;
- i %= j;
- i &= j;
- i |= j;
- i ^= j;
- i <<= j;
- i >>= j;
- i >>>= j;
-
- // DoubleLiteral
- d = 3.141592653589793;
-
- // EqualExpression
- z = i == j;
- z = i != j;
- z = i < j;
- z = i <= j;
- z = i > j;
- z = i >= j;
-
- // ExtendedStringLiteral
- // TODO: ????
-
- // FalseLiteral
- z = false;
-
- // FieldReference, QualifiedSuperReference, QualifiedThisReference,
- // SuperReference, ThisReference
- Inner other = new Inner();
- i = i + j + x + y;
- i = this.i + this.j + this.x + this.y;
- i = Main.i + Main.j;
- i = Inner.i + Inner.j;
- i = Super.i + Super.j;
- i = other.i + other.j + other.x + other.y;
- i = Inner.this.i + Inner.this.j + Inner.this.x + Inner.this.y;
- i = Main.this.i + Main.this.j + Main.this.x + Main.this.y;
- i = super.i + super.j + super.x + super.y;
- i = Inner.super.i + Inner.super.j + Inner.super.x + Inner.super.y;
- i = Main.super.i + Main.super.j + Main.super.x + Main.super.y;
-
- // FloatLiteral
- f = 3.1415927f;
-
- // InstanceOfExpression
- z = o instanceof Super;
-
- // IntLiteral
- i = 4;
-
- // IntLiteralMinValue
- i = -2147483648;
-
- // LongLiteral
- l = 4L;
-
- // LongLiteralMinValue
- l = -9223372036854775808L;
-
- // MessageSend, QualifiedSuperReference, QualifiedThisReference,
- // SuperReference, ThisReference
- foo();
- this.foo();
- other.foo();
- Main.this.foo();
- super.foo();
- Inner.super.foo();
- Main.super.foo();
-
- sfoo();
- this.sfoo();
- Main.sfoo();
- Inner.sfoo();
- Super.sfoo();
- other.sfoo();
- Main.this.sfoo();
- super.sfoo();
- Inner.super.sfoo();
- Main.super.sfoo();
-
- // NullLiteral
- o = null;
-
- // OR_OR_Expression
- z = i == 1 || j == 2;
-
- // PostfixExpression
- i++;
- i--;
-
- // PrefixExpression
- ++i;
- --i;
-
- // QualifiedAllocationExpression
- o = new Inner();
- o = Main.this.new Inner();
- o = new Main().new Inner();
-
- // QualifiedNameReference
- // TODO: fields????
- Main m = new Main();
- i = ia.length;
- i = m.j;
- i = m.y;
- i = new Main().j;
- i = new Main().y;
- i = m.next.j;
- i = m.next.y;
- i = new Main().next.j;
- i = new Main().next.y;
- i = m.getNext().j;
- i = m.getNext().y;
- i = new Main().getNext().j;
- i = new Main().getNext().y;
-
- // QualifiedTypeReference
- // TODO: ????
-
- // SingleNameReference
- int asdf;
- asdf = i;
- i = asdf;
-
- // StringLiteral
- s = "f'oo\b\t\n\f\r\"\\";
-
- // TrueLiteral
- z = true;
-
- // TypeReference
- // TODO: ????
-
- // UnaryExpression
- i = -i;
- i = ~i;
- z = !z;
-
- // AssertStatement
- assert i == 2;
- assert i == 3 : null;
-
- // BreakStatement, ContinueStatement
- outer : while (z) {
- inner : while (z) {
- if (i == 1)
- break;
- if (i == 2)
- break outer;
- if (i == 3)
- continue;
- if (i == 4)
- continue outer;
- }
- }
-
- // CaseStatement, SwitchStatement
- switch (j) {
- case 1: ++i;
- case 2: ++i;
- case 3: ++i;
- case 4: ++i;
- default: ++i;
- }
-
- // DoStatement
- do
- i = j;
- while(z);
-
- do {
- i = j;
- x = y;
- } while(z);
-
- // EmptyStatement
- ;
-
-// // ForeachStatement; 5.0 only
-// for (int q : ia) {
-// i = q;
-// }
-
- // ForStatement
- for (int q = 0, v = j; q < v; ++q)
- i = q;
-
- // IfStatement
- if (z)
- i = j;
- else
- i = x;
-
- // LabeledStatement
- label: i = j;
-
- // LocalDeclaration
- int aaa;
- int bbb = j;
- int ccc, ddd;
- int eee = 4, fff = 5;
-
- // ReturnStatement
- if (z)
- return;
-
- // SynchronizedStatement
- synchronized (other) {
- other.x = i;
- }
-
- // ThrowStatement, TryStatement
- try {
- throw new Exception();
- } catch (Exception e) {
- i = j;
- } catch (Throwable t) {
- x = y;
- }
-
- try {
- i = j;
- } finally {
- x = y;
- }
-
- try {
- try {
- i = j;
- } catch (Throwable t) {
- throw t;
- }
- } catch (Throwable t) {
- i = j;
- } finally {
- x = y;
- }
-
- // WhileStatement
- while (z)
- i = j;
-
- while (z) {
- i = j;
- x = y;
- }
-
- }
-
- public void foo() {
- final int z = this.y;
-
- new Inner() {
- {
- x = z;
- this.x = z;
- Inner.this.x = z;
- next = Main.this.next;
- next.foo();
- Main.this.next.foo();
- Main.this.x = z;
- Main.super.x = z; // inexpressible in Java without name mangling
- }
- public void foo() {
- x = z;
- this.x = z;
- Inner.this.x = z;
- next = Main.this.next;
- next.foo();
- Main.this.next.foo();
- Main.this.x = z;
- Main.super.x = z; // inexpressible in Java without name mangling
- }
- };
-
- class NamedLocal extends Inner {
- public void foo() {
- Main.this.getNext();
- Inner.this.foo();
- super.foo();
- int x = z;
- }
- // JDT bug? This works in 5.0 but not in 1.4
- // TODO: will javac compile it?
-// class NamedLocalSub extends NamedLocal {
-// public void foo() {
-// Main.this.getNext();
-// Inner.this.foo();
-// NamedLocal.this.foo();
-// super.foo();
-// int x = z;
-// }
-// }
- };
-
-// new NamedLocal().new NamedLocalSub().foo();
- new InnerSub().new InnerSubSub().fda();
- new SecondMain().new FunkyInner();
- }
-
- }
-
- private static class InnerSub extends Inner {
- InnerSub() {
- new Main().super();
- }
-
- private int asdfasdfasdf = 3;
-
- private class InnerSubSub extends InnerSub {
- {
- asdfasdfasdf = InnerSub.this.asdfasdfasdf;
- InnerSub.this.asdfasdfasdf = asdfasdfasdf;
- asdfasdfasdf = super.asdfasdfasdf;
- super.asdfasdfasdf = asdfasdfasdf;
- }
- void fda() {
- asdfasdfasdf = InnerSub.this.asdfasdfasdf;
- InnerSub.this.asdfasdfasdf = asdfasdfasdf;
- asdfasdfasdf = super.asdfasdfasdf;
- super.asdfasdfasdf = asdfasdfasdf;
- }
- }
- }
-
- private static class SecondMain {
- private class FunkyInner extends Inner {
- FunkyInner() {
- new Main().super();
- }
- }
- }
-
-}
\ No newline at end of file
diff --git a/dev/core/test/com/google/gwt/dev/jjs/jdtcoverage/MainSuper.java b/dev/core/test/com/google/gwt/dev/jjs/jdtcoverage/MainSuper.java
deleted file mode 100644
index 2aa3910..0000000
--- a/dev/core/test/com/google/gwt/dev/jjs/jdtcoverage/MainSuper.java
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2006 Google Inc. All Rights Reserved.
-package com.google.gwt.dev.jjs.jdtcoverage;
-
-public class MainSuper {
-
- public static int i = 1;
- public static final int j = 2;
-
- public int x = 3;
- public final int y = 4;
-
- public void foo() {
- }
-
- protected static void sfoo() {
- }
-
-}
diff --git a/dev/core/test/com/google/gwt/dev/jjs/jdtcoverage/Test.java b/dev/core/test/com/google/gwt/dev/jjs/jdtcoverage/Test.java
deleted file mode 100644
index 44c956d..0000000
--- a/dev/core/test/com/google/gwt/dev/jjs/jdtcoverage/Test.java
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2006 Google Inc. All Rights Reserved.
-package com.google.gwt.dev.jjs.jdtcoverage;
-
-import com.google.gwt.dev.jjs.SimpleWebModeCompilerTestCase;
-
-public class Test extends SimpleWebModeCompilerTestCase {
-
- public void testCompile() throws Exception {
- compile(Main.class.getName(), null);
- }
-
-}
diff --git a/dev/core/test/com/google/gwt/dev/jjs/uprefs/Main.java b/dev/core/test/com/google/gwt/dev/jjs/uprefs/Main.java
deleted file mode 100644
index 8ecdf78..0000000
--- a/dev/core/test/com/google/gwt/dev/jjs/uprefs/Main.java
+++ /dev/null
@@ -1,156 +0,0 @@
-// Copyright 2006 Google Inc. All Rights Reserved.
-package com.google.gwt.dev.jjs.uprefs;
-
-public class Main {
-
- interface I1 {
- public void a(int noprune);
- public void b(int prune);
- public void c(int prune);
- public void d(int prune);
- public void e(int prune);
- public void f(int prune);
- public void g(int prune);
- public void h(int prune);
- public void i(int noprune);
- public void j(int prune);
- public void k(int noprune);
- public void l(int prune);
- public void m(int prune);
- public void n(int prune);
- public void o(int prune);
- public void p(int prune);
- }
-
- interface I2 {
- public void a(int prune);
- public void b(int noprune);
- public void c(int prune);
- public void d(int noprune);
- public void e(int prune);
- public void f(int prune);
- public void g(int prune);
- public void h(int prune);
- public void i(int prune);
- public void j(int noprune);
- public void k(int prune);
- public void l(int prune);
- public void m(int prune);
- public void n(int prune);
- public void o(int prune);
- public void p(int prune);
- }
-
- interface I3 extends I1 {
- public void a(int noprune);
- public void b(int prune);
- public void c(int noprune);
- public void d(int prune);
- public void e(int prune);
- public void f(int prune);
- public void g(int prune);
- public void h(int prune);
- }
-
- interface I4 extends I2 {
- public void j(int noprune);
- public void k(int prune);
- public void l(int noprune);
- public void m(int prune);
- public void n(int prune);
- public void o(int prune);
- public void p(int prune);
- }
-
-
- static abstract class A1 {
- public void a(int prune){ }
- public void c(int prune){ }
- public void e(int noprune){ }
- public void g(int prune){ }
- abstract public void i(int prune);
- abstract public void k(int prune);
- abstract public void m(int noprune);
- abstract public void o(int prune);
- }
-
- static abstract class A2 extends A1 implements I3 {
- abstract public void b(int prune);
- abstract public void d(int prune);
- abstract public void f(int noprune);
- abstract public void h(int prune);
- public void j(int prune){ }
- public void l(int prune){ }
- public void n(int noprune){ }
- public void p(int prune){ }
- }
-
- static class A3 extends A2 implements I3 {
- public void a(int noprune){ }
- public void b(int noprune){ }
- public void c(int noprune){ }
- public void d(int noprune){ }
- public void e(int noprune){ }
- public void f(int noprune){ }
- public void g(int noprune){ }
- public void h(int prune){ }
- public void i(int noprune){ }
- public void j(int noprune){ }
- public void k(int noprune){ }
- public void l(int noprune){ }
- public void m(int noprune){ }
- public void n(int noprune){ }
- public void o(int noprune){ }
- public void p(int prune){ }
- }
-
- static class A4 extends A2 implements I4 {
- public void a(int noprune){ }
- public void b(int noprune){ }
- public void c(int noprune){ }
- public void d(int noprune){ }
- public void e(int noprune){ }
- public void f(int noprune){ }
- public void g(int prune){ }
- public void h(int noprune){ }
- public void i(int noprune){ }
- public void j(int noprune){ }
- public void k(int noprune){ }
- public void l(int noprune){ }
- public void m(int noprune){ }
- public void n(int noprune){ }
- public void o(int prune){ }
- public void p(int noprune){ }
- }
-
-
- public void onModuleLoad() {
- A4 a4 = new A4();
- A3 a3 = new A3();
- A2 a2 = a4;
- A1 a1 = a4;
- I1 i1 = a4;
- I2 i2 = a4;
- I3 i3 = a4;
- I4 i4 = a4;
-
- i1.a(0);
- i2.b(0);
- i3.c(0);
- i4.d(0);
- a1.e(0);
- a2.f(0);
- a3.g(0);
- a4.h(0);
-
- i1.i(0);
- i2.j(0);
- i3.k(0);
- i4.l(0);
- a1.m(0);
- a2.n(0);
- a3.o(0);
- a4.p(0);
-}
-
-}
diff --git a/dev/core/test/com/google/gwt/dev/jjs/uprefs/Test.java b/dev/core/test/com/google/gwt/dev/jjs/uprefs/Test.java
deleted file mode 100644
index 1f697f2..0000000
--- a/dev/core/test/com/google/gwt/dev/jjs/uprefs/Test.java
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2006 Google Inc. All Rights Reserved.
-package com.google.gwt.dev.jjs.uprefs;
-
-import com.google.gwt.dev.jjs.SimpleWebModeCompilerTestCase;
-
-public class Test extends SimpleWebModeCompilerTestCase {
-
- public void testCompile() throws Exception {
- compile(Main.class.getName(), null);
- }
-
-}
diff --git a/dev/core/test/com/google/gwt/dev/typeinfo/test/TypeOracleBuilderTest.java b/dev/core/test/com/google/gwt/dev/typeinfo/test/TypeOracleBuilderTest.java
index badeca2..89044f4 100644
--- a/dev/core/test/com/google/gwt/dev/typeinfo/test/TypeOracleBuilderTest.java
+++ b/dev/core/test/com/google/gwt/dev/typeinfo/test/TypeOracleBuilderTest.java
@@ -233,7 +233,7 @@
* Tweak this if you want to see the log output.
*/
private TreeLogger createTreeLogger() {
- boolean reallyLog = true;
+ boolean reallyLog = false;
if (reallyLog) {
AbstractTreeLogger logger = new PrintWriterTreeLogger();
logger.setMaxDetail(TreeLogger.ALL);
diff --git a/user/test/com/google/gwt/dev/jjs/CompilerSuite.java b/user/test/com/google/gwt/dev/jjs/CompilerSuite.java
index 2cb94a2..b893286 100644
--- a/user/test/com/google/gwt/dev/jjs/CompilerSuite.java
+++ b/user/test/com/google/gwt/dev/jjs/CompilerSuite.java
@@ -3,8 +3,10 @@
import com.google.gwt.dev.jjs.test.ClassCastTestCase;
import com.google.gwt.dev.jjs.test.CompilerTest;
+import com.google.gwt.dev.jjs.test.Coverage;
import com.google.gwt.dev.jjs.test.HostedTest;
import com.google.gwt.dev.jjs.test.InnerClassTest;
+import com.google.gwt.dev.jjs.test.InnerOuterSuperTest;
import com.google.gwt.dev.jjs.test.MethodBindTest;
import com.google.gwt.dev.jjs.test.MethodCallTest;
import com.google.gwt.dev.jjs.test.MethodInterfaceTest;
@@ -31,6 +33,8 @@
suite.addTestSuite(MethodBindTest.class);
suite.addTestSuite(MiscellaneousTest.class);
suite.addTestSuite(TestBlankInterface.class);
+ suite.addTestSuite(InnerOuterSuperTest.class);
+ suite.addTestSuite(Coverage.class);
// $JUnit-END$
return suite;
diff --git a/user/test/com/google/gwt/dev/jjs/test/Coverage.java b/user/test/com/google/gwt/dev/jjs/test/Coverage.java
new file mode 100644
index 0000000..21dc286
--- /dev/null
+++ b/user/test/com/google/gwt/dev/jjs/test/Coverage.java
@@ -0,0 +1,850 @@
+// Copyright 2006 Google Inc. All Rights Reserved.
+package com.google.gwt.dev.jjs.test;
+
+import com.google.gwt.junit.client.GWTTestCase;
+
+/**
+ * This test is intended to exercise as many code paths and node types as
+ * possible in the Java to JavaScript compiler. This test is not at all intended
+ * to execute correctly.
+ */
+public class Coverage extends CoverageSuper {
+
+ public class Inner extends Super {
+
+ public int x = 3;
+ public final int y = 4;
+
+ public Inner() {
+ // ExplicitConstructorCall
+ this(4);
+ }
+
+ public Inner(int i) {
+ // ExplicitConstructorCall
+ super(i);
+ }
+
+ public void foo() {
+ final int z = this.y;
+
+ new Inner() {
+ {
+ x = z;
+ this.x = z;
+ Inner.this.x = z;
+ next = Coverage.this.next;
+ next.foo();
+ Coverage.this.next.foo();
+ Coverage.this.x = z;
+ Coverage.super.x = z; // inexpressible in Java without name mangling
+ }
+
+ public void foo() {
+ x = z;
+ this.x = z;
+ Inner.this.x = z;
+ next = Coverage.this.next;
+ next.foo();
+ Coverage.this.next.foo();
+ Coverage.this.x = z;
+ Coverage.super.x = z; // inexpressible in Java without name mangling
+ }
+ };
+
+ class NamedLocal extends Inner {
+ public void foo() {
+ Coverage.this.getNext();
+ Inner.this.foo();
+ super.foo();
+ int x = z;
+ }
+ // JDT bug? This works in 5.0 but not in 1.4
+ // TODO: will javac compile it?
+ // class NamedLocalSub extends NamedLocal {
+ // public void foo() {
+ // Main.this.getNext();
+ // Inner.this.foo();
+ // NamedLocal.this.foo();
+ // super.foo();
+ // int x = z;
+ // }
+ // }
+ }
+ testEmptyStatement();
+
+ // new NamedLocal().new NamedLocalSub().foo();
+ new InnerSub().new InnerSubSub().fda();
+ new SecondMain().new FunkyInner();
+ }
+
+ private void testAllocationExpression() {
+ // AllocationExpression
+ o = new Super();
+ assertEquals("3", o.toString());
+ o = new Super(42);
+ assertEquals("42", o.toString());
+ }
+
+ private void testAndAndExpression() {
+ // AND_AND_Expression
+ z = i == 1 && betterNotEval();
+ assertFalse(z);
+ }
+
+ private void testArrayAllocationExpression() {
+ // ArrayAllocationExpression
+ ia = new int[4];
+ assertEquals(4, ia.length);
+ iaa = new int[4][3];
+ assertEquals(4, iaa.length);
+ assertEquals(3, iaa[2].length);
+ iaaa = new int[4][3][];
+ assertEquals(4, iaaa.length);
+ assertEquals(3, iaaa[2].length);
+ assertNull(iaaa[2][2]);
+ }
+
+ private void testArrayInitializer() {
+ // ArrayInitializer
+ ia = new int[] {i, j};
+ assertEquals(2, ia.length);
+ assertEquals(j, ia[1]);
+ iaa = new int[][] {{i, j}};
+ assertEquals(1, iaa.length);
+ assertEquals(2, iaa[0].length);
+ assertEquals(j, iaa[0][1]);
+ iaa = new int[][] { {i, j}, ia};
+ assertEquals(2, iaa.length);
+ assertEquals(2, iaa[0].length);
+ assertEquals(j, iaa[0][1]);
+ assertEquals(ia, iaa[1]);
+ }
+
+ private void testArrayReference() {
+ // ArrayReference
+ i = ia[0];
+ assertEquals(ia[0], i);
+ ia[0] = i;
+ }
+
+ /**
+ * TODO(later): implement asserts
+ */
+ private void testAssertStatement() {
+ // i = 1;
+ // try {
+ // assert i == 2;
+ // fail();
+ // } catch (AssertionError e) {
+ // }
+ // try {
+ // assert i == 3 : "foo";
+ // fail();
+ // } catch (AssertionError e) {
+ // assertEquals("foo", e.getMessage());
+ // }
+ }
+
+ private void testAssignment() {
+ // Assignment
+ i = j;
+ assertEquals(j, i);
+ }
+
+ private void testBinaryExpression() {
+ // BinaryExpression
+ i = 4;
+ i = i + j;
+ assertEquals(6, i);
+ i = i - j;
+ assertEquals(4, i);
+ i = i * j;
+ assertEquals(8, i);
+ i = i / j;
+ assertEquals(4, i);
+ i = i % j;
+ assertEquals(0, i);
+ i = 7;
+ i = i & j;
+ assertEquals(2, i);
+ i = 0;
+ i = i | j;
+ assertEquals(2, i);
+ i = 7;
+ i = i ^ j;
+ assertEquals(5, i);
+ i = i << j;
+ assertEquals(20, i);
+ i = i >> j;
+ assertEquals(5, i);
+ i = i >>> j;
+ assertEquals(1, i);
+ }
+
+ private void testBreakContinueLabelStatement() {
+ // BreakStatement, ContinueStatement
+ z = true;
+ i = 0;
+ x = 0;
+ outer : while (z) {
+ ++x;
+ inner : while (z) {
+ ++i;
+ if (i == 1)
+ continue;
+ if (i == 2)
+ continue outer;
+ if (i == 3)
+ break;
+ if (i == 4)
+ break outer;
+ }
+ }
+ assertEquals(4, i);
+ assertEquals(3, x);
+ }
+
+ private void testCaseSwitchStatement() {
+ // CaseStatement, SwitchStatement
+ i = 6;
+ switch (j) {
+ case 1:
+ ++i;
+ case 2:
+ i += 2;
+ case 3:
+ i += 3;
+ case 4:
+ i += 4;
+ default:
+ i += 0;
+ }
+ assertEquals(15, i);
+ }
+
+ private void testCastExpression() {
+ // CastExpression
+ o = (Super) o;
+ }
+
+ private void testCharLiteral() {
+ // CharLiteral
+ i = 'c';
+ assertEquals("c", String.valueOf((char) i));
+ }
+
+ private void testClassLiteralAccess() {
+ // ClassLiteralAccess
+ o = Super.class;
+ assertEquals("class com.google.gwt.dev.jjs.test.Coverage$Super",
+ o.toString());
+ }
+
+ private void testCompoundAssignment() {
+ // CompoundAssignment
+ i = 4;
+ i += j;
+ assertEquals(6, i);
+ i -= j;
+ assertEquals(4, i);
+ i *= j;
+ assertEquals(8, i);
+ i /= j;
+ assertEquals(4, i);
+ i %= j;
+ assertEquals(0, i);
+ i = 7;
+ i &= j;
+ assertEquals(2, i);
+ i = 0;
+ i |= j;
+ assertEquals(2, i);
+ i = 7;
+ i ^= j;
+ assertEquals(5, i);
+ i <<= j;
+ assertEquals(20, i);
+ i >>= j;
+ assertEquals(5, i);
+ i >>>= j;
+ assertEquals(1, i);
+ }
+
+ private void testConditionalExpression() {
+ // ConditionalExpression
+ z = false;
+ i = z ? 7 : j;
+ assertEquals(j, i);
+ }
+
+ private void testDoStatement() {
+ // DoStatement
+ i = 3;
+ z = false;
+ do
+ i += j;
+ while (z);
+ assertEquals(5, i);
+ }
+
+ private void testEmptyStatement() {
+ // EmptyStatement
+ ;
+ }
+
+ private void testEqualExpression() {
+ // EqualExpression
+ i = 3;
+ assertFalse(i == j);
+ assertTrue(i != j);
+ assertFalse(i < j);
+ assertFalse(i <= j);
+ assertTrue(i > j);
+ assertTrue(i >= j);
+ }
+
+ /**
+ * TODO(5.0) implement for each
+ */
+ private void testForeachStatement() {
+ // for (int q : ia) {
+ // i = q;
+ // }
+ }
+
+ private void testForStatement() {
+ // ForStatement
+ i = 0;
+ for (int q = 0, v = 4; q < v; ++q)
+ i += q;
+ assertEquals(6, i);
+ for (i = 0; i < 4; ++i) {
+ }
+ assertEquals(4, i);
+ }
+
+ private void testIfStatement() {
+ // IfStatement
+ z = false;
+ if (z)
+ fail();
+ if (z)
+ fail();
+ else
+ assertFalse(z);
+ if (!z)
+ assertFalse(z);
+ else
+ fail();
+ }
+
+ private void testInstanceOfExpression() {
+ // InstanceOfExpression
+ Object o = Inner.super;
+ assertTrue(o instanceof Super);
+ }
+
+ private void testLiterals() {
+ // DoubleLiteral
+ d = 3.141592653589793;
+ assertEquals(3, (int) d);
+
+ // FalseLiteral
+ assertFalse(false);
+
+ // FloatLiteral
+ f = 3.1415927f;
+ assertEquals(3, (int) f);
+
+ // IntLiteral
+ i = 4;
+
+ // IntLiteralMinValue
+ i = -2147483648;
+
+ // LongLiteral
+ l = 4L;
+
+ // LongLiteralMinValue
+ l = -9223372036854775808L;
+
+ // NullLiteral
+ o = null;
+
+ // StringLiteral
+ s = "f'oo\b\t\n\f\r\"\\";
+ assertEquals(s, "f" + '\'' + 'o' + 'o' + '\b' + '\t' + '\n' + '\f' + '\r'
+ + '"' + '\\');
+
+ // TrueLiteral
+ assertTrue(true);
+ }
+
+ private void testOrOrExpression() {
+ // OR_OR_Expression
+ i = 1;
+ assertTrue(i == 1 || betterNotEval());
+ }
+
+ private void testPostfixExpression() {
+ // PostfixExpression
+ assertEquals(1, i++);
+ assertEquals(2, i--);
+ }
+
+ private void testPrefixExpression() {
+ // PrefixExpression
+ assertEquals(2, ++i);
+ assertEquals(1, --i);
+ }
+
+ private void testQualifiedAllocationExpression() {
+ // QualifiedAllocationExpression
+ o = new Inner();
+ o = Coverage.this.new Inner();
+ o = new Coverage().new Inner();
+ }
+
+ private void testQualifiedNameReference() {
+ // QualifiedNameReference
+ // TODO: fields????
+ Coverage m = new Coverage();
+ ia = new int[2];
+ assertEquals("1", 2, ia.length);
+ assertEquals("2", 2, m.j);
+ assertEquals("3", 4, m.y);
+ assertEquals("4", 2, new Coverage().j);
+ assertEquals("5", 4, new Coverage().y);
+ assertEquals("6", 2, m.next.j);
+ assertEquals("7", 4, m.next.y);
+ assertEquals("8", 2, new Coverage().next.j);
+ assertEquals("9", 4, new Coverage().next.y);
+ assertEquals("A", 2, m.getNext().j);
+ assertEquals("B", 4, m.getNext().y);
+ assertEquals("C", 2, new Coverage().getNext().j);
+ assertEquals("D", 4, new Coverage().getNext().y);
+ }
+
+ private void testReferenceCalls() {
+ // MessageSend, QualifiedSuperReference, QualifiedThisReference,
+ // SuperReference, ThisReference
+ Inner other = new Inner();
+ foo();
+ this.foo();
+ other.foo();
+ Coverage.this.foo();
+ super.foo();
+ Inner.super.foo();
+ Coverage.super.foo();
+
+ sfoo();
+ this.sfoo();
+ Coverage.sfoo();
+ Inner.sfoo();
+ Super.sfoo();
+ other.sfoo();
+ Coverage.this.sfoo();
+ super.sfoo();
+ Inner.super.sfoo();
+ Coverage.super.sfoo();
+
+ }
+
+ private Inner testReferences() {
+ // FieldReference, QualifiedSuperReference, QualifiedThisReference,
+ // SuperReference, ThisReference
+ Inner other = new Inner();
+ i = 3;
+ i = i + j + x + y;
+ assertEquals(12, i);
+ i = this.i + this.j + this.x + this.y;
+ assertEquals(21, i);
+ i = Coverage.i + Coverage.j;
+ assertEquals(8, i);
+ i = Inner.i + Inner.j;
+ assertEquals(10, i);
+ i = Super.i + Super.j;
+ assertEquals(12, i);
+ i = other.i + other.j + other.x + other.y;
+ assertEquals(21, i);
+ i = Inner.this.i + Inner.this.j + Inner.this.x + Inner.this.y;
+ assertEquals(30, i);
+ i = Coverage.this.i + Coverage.this.j + Coverage.this.x + Coverage.this.y;
+ assertEquals(15, i);
+ i = super.i + super.j + super.x + super.y;
+ assertEquals(25, i);
+ i = Inner.super.i + Inner.super.j + Inner.super.x + Inner.super.y;
+ assertEquals(35, i);
+ i = Coverage.super.i + Coverage.super.j + Coverage.super.x
+ + Coverage.super.y;
+ assertEquals(10, i);
+ return other;
+ }
+
+ private void testReturnStatement() {
+ // ReturnStatement
+ assertEquals("foo", doReturnFoo());
+ if (true)
+ return;
+ fail();
+ }
+
+ private void testSynchronizedStatement() {
+ // SynchronizedStatement
+ synchronized (inner) {
+ inner.i = i;
+ }
+ }
+
+ private void testTryCatchFinallyThrowStatement() {
+ // ThrowStatement, TryStatement
+ try {
+ i = 3;
+ if (true) {
+ throw new Exception();
+ }
+ fail();
+ } catch (Exception e) {
+ } finally {
+ i = 7;
+ }
+ assertEquals(7, i);
+
+ try {
+ try {
+ i = 3;
+ } catch (Throwable t) {
+ fail();
+ }
+ } catch (Throwable t) {
+ fail();
+ } finally {
+ i = 7;
+ }
+ assertEquals(7, i);
+
+ }
+
+ private void testUnaryExpression() {
+ // UnaryExpression
+ i = 4;
+ assertEquals(-4, -i);
+ assertEquals(-5, ~i);
+ z = true;
+ assertFalse(!z);
+ }
+
+ private void testWhileStatement() {
+ // WhileStatement
+ z = false;
+ while (z)
+ fail();
+
+ while (z) {
+ fail();
+ }
+ }
+
+ }
+
+ public static class Super {
+ public static int i = 2;
+ public static final int j = 2;
+
+ // Initializer
+ static {
+ Super.i = 1;
+ }
+
+ // Initializer
+ static {
+ Super.i = 3;
+ }
+
+ protected static void sfoo() {
+ }
+
+ public int x = 2;
+ public final int y = 4;
+
+ // Initializer
+ {
+ x = 1;
+ }
+
+ // Initializer
+ {
+ x = 3;
+ }
+
+ public Super() {
+ }
+
+ public Super(int i) {
+ x = i;
+ }
+
+ public void foo() {
+ }
+
+ public String toString() {
+ return String.valueOf(x);
+ }
+
+ }
+
+ private static class InnerSub extends Inner {
+ private class InnerSubSub extends InnerSub {
+ {
+ asdfasdfasdf = InnerSub.this.asdfasdfasdf;
+ InnerSub.this.asdfasdfasdf = asdfasdfasdf;
+ asdfasdfasdf = super.asdfasdfasdf;
+ super.asdfasdfasdf = asdfasdfasdf;
+ }
+
+ void fda() {
+ asdfasdfasdf = InnerSub.this.asdfasdfasdf;
+ InnerSub.this.asdfasdfasdf = asdfasdfasdf;
+ asdfasdfasdf = super.asdfasdfasdf;
+ super.asdfasdfasdf = asdfasdfasdf;
+ }
+ }
+
+ private int asdfasdfasdf = 3;
+
+ InnerSub() {
+ new Coverage().super();
+ }
+ }
+
+ private static class SecondMain {
+ private class FunkyInner extends Inner {
+ FunkyInner() {
+ new Coverage().super();
+ }
+ }
+ }
+
+ public static double d;
+
+ public static float f;
+
+ public static int i = 1 + 2 + 3;
+
+ public static int[] ia;
+
+ public static int[][] iaa;
+
+ public static int[][][] iaaa;
+
+ public static final int j = 2;
+
+ public static long l;
+
+ public static Object o;
+
+ public static String s = "foo";
+
+ public static Coverage singleton;
+
+ public static boolean z;
+
+ public static boolean betterNotEval() {
+ fail();
+ return false;
+ }
+
+ protected static void sfoo() {
+ }
+
+ private static String doReturnFoo() {
+ if (true)
+ return "foo";
+ fail();
+ return "bar";
+ }
+
+ public final Inner inner = new Inner();
+
+ public Coverage next;
+
+ public int x = 3;
+
+ public final int y = 4;
+
+ public Coverage() {
+ if (singleton == null) {
+ singleton = this;
+ }
+ next = this;
+ }
+
+ public void foo() {
+ }
+
+ public String getModuleName() {
+ return "com.google.gwt.dev.jjs.CompilerSuite";
+ }
+
+ public Coverage getNext() {
+ return next;
+ }
+
+ public void testAllocationExpression() {
+ inner.testAllocationExpression();
+ }
+
+ public void testAndAndExpression() {
+ inner.testAndAndExpression();
+ }
+
+ public void testArrayAllocationExpression() {
+ inner.testArrayAllocationExpression();
+ }
+
+ public void testArrayInitializer() {
+ inner.testArrayInitializer();
+ }
+
+ public void testArrayReference() {
+ inner.testArrayReference();
+ }
+
+ public void testAssertStatement() {
+ inner.testAssertStatement();
+ }
+
+ public void testAssignment() {
+ inner.testAssignment();
+ }
+
+ public void testBinaryExpression() {
+ inner.testBinaryExpression();
+ }
+
+ public void testBreakContinueLabelStatement() {
+ inner.testBreakContinueLabelStatement();
+ }
+
+ public void testCaseSwitchStatement() {
+ inner.testCaseSwitchStatement();
+ }
+
+ public void testCastExpression() {
+ inner.testCastExpression();
+ }
+
+ public void testCharLiteral() {
+ inner.testCharLiteral();
+ }
+
+ public void testClassLiteralAccess() {
+ inner.testClassLiteralAccess();
+ }
+
+ public void testCompoundAssignment() {
+ inner.testCompoundAssignment();
+ }
+
+ public void testConditionalExpression() {
+ inner.testConditionalExpression();
+ }
+
+ public void testDoStatement() {
+ inner.testDoStatement();
+ }
+
+ public void testEmptyStatement() {
+ inner.testEmptyStatement();
+ }
+
+ public void testEqualExpression() {
+ inner.testEqualExpression();
+ }
+
+ public void testForeachStatement() {
+ inner.testForeachStatement();
+ }
+
+ public void testForStatement() {
+ inner.testForStatement();
+ }
+
+ public void testIfStatement() {
+ inner.testIfStatement();
+ }
+
+ public void testInstanceOfExpression() {
+ inner.testInstanceOfExpression();
+ }
+
+ public void testLiterals() {
+ inner.testLiterals();
+ }
+
+ public void testOrOrExpression() {
+ inner.testOrOrExpression();
+ }
+
+ public void testPostfixExpression() {
+ inner.testPostfixExpression();
+ }
+
+ public void testPrefixExpression() {
+ inner.testPrefixExpression();
+ }
+
+ public void testQualifiedAllocationExpression() {
+ inner.testQualifiedAllocationExpression();
+ }
+
+ public void testQualifiedNameReference() {
+ inner.testQualifiedNameReference();
+ }
+
+ public void testReferenceCalls() {
+ inner.testReferenceCalls();
+ }
+
+ public void testReferences() {
+ inner.testReferences();
+ }
+
+ public void testReturnStatement() {
+ inner.testReturnStatement();
+ }
+
+ public void testSynchronizedStatement() {
+ inner.testSynchronizedStatement();
+ }
+
+ public void testTryCatchFinallyThrowStatement() {
+ inner.testTryCatchFinallyThrowStatement();
+ }
+
+ public void testUnaryExpression() {
+ inner.testUnaryExpression();
+ }
+
+ public void testWhileStatement() {
+ inner.testWhileStatement();
+ }
+
+}
+
+abstract class CoverageSuper extends GWTTestCase {
+
+ public static int i = 1;
+ public static final int j = 2;
+
+ protected static void sfoo() {
+ }
+
+ public int x = 3;
+ public final int y = 4;
+
+ public void foo() {
+ }
+
+}
diff --git a/dev/core/test/com/google/gwt/dev/jjs/inneroutersuper/Main.java b/user/test/com/google/gwt/dev/jjs/test/InnerOuterSuperTest.java
similarity index 81%
rename from dev/core/test/com/google/gwt/dev/jjs/inneroutersuper/Main.java
rename to user/test/com/google/gwt/dev/jjs/test/InnerOuterSuperTest.java
index 9a0f01a..95734c3 100644
--- a/dev/core/test/com/google/gwt/dev/jjs/inneroutersuper/Main.java
+++ b/user/test/com/google/gwt/dev/jjs/test/InnerOuterSuperTest.java
@@ -1,55 +1,18 @@
// Copyright 2006 Google Inc. All Rights Reserved.
-package com.google.gwt.dev.jjs.inneroutersuper;
+package com.google.gwt.dev.jjs.test;
-public class Main {
+import com.google.gwt.junit.client.GWTTestCase;
- public void onModuleLoad() {
- main(null);
- }
-
- public static void print(int x) {
-// System.out.println(x);
- }
-
- public static void main(String[] args) {
- Outer outer = new Outer(1);
- Outer.OuterIsSuper outerIsSuper = outer.new OuterIsSuper(2);
-
- {
- // QualifiedAlloc: outer becomes Outer or OuterIsSuper???
- Outer.OuterIsNotSuper outerIsNotSuper = outerIsSuper.new OuterIsNotSuper();
- int whatIsIt = outerIsNotSuper.getValue();
- print(whatIsIt);
- }
-
- {
- // [unqualified]Alloc: outer becomes Outer or OuterIsSuper???
- Outer.OuterIsNotSuper outerIsNotSuper = outerIsSuper.unqualifiedAlloc();
- int whatIsIt = outerIsNotSuper.getValue();
- print(whatIsIt);
- }
-
- {
- // QualifiedSupercall: outer becomes Outer or OuterIsSuper???
- Outer.TestQualifiedSuperCall testQualifiedSuperCall = new Outer.TestQualifiedSuperCall();
- int whatIsIt = testQualifiedSuperCall.getValue();
- print(whatIsIt);
- }
-
- {
- // UnqualifiedSupercall: outer becomes Outer or OuterIsSuper???
- Outer.TestUnqualifiedSuperCall testUnqualifiedSuperCall = outerIsSuper.new TestUnqualifiedSuperCall();
- int whatIsIt = testUnqualifiedSuperCall.getValue();
- print(whatIsIt);
- }
- }
+public class InnerOuterSuperTest extends GWTTestCase {
public static class Outer {
- protected final int value;
+ public class OuterIsNotSuper {
- public Outer(int i) {
- value = i;
+ public int getValue() {
+ return value;
+ }
+
}
public class OuterIsSuper extends Outer {
@@ -64,14 +27,6 @@
}
- public class OuterIsNotSuper {
-
- public int getValue() {
- return value;
- }
-
- }
-
public static class TestQualifiedSuperCall extends OuterIsNotSuper {
public TestQualifiedSuperCall() {
new Outer(1).new OuterIsSuper(2).super();
@@ -83,6 +38,49 @@
super();
}
}
+
+ protected final int value;
+
+ public Outer(int i) {
+ value = i;
+ }
+ }
+
+ public String getModuleName() {
+ return "com.google.gwt.dev.jjs.CompilerSuite";
+ }
+
+ public void testInnerOuterSuper() {
+ Outer outer = new Outer(1);
+ Outer.OuterIsSuper outerIsSuper = outer.new OuterIsSuper(2);
+
+ {
+ // QualifiedAlloc: outer becomes Outer or OuterIsSuper???
+ Outer.OuterIsNotSuper outerIsNotSuper = outerIsSuper.new OuterIsNotSuper();
+ int whatIsIt = outerIsNotSuper.getValue();
+ assertEquals(2, whatIsIt);
+ }
+
+ {
+ // [unqualified]Alloc: outer becomes Outer or OuterIsSuper???
+ Outer.OuterIsNotSuper outerIsNotSuper = outerIsSuper.unqualifiedAlloc();
+ int whatIsIt = outerIsNotSuper.getValue();
+ assertEquals(2, whatIsIt);
+ }
+
+ {
+ // QualifiedSupercall: outer becomes Outer or OuterIsSuper???
+ Outer.TestQualifiedSuperCall testQualifiedSuperCall = new Outer.TestQualifiedSuperCall();
+ int whatIsIt = testQualifiedSuperCall.getValue();
+ assertEquals(2, whatIsIt);
+ }
+
+ {
+ // UnqualifiedSupercall: outer becomes Outer or OuterIsSuper???
+ Outer.TestUnqualifiedSuperCall testUnqualifiedSuperCall = outerIsSuper.new TestUnqualifiedSuperCall();
+ int whatIsIt = testUnqualifiedSuperCall.getValue();
+ assertEquals(2, whatIsIt);
+ }
}
}
\ No newline at end of file