Revision: 6812 Author: [email protected] Date: Tue Nov 10 12:03:27 2009 Log: Merging tr...@6789, 6790, 6791 into this branch for i in 6789 6790 6791 ; do svn merge --ignore-ancestry -c $i https://google-web-toolkit.googlecode.com/svn/trunk .; done
Patch by: scottb http://code.google.com/p/google-web-toolkit/source/detail?r=6812 Added: /releases/2.0/dev/core/test/com/google/gwt/dev/jjs/ast /releases/2.0/dev/core/test/com/google/gwt/dev/jjs/impl/RunAsyncNameTest.java Deleted: /releases/2.0/dev/core/test/com/google/gwt/dev/javac/JProgramLastFragmentLoadingBeforeTest.java /releases/2.0/dev/core/test/com/google/gwt/dev/javac/RunAsyncNameTest.java Modified: /releases/2.0/branch-info.txt /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/Rule.java /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/RuleFail.java /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/RuleGenerateWith.java /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/RuleReplaceWith.java /releases/2.0/dev/core/src/com/google/gwt/dev/javac/StandardGeneratorContext.java /releases/2.0/dev/core/src/com/google/gwt/dev/javac/TypeOracleMediator.java /releases/2.0/dev/core/test/com/google/gwt/core/ext/typeinfo/JEnumTypeTest.java /releases/2.0/dev/core/test/com/google/gwt/dev/javac/JavaCompilationSuite.java /releases/2.0/dev/core/test/com/google/gwt/dev/jjs/impl/OptimizerTestBase.java Replaced: /releases/2.0/dev/core/test/com/google/gwt/dev/jjs/ast/JProgramLastFragmentLoadingBeforeTest.java ======================================= --- /dev/null +++ /releases/2.0/dev/core/test/com/google/gwt/dev/jjs/impl/RunAsyncNameTest.java Tue Nov 10 12:03:27 2009 @@ -0,0 +1,80 @@ +/* + * Copyright 2009 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.google.gwt.dev.jjs.impl; + +import com.google.gwt.core.ext.TreeLogger; +import com.google.gwt.core.ext.UnableToCompleteException; +import com.google.gwt.dev.javac.impl.MockJavaResource; +import com.google.gwt.dev.util.UnitTestTreeLogger; + +/** + * This class tests naming of runAsync calls. Mostly it tests names that are + * invalid. + */ +public class RunAsyncNameTest extends OptimizerTestBase { + @Override + public void setUp() { + sourceOracle.addOrReplace(new MockJavaResource("test.CallRunAsync") { + @Override + protected CharSequence getContent() { + StringBuffer code = new StringBuffer(); + code.append("package test;\n"); + code.append("import com.google.gwt.core.client.GWT;\n"); + code.append("public class CallRunAsync {\n"); + code.append(" public static int notAmethod;"); + code.append(" public static void call0() { }\n"); + code.append(" public static void call1() {\n"); + code.append(" GWT.runAsync(null);\n"); + code.append(" }\n"); + code.append(" public static void call2() {\n"); + code.append(" GWT.runAsync(null);\n"); + code.append(" GWT.runAsync(null);\n"); + code.append(" }\n"); + code.append("}\n"); + return code; + } + }); + } + + /** + * Tests that it's an error to call the 2-argument version of GWT.runAsync + * with anything but a class literal. + */ + public void testNonLiteralInCall() { + UnitTestTreeLogger logger; + { + UnitTestTreeLogger.Builder builder = new UnitTestTreeLogger.Builder(); + builder.setLowestLogLevel(TreeLogger.ERROR); + builder.expectError("Errors in /mock/test/EntryPoint.java", null); + builder.expectError( + "Line 5: Only class literals may be used to name a call to GWT.runAsync()", + null); + builder.expectError("Cannot proceed due to previous errors", null); + logger = builder.createLogger(); + this.logger = logger; + } + + addSnippetImport("com.google.gwt.core.client.GWT"); + try { + compileSnippet("void", "GWT.runAsync((new Object()).getClass(), null);"); + fail("Expected compilation to fail"); + } catch (UnableToCompleteException e) { + // expected + } + + logger.assertCorrectLogEntries(); + } +} ======================================= --- /releases/2.0/dev/core/test/com/google/gwt/dev/javac/JProgramLastFragmentLoadingBeforeTest.java Mon Nov 2 12:44:54 2009 +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2009 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.google.gwt.dev.javac; - -import com.google.gwt.dev.jjs.ast.JProgram; -import com.google.gwt.dev.util.collect.Lists; - -import junit.framework.TestCase; - -import java.util.List; - -/** - * Tests {...@link JProgram#lastFragmentLoadingBefore(int, int...)}. - */ -public class JProgramLastFragmentLoadingBeforeTest extends TestCase { - - public void testBasics() { - List<Integer> initialSeq = Lists.create(4, 3, 2); - int numSps = 10; - - // Very simple - assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0, - 1, 2, 3)); - - // Equal fragments load at the same time - assertEquals(0, - JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0, 0)); - assertEquals(1, - JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 1, 1)); - assertEquals(3, - JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 3, 3)); - assertEquals(6, - JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 6, 6)); - assertEquals(11, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 11, - 11)); - - // Zero loads first - assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 11, - 0)); - assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 10, - 0)); - assertEquals(0, - JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 3, 0)); - - // Initial sequence fragments load before all others - assertEquals(3, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 3, - 10)); - assertEquals(3, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 10, - 3)); - - // Earlier initial sequence fragments load before the others - assertEquals(4, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 2, - 3, 4)); - assertEquals(3, - JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 2, 3)); - assertEquals(4, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 4, - 3, 2)); - - // For non-equal exclusive fragments, leftovers is the common predecessor - assertEquals(11, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 1, - 7)); - - // Leftovers is before any exclusive - assertEquals(11, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 7, - 11)); - } - - public void testWithEmptyInitial() { - List<Integer> initialSeq = Lists.create(); - int numSps = 10; - - // Simple case - assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0, - 1, 2, 3)); - - // Equal fragments load at the same time - assertEquals(0, - JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0, 0)); - assertEquals(6, - JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 6, 6)); - assertEquals(11, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 11, - 11)); - - // Zero loads first - assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 11, - 0)); - assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 10, - 0)); - assertEquals(0, - JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 3, 0)); - - // For non-equal exclusive fragments, leftovers is the common predecessor - assertEquals(11, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 1, - 7)); - - // Leftovers is before any exclusive - assertEquals(11, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 7, - 11)); - - // With just one argument, return it - assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0)); - assertEquals(3, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 3)); - assertEquals(11, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 11)); - } - - public void testWithNoSplitPoints() { - List<Integer> initialSeq = Lists.create(); - int numSps = 0; - - assertEquals(0, - JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0, 0)); - assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0, - 0, 0)); - assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0)); - } -} ======================================= --- /releases/2.0/dev/core/test/com/google/gwt/dev/javac/RunAsyncNameTest.java Tue Sep 8 11:07:39 2009 +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2009 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package com.google.gwt.dev.javac; - -import com.google.gwt.core.ext.TreeLogger; -import com.google.gwt.core.ext.UnableToCompleteException; -import com.google.gwt.dev.javac.impl.MockJavaResource; -import com.google.gwt.dev.jjs.impl.OptimizerTestBase; -import com.google.gwt.dev.util.UnitTestTreeLogger; - -/** - * This class tests naming of runAsync calls. Mostly it tests names that are - * invalid. - */ -public class RunAsyncNameTest extends OptimizerTestBase { - @Override - public void setUp() { - sourceOracle.addOrReplace(new MockJavaResource("test.CallRunAsync") { - @Override - protected CharSequence getContent() { - StringBuffer code = new StringBuffer(); - code.append("package test;\n"); - code.append("import com.google.gwt.core.client.GWT;\n"); - code.append("public class CallRunAsync {\n"); - code.append(" public static int notAmethod;"); - code.append(" public static void call0() { }\n"); - code.append(" public static void call1() {\n"); - code.append(" GWT.runAsync(null);\n"); - code.append(" }\n"); - code.append(" public static void call2() {\n"); - code.append(" GWT.runAsync(null);\n"); - code.append(" GWT.runAsync(null);\n"); - code.append(" }\n"); - code.append("}\n"); - return code; - } - }); - } - - /** - * Tests that it's an error to call the 2-argument version of GWT.runAsync - * with anything but a class literal. - */ - public void testNonLiteralInCall() throws UnableToCompleteException { - UnitTestTreeLogger logger; - { - UnitTestTreeLogger.Builder builder = new UnitTestTreeLogger.Builder(); - builder.setLowestLogLevel(TreeLogger.ERROR); - builder.expectError("Errors in /mock/test/EntryPoint.java", null); - builder.expectError( - "Line 5: Only class literals may be used to name a call to GWT.runAsync()", - null); - builder.expectError("Cannot proceed due to previous errors", null); - logger = builder.createLogger(); - this.logger = logger; - } - - addSnippetImport("com.google.gwt.core.client.GWT"); - try { - compileSnippet("void", "GWT.runAsync((new Object()).getClass(), null);"); - fail("Expected compilation to fail"); - } catch (UnableToCompleteException e) { - // expected - } - - logger.assertCorrectLogEntries(); - } -} ======================================= --- /releases/2.0/branch-info.txt Tue Nov 10 12:00:29 2009 +++ /releases/2.0/branch-info.txt Tue Nov 10 12:03:27 2009 @@ -509,3 +509,12 @@ Fixes custom PluralRule classes that are nested svn merge --ignore-ancestry -c6809 \ https://google-web-toolkit.googlecode.com/svn/trunk/ . + +tr...@6789,6790,6791 were merged into this branch + -- Shuffles some test classes around; adds missing tests to +JavaCompilationSuite convenience test suite. + -- Model Enum.valueOf and Enum.values in TypeOracle since they are an +implicit part of the language. + -- Generators now exist per-StandardGeneratorContext to avoid concurrency +issues. + for i in 6789 6790 6791 ; do svn merge --ignore-ancestry -c $i https://google-web-toolkit.googlecode.com/svn/trunk .; done ======================================= --- /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java Wed Nov 4 06:59:39 2009 +++ /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java Tue Nov 10 12:03:27 2009 @@ -336,8 +336,14 @@ return new FullConditionSchema(rule.getRootCondition()); } - protected Schema __generate_with_begin(Generator gen) { - RuleGenerateWith rule = new RuleGenerateWith(gen); + protected Schema __generate_with_begin(Class<? extends Generator> generator) + throws UnableToCompleteException { + if (!Generator.class.isAssignableFrom(generator)) { + logger.log(TreeLogger.ERROR, "A generator must extend " + + Generator.class.getName(), null); + throw new UnableToCompleteException(); + } + RuleGenerateWith rule = new RuleGenerateWith(generator); moduleDef.getRules().prepend(rule); return new FullConditionSchema(rule.getRootCondition()); } @@ -1147,8 +1153,6 @@ ConfigurationProperty.class); private boolean foundAnyPublic; private boolean foundExplicitSourceOrSuperSource; - private final ObjAttrCvt<Generator> genAttrCvt = new ObjAttrCvt<Generator>( - Generator.class); private final JsProgram jsPgm = new JsProgram(); private final LinkerNameAttrCvt linkerNameAttrCvt = new LinkerNameAttrCvt(); private final ModuleDefLoader loader; @@ -1180,7 +1184,6 @@ configurationPropAttrCvt); registerAttributeConverter(PropertyValue.class, propValueAttrCvt); registerAttributeConverter(PropertyValue[].class, propValueArrayAttrCvt); - registerAttributeConverter(Generator.class, genAttrCvt); registerAttributeConverter(LinkerName.class, linkerNameAttrCvt); registerAttributeConverter(NullableName.class, nullableNameAttrCvt); registerAttributeConverter(Class.class, classAttrCvt); ======================================= --- /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/Rule.java Mon Aug 17 09:47:12 2009 +++ /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/Rule.java Tue Nov 10 12:03:27 2009 @@ -15,9 +15,9 @@ */ package com.google.gwt.dev.cfg; -import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; +import com.google.gwt.dev.javac.StandardGeneratorContext; /** * Abstract base class for various kinds of deferred binding rules. @@ -30,14 +30,16 @@ return rootCondition; } - public boolean isApplicable(TreeLogger logger, GeneratorContext context, - String typeName) throws UnableToCompleteException { + public boolean isApplicable(TreeLogger logger, + StandardGeneratorContext context, String typeName) + throws UnableToCompleteException { return rootCondition.isTrue(logger, context.getPropertyOracle(), context.getTypeOracle(), typeName); } - public abstract String realize(TreeLogger logger, GeneratorContext context, - String typeName) throws UnableToCompleteException; + public abstract String realize(TreeLogger logger, + StandardGeneratorContext context, String typeName) + throws UnableToCompleteException; protected void dispose() { } ======================================= --- /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/RuleFail.java Wed Dec 27 12:51:02 2006 +++ /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/RuleFail.java Tue Nov 10 12:03:27 2009 @@ -15,16 +15,16 @@ */ package com.google.gwt.dev.cfg; -import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; +import com.google.gwt.dev.javac.StandardGeneratorContext; /** * A rule to explicitly fail during a deferred binding requrest. */ public class RuleFail extends Rule { - public String realize(TreeLogger logger, GeneratorContext context, + public String realize(TreeLogger logger, StandardGeneratorContext context, String typeName) throws UnableToCompleteException { logger.log(TreeLogger.ERROR, "Deferred binding request failed for type '" + typeName + "'", null); ======================================= --- /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/RuleGenerateWith.java Tue Jul 28 21:11:02 2009 +++ /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/RuleGenerateWith.java Tue Nov 10 12:03:27 2009 @@ -16,7 +16,6 @@ package com.google.gwt.dev.cfg; import com.google.gwt.core.ext.Generator; -import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.dev.javac.StandardGeneratorContext; @@ -28,51 +27,18 @@ */ public class RuleGenerateWith extends Rule { - private Generator generator; - - public RuleGenerateWith(Generator generator) { - this.generator = generator; + private Class<? extends Generator> generatorClass; + + public RuleGenerateWith(Class<? extends Generator> generatorClass) { + this.generatorClass = generatorClass; } - public String realize(TreeLogger logger, GeneratorContext context, + public String realize(TreeLogger logger, StandardGeneratorContext context, String typeName) throws UnableToCompleteException { - - String msg = "Invoking " + toString(); - logger = logger.branch(TreeLogger.DEBUG, msg, null); - - if (context instanceof StandardGeneratorContext) { - ((StandardGeneratorContext) context).setCurrentGenerator(generator.getClass()); - } - - long before = System.currentTimeMillis(); - try { - String className = generator.generate(logger, context, typeName); - long after = System.currentTimeMillis(); - if (className == null) { - msg = "Generator returned null, so the requested type will be used as is"; - } else { - msg = "Generator returned class '" + className + "'"; - } - logger.log(TreeLogger.DEBUG, msg, null); - - msg = "Finished in " + (after - before) + " ms"; - logger.log(TreeLogger.DEBUG, msg, null); - - return className; - } catch (RuntimeException e) { - logger.log(TreeLogger.ERROR, "Generator '" - + generator.getClass().getName() - + "' threw threw an exception while rebinding '" + typeName + "'", e); - throw new UnableToCompleteException(); - } + return context.runGenerator(logger, generatorClass, typeName); } public String toString() { - return "<generate-with class='" + generator.getClass().getName() + "'/>"; - } - - @Override - protected void dispose() { - generator = null; + return "<generate-with class='" + generatorClass.getName() + "'/>"; } } ======================================= --- /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/RuleReplaceWith.java Wed Dec 27 12:51:02 2006 +++ /releases/2.0/dev/core/src/com/google/gwt/dev/cfg/RuleReplaceWith.java Tue Nov 10 12:03:27 2009 @@ -15,9 +15,9 @@ */ package com.google.gwt.dev.cfg; -import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; +import com.google.gwt.dev.javac.StandardGeneratorContext; /** * A rule to replace the type being rebound with an explicitly named class. @@ -34,7 +34,7 @@ return replacementTypeName; } - public String realize(TreeLogger logger, GeneratorContext context, + public String realize(TreeLogger logger, StandardGeneratorContext context, String typeName) throws UnableToCompleteException { return replacementTypeName; } ======================================= --- /releases/2.0/dev/core/src/com/google/gwt/dev/javac/StandardGeneratorContext.java Thu Nov 5 11:49:42 2009 +++ /releases/2.0/dev/core/src/com/google/gwt/dev/javac/StandardGeneratorContext.java Tue Nov 10 12:03:27 2009 @@ -272,6 +272,8 @@ private final Map<PrintWriter, Generated> uncommittedGeneratedCupsByPrintWriter = new IdentityHashMap<PrintWriter, Generated>(); + private final Map<Class<? extends Generator>, Generator> generators = new IdentityHashMap<Class<? extends Generator>, Generator>(); + /** * Normally, the compiler host would be aware of the same types that are * available in the supplied type oracle although it isn't strictly required. @@ -426,6 +428,46 @@ public final TypeOracle getTypeOracle() { return compilationState.getTypeOracle(); } + + public String runGenerator(TreeLogger logger, + Class<? extends Generator> generatorClass, String typeName) + throws UnableToCompleteException { + String msg = "Invoking " + toString(); + logger = logger.branch(TreeLogger.DEBUG, msg, null); + + Generator generator = generators.get(generatorClass); + if (generator == null) { + try { + generator = generatorClass.newInstance(); + generators.put(generatorClass, generator); + } catch (Throwable e) { + logger.log(TreeLogger.ERROR, + "Unexpected error trying to instantiate Generator '" + + generatorClass.getName() + "'", e); + throw new UnableToCompleteException(); + } + } + + setCurrentGenerator(generatorClass); + + long before = System.currentTimeMillis(); + try { + String className = generator.generate(logger, this, typeName); + long after = System.currentTimeMillis(); + if (className == null) { + msg = "Generator returned null, so the requested type will be used as is"; + } else { + msg = "Generator returned class '" + className + "'"; + } + msg += "; in " + (after - before) + " ms"; + logger.log(TreeLogger.DEBUG, msg, null); + return className; + } catch (RuntimeException e) { + logger.log(TreeLogger.ERROR, "Generator '" + generatorClass.getName() + + "' threw threw an exception while rebinding '" + typeName + "'", e); + throw new UnableToCompleteException(); + } + } public void setCurrentGenerator(Class<? extends Generator> currentGenerator) { this.currentGenerator = currentGenerator; ======================================= --- /releases/2.0/dev/core/src/com/google/gwt/dev/javac/TypeOracleMediator.java Tue Nov 10 11:37:16 2009 +++ /releases/2.0/dev/core/src/com/google/gwt/dev/javac/TypeOracleMediator.java Tue Nov 10 12:03:27 2009 @@ -933,13 +933,6 @@ // Leave enum constructors out of TypeOracle return true; } - if (type.isEnum() != null - && (methodData.getAccess() & Opcodes.ACC_STATIC) != 0) { - // Special-case synthetic static methods that aren't marked synthetic - if ("values".equals(name) || "valueOf".equals(name)) { - return true; - } - } JAbstractMethod method; ======================================= --- /releases/2.0/dev/core/test/com/google/gwt/core/ext/typeinfo/JEnumTypeTest.java Tue Nov 10 11:37:16 2009 +++ /releases/2.0/dev/core/test/com/google/gwt/core/ext/typeinfo/JEnumTypeTest.java Tue Nov 10 12:03:27 2009 @@ -121,7 +121,7 @@ JClassType type = typeOracle.getType(MyEnum.class.getName()); JEnumType enumType = validateTypeIsEnum(type); - assertEquals(1, enumType.getMethods().length); + assertEquals(3, enumType.getMethods().length); } /** ======================================= --- /releases/2.0/dev/core/test/com/google/gwt/dev/javac/JavaCompilationSuite.java Tue Nov 10 11:37:16 2009 +++ /releases/2.0/dev/core/test/com/google/gwt/dev/javac/JavaCompilationSuite.java Tue Nov 10 12:03:27 2009 @@ -15,6 +15,9 @@ */ package com.google.gwt.dev.javac; +import com.google.gwt.dev.javac.asm.CollectClassDataTest; +import com.google.gwt.dev.javac.asm.CollectReferencesVisitorTest; +import com.google.gwt.dev.javac.asm.ResolveGenericsTest; import com.google.gwt.dev.javac.impl.JdtBehaviorTest; import junit.framework.Test; @@ -27,18 +30,28 @@ public static Test suite() { TestSuite suite = new TestSuite(JavaCompilationSuite.class.getName()); + suite.addTestSuite(ArtificialRescueCheckerTest.class); suite.addTestSuite(BinaryTypeReferenceRestrictionsCheckerTest.class); suite.addTestSuite(CompilationStateTest.class); suite.addTestSuite(CompilationUnitFileReferenceTest.class); suite.addTestSuite(GWTProblemTest.class); suite.addTestSuite(JavaSourceParserTest.class); - suite.addTestSuite(JdtBehaviorTest.class); suite.addTestSuite(JdtCompilerTest.class); - suite.addTestSuite(JProgramLastFragmentLoadingBeforeTest.class); suite.addTestSuite(JSORestrictionsTest.class); suite.addTestSuite(JsniCheckerTest.class); suite.addTestSuite(TypeOracleMediatorTest.class); + suite.addTestSuite(CollectClassDataTest.class); + suite.addTestSuite(CollectReferencesVisitorTest.class); + suite.addTestSuite(ResolveGenericsTest.class); + + suite.addTestSuite(JdtBehaviorTest.class); + + // TODO: Move these to another package. + suite.addTestSuite(GeneratedClassnameComparatorTest.class); + suite.addTestSuite(GeneratedClassnameFinderTest.class); + suite.addTestSuite(GeneratedClassnameTest.class); + return suite; } } ======================================= --- /releases/2.0/dev/core/test/com/google/gwt/dev/jjs/impl/OptimizerTestBase.java Tue Nov 10 11:37:16 2009 +++ /releases/2.0/dev/core/test/com/google/gwt/dev/jjs/impl/OptimizerTestBase.java Tue Nov 10 12:03:27 2009 @@ -35,7 +35,7 @@ import java.util.TreeSet; /** - * Tests {...@link DeadCodeElimination}. + * A useful base class for tests that build JJS ASTs. */ public abstract class OptimizerTestBase extends TestCase { --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---
