Support adding code-gen/runtime related classes directly to the secondary JDT compilation for the GWT AST. Review at http://gwt-code-reviews.appspot.com/830801 git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8701 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jdt/BasicWebModeCompiler.java b/dev/core/src/com/google/gwt/dev/jdt/BasicWebModeCompiler.java index 26e3bbf..2174d0e 100644 --- a/dev/core/src/com/google/gwt/dev/jdt/BasicWebModeCompiler.java +++ b/dev/core/src/com/google/gwt/dev/jdt/BasicWebModeCompiler.java
@@ -30,6 +30,7 @@ import org.eclipse.jdt.internal.compiler.env.ICompilationUnit; import java.util.ArrayList; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -64,8 +65,8 @@ * Build the initial set of compilation units. */ public CompilationResults getCompilationUnitDeclarations( - TreeLogger logger, String[] seedTypeNames) - throws UnableToCompleteException { + TreeLogger logger, String[] seedTypeNames, + ICompilationUnit... additionalUnits) throws UnableToCompleteException { TypeOracle oracle = compilationState.getTypeOracle(); Set<JClassType> intfTypes = oracle.getSingleJsoImplInterfaces(); @@ -80,7 +81,9 @@ Set<CompilationUnit> alreadyAdded = new HashSet<CompilationUnit>(); List<ICompilationUnit> icus = new ArrayList<ICompilationUnit>( - seedTypeNames.length + intfTypes.size()); + seedTypeNames.length + intfTypes.size() + additionalUnits.length); + + Collections.addAll(icus, additionalUnits); for (String seedTypeName : seedTypeNames) { CompilationUnit unit = getUnitForType(logger, classMapBySource,
diff --git a/dev/core/src/com/google/gwt/dev/jdt/WebModeCompilerFrontEnd.java b/dev/core/src/com/google/gwt/dev/jdt/WebModeCompilerFrontEnd.java index 62b4383..57c017f 100644 --- a/dev/core/src/com/google/gwt/dev/jdt/WebModeCompilerFrontEnd.java +++ b/dev/core/src/com/google/gwt/dev/jdt/WebModeCompilerFrontEnd.java
@@ -27,6 +27,7 @@ import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event; import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration; +import org.eclipse.jdt.internal.compiler.env.ICompilationUnit; import org.eclipse.jdt.internal.compiler.lookup.MethodBinding; import org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding; import org.eclipse.jdt.internal.compiler.lookup.TypeBinding; @@ -46,12 +47,13 @@ public static CompilationResults getCompilationUnitDeclarations( TreeLogger logger, String[] seedTypeNames, - RebindPermutationOracle rebindPermOracle, TypeLinker linker) - throws UnableToCompleteException { + RebindPermutationOracle rebindPermOracle, TypeLinker linker, + ICompilationUnit... additionalUnits) throws UnableToCompleteException { Event getCompilationUnitsEvent = SpeedTracerLogger.start(CompilerEventType.GET_COMPILATION_UNITS); CompilationResults results = new WebModeCompilerFrontEnd(rebindPermOracle, - linker).getCompilationUnitDeclarations(logger, seedTypeNames); + linker).getCompilationUnitDeclarations(logger, seedTypeNames, + additionalUnits); getCompilationUnitsEvent.end(); return results; }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/UnifiedAst.java b/dev/core/src/com/google/gwt/dev/jjs/UnifiedAst.java index 2a91521..d2d7a2e 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/UnifiedAst.java +++ b/dev/core/src/com/google/gwt/dev/jjs/UnifiedAst.java
@@ -54,7 +54,7 @@ return jProgram; } - JsProgram getJsProgram() { + public JsProgram getJsProgram() { return jsProgram; } }