Flag cleanup

 - enforceStrictResources removed
 - maxPermsPerPrecompile removed

Change-Id: I47b72b582b1023e83550d33917f051b820e00091
Review-Link: https://gwt-review.googlesource.com/#/c/12970/
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
index 3b2880c..8ce479c 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java
@@ -42,8 +42,6 @@
   private final TreeLogger.Type logLevel;
   private final List<String> moduleNames;
   private final SourceLevel sourceLevel;
-  private final boolean strictPublicResources;
-  private final boolean strictSourceResources;
   private final OptionJsInteropMode.Mode jsInteropMode;
   private final OptionMethodNameDisplayMode.Mode methodNameDisplayMode;
   private final ListMultimap<String, String> properties;
@@ -56,8 +54,6 @@
     this.moduleNames = Lists.newArrayList(moduleName);
     this.sourceLevel = options.getSourceLevel();
     this.failOnError = options.isFailOnError();
-    this.strictSourceResources = options.enforceStrictResources();
-    this.strictPublicResources = options.enforceStrictResources();
     this.logLevel = options.getLogLevel();
     this.jsInteropMode = options.getJsInteropMode();
     this.methodNameDisplayMode = options.getMethodNameDisplayMode();
@@ -67,16 +63,6 @@
   }
 
   @Override
-  public boolean enforceStrictPublicResources() {
-    return strictPublicResources;
-  }
-
-  @Override
-  public boolean enforceStrictSourceResources() {
-    return strictSourceResources;
-  }
-
-  @Override
   public File getDeployDir() {
     return compileDir.getDeployDir();
   }
@@ -125,11 +111,6 @@
   }
 
   @Override
-  public int getMaxPermsPerPrecompile() {
-    return -1;
-  }
-
-  @Override
   public OptionMethodNameDisplayMode.Mode getMethodNameDisplayMode() {
     return methodNameDisplayMode;
   }
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
index 260e8a5..dc82f87 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/Options.java
@@ -85,7 +85,6 @@
   // Use the same default as the GWT compiler.
   private SourceLevel sourceLevel = SourceLevel.DEFAULT_SOURCE_LEVEL;
   private boolean failOnError = false;
-  private boolean strictResources = false;
   private int compileTestRecompiles = 0;
   private OptionJsInteropMode.Mode jsInteropMode = OptionJsInteropMode.Mode.NONE;
   private OptionMethodNameDisplayMode.Mode methodNameDisplayMode =
@@ -291,13 +290,6 @@
     return port;
   }
 
-  /**
-   * Whether to implicitly import client and public directories when no explicit imports exist.
-   */
-  boolean enforceStrictResources() {
-    return strictResources;
-  }
-
   List<File> getSourcePath() {
     return sourcePath;
   }
@@ -341,7 +333,6 @@
       registerHandler(new NoPrecompileFlag());
       registerHandler(new PortFlag());
       registerHandler(new SourceFlag());
-      registerHandler(new StrictResourcesFlag());
       registerHandler(new WorkDirFlag());
       registerHandler(new LauncherDir());
       registerHandler(new ArgHandlerScriptStyle(new OptionScriptStyle() {
@@ -623,40 +614,6 @@
     }
   }
 
-  private class StrictResourcesFlag extends ArgHandlerFlag {
-
-    public StrictResourcesFlag() {
-      addTagValue("-XstrictResources", true);
-    }
-
-    @Override
-    public boolean isExperimental() {
-      return true;
-    }
-
-    @Override
-    public String getLabel() {
-      return "enforceStrictResources";
-    }
-
-    @Override
-    public String getPurposeSnippet() {
-      return "Don't implicitly depend on \"client\" and \"public\" when "
-          + "a module doesn't define any dependencies.";
-    }
-
-    @Override
-    public boolean setFlag(boolean value) {
-      strictResources = value;
-      return true;
-    }
-
-    @Override
-    public boolean getDefaultValue() {
-      return false;
-    }
-  }
-
   private class AllowMissingSourceDirFlag extends ArgHandlerFlag {
 
     @Override
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/Recompiler.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/Recompiler.java
index 4de8290..f407e25 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/Recompiler.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/Recompiler.java
@@ -436,7 +436,7 @@
 
     // ModuleDefLoader.loadFromResources() checks for modified .gwt.xml files.
     ModuleDef moduleDef = ModuleDefLoader.loadFromResources(
-        logger, compilerContext, inputModuleName, resources, true);
+        logger, inputModuleName, resources, true);
     compilerContext = compilerContextBuilder.module(moduleDef).build();
 
     // Undo all permutation restriction customizations from previous compiles.
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java
index f34c897..bb1f31b 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java
@@ -96,16 +96,6 @@
   }
 
   @Override
-  public void setEnforceStrictPublicResources(boolean strictPublicResources) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public void setEnforceStrictSourceResources(boolean strictSourceResources) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
   public final void setExtraDir(File extraDir) {
     throw new UnsupportedOperationException();
   }
@@ -156,11 +146,6 @@
   }
 
   @Override
-  public final void setMaxPermsPerPrecompile(int maxPerms) {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
   public final void setModuleNames(List<String> moduleNames) {
     throw new UnsupportedOperationException();
   }
diff --git a/dev/core/src/com/google/gwt/dev/AnalyzeModule.java b/dev/core/src/com/google/gwt/dev/AnalyzeModule.java
index 64acfda..c3c6f98 100644
--- a/dev/core/src/com/google/gwt/dev/AnalyzeModule.java
+++ b/dev/core/src/com/google/gwt/dev/AnalyzeModule.java
@@ -133,11 +133,8 @@
 
   private final AnalyzeModuleOptionsImpl options;
 
-  private final CompilerContext compilerContext;
-
   public AnalyzeModule(AnalyzeModuleOptions options) {
     this.options = new AnalyzeModuleOptionsImpl(options);
-    compilerContext = new CompilerContext.Builder().options(options).build();
   }
 
   public boolean run(TreeLogger logger) throws UnableToCompleteException {
@@ -147,8 +144,7 @@
       // No need to check mkdirs result because an IOException will occur anyway
       compilerWorkDir.mkdirs();
 
-      ModuleDef module =
-          ModuleDefLoader.loadFromClassPath(logger, compilerContext, moduleName);
+      ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, moduleName);
       if (logger.isLoggable(TreeLogger.INFO)) {
         logger.log(TreeLogger.INFO, "Analyzing module " + module.getName());
       }
diff --git a/dev/core/src/com/google/gwt/dev/CompileOnePerm.java b/dev/core/src/com/google/gwt/dev/CompileOnePerm.java
index f7230de..256e51b 100644
--- a/dev/core/src/com/google/gwt/dev/CompileOnePerm.java
+++ b/dev/core/src/com/google/gwt/dev/CompileOnePerm.java
@@ -132,10 +132,10 @@
   private static boolean compileSpecificPermutation(TreeLogger logger,
       String moduleName, PrecompileTaskOptions precompilationOptions, int permId,
       File compilerWorkDir) throws UnableToCompleteException {
-    CompilerContext.Builder compilerContextBuilder = new CompilerContext.Builder();
-    CompilerContext compilerContext = compilerContextBuilder.options(precompilationOptions).build();
-    ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, compilerContext, moduleName);
-    compilerContext = compilerContextBuilder.module(module).build();
+    ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, moduleName);
+
+    CompilerContext compilerContext = new CompilerContext.Builder()
+        .options(precompilationOptions).module(module).build();
 
     logger = logger.branch(TreeLogger.INFO, "Compiling permutation " + permId);
 
diff --git a/dev/core/src/com/google/gwt/dev/CompilePerms.java b/dev/core/src/com/google/gwt/dev/CompilePerms.java
index 2648f52..3b8a1b0 100644
--- a/dev/core/src/com/google/gwt/dev/CompilePerms.java
+++ b/dev/core/src/com/google/gwt/dev/CompilePerms.java
@@ -327,9 +327,8 @@
           return false;
         }
       } else {
-        compilerContext = compilerContextBuilder.options(options).build();
-        ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, compilerContext, moduleName);
-        compilerContext = compilerContextBuilder.module(module).build();
+        ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, moduleName);
+        compilerContext = compilerContextBuilder.options(options).module(module).build();
         Precompilation precompilation = (Precompilation) precompileResults;
         // Choose which permutations go with this permutation
         Permutation[] subPerms = selectPermutationsForPrecompilation(
@@ -352,10 +351,9 @@
       File compilerWorkDir, PrecompileTaskOptions precompilationOptions)
       throws UnableToCompleteException {
     precompilationOptions.setGenDir(null);
-    compilerContext = compilerContextBuilder.options(precompilationOptions).build();
 
-    ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, compilerContext, moduleName);
-    compilerContext = compilerContextBuilder.module(module).build();
+    ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, moduleName);
+    compilerContext = compilerContextBuilder.options(precompilationOptions).module(module).build();
     PropertyCombinations allPermutations = new PropertyCombinations(
         module.getProperties(), module.getActiveLinkerNames());
     List<PropertyCombinations> collapsedPermutations = allPermutations.collapseProperties();
diff --git a/dev/core/src/com/google/gwt/dev/Compiler.java b/dev/core/src/com/google/gwt/dev/Compiler.java
index e1b0042..bf5b2ab 100644
--- a/dev/core/src/com/google/gwt/dev/Compiler.java
+++ b/dev/core/src/com/google/gwt/dev/Compiler.java
@@ -150,8 +150,7 @@
     ModuleDef[] modules = new ModuleDef[options.getModuleNames().size()];
     int i = 0;
     for (String moduleName : options.getModuleNames()) {
-      ModuleDef module =
-          ModuleDefLoader.loadFromClassPath(logger, compilerContext, moduleName, true);
+      ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, moduleName, true);
       modules[i++] = module;
     }
     return run(logger, modules);
diff --git a/dev/core/src/com/google/gwt/dev/DevModeBase.java b/dev/core/src/com/google/gwt/dev/DevModeBase.java
index 0e442e0..47f8f22 100644
--- a/dev/core/src/com/google/gwt/dev/DevModeBase.java
+++ b/dev/core/src/com/google/gwt/dev/DevModeBase.java
@@ -941,8 +941,7 @@
    */
   protected ModuleDef loadModule(TreeLogger logger, String moduleName, boolean refresh)
       throws UnableToCompleteException {
-    ModuleDef moduleDef =
-        ModuleDefLoader.loadFromClassPath(logger, compilerContext, moduleName, refresh);
+    ModuleDef moduleDef = ModuleDefLoader.loadFromClassPath(logger, moduleName, refresh);
     compilerContext = compilerContextBuilder.module(moduleDef).build();
     assert (moduleDef != null) : "Required module state is absent";
     return moduleDef;
diff --git a/dev/core/src/com/google/gwt/dev/GetJreEmulation.java b/dev/core/src/com/google/gwt/dev/GetJreEmulation.java
index b7a5058..de8762b 100644
--- a/dev/core/src/com/google/gwt/dev/GetJreEmulation.java
+++ b/dev/core/src/com/google/gwt/dev/GetJreEmulation.java
@@ -71,7 +71,7 @@
       CompilerContext.Builder compilerContextBuilder = new CompilerContext.Builder();
       CompilerContext compilerContext = compilerContextBuilder.build();
       ModuleDef module =
-          ModuleDefLoader.loadFromClassPath(logger, compilerContext, "com.google.gwt.core.Core");
+          ModuleDefLoader.loadFromClassPath(logger, "com.google.gwt.core.Core");
       compilerContext = compilerContextBuilder.module(module).build();
       CompilationState compilationState = module.getCompilationState(logger, compilerContext);
       TypeOracle typeOracle = compilationState.getTypeOracle();
diff --git a/dev/core/src/com/google/gwt/dev/Link.java b/dev/core/src/com/google/gwt/dev/Link.java
index 94da07d..2bff2ee 100644
--- a/dev/core/src/com/google/gwt/dev/Link.java
+++ b/dev/core/src/com/google/gwt/dev/Link.java
@@ -45,12 +45,10 @@
 import com.google.gwt.dev.util.Util;
 import com.google.gwt.dev.util.arg.ArgHandlerDeployDir;
 import com.google.gwt.dev.util.arg.ArgHandlerExtraDir;
-import com.google.gwt.dev.util.arg.ArgHandlerJsInteropMode;
 import com.google.gwt.dev.util.arg.ArgHandlerSaveSourceOutput;
 import com.google.gwt.dev.util.arg.ArgHandlerWarDir;
 import com.google.gwt.dev.util.arg.OptionDeployDir;
 import com.google.gwt.dev.util.arg.OptionExtraDir;
-import com.google.gwt.dev.util.arg.OptionJsInteropMode;
 import com.google.gwt.dev.util.arg.OptionSaveSourceOutput;
 import com.google.gwt.dev.util.arg.OptionWarDir;
 import com.google.gwt.dev.util.log.speedtracer.CompilerEventType;
@@ -82,8 +80,7 @@
    * Options for Link.
    */
   public interface LinkOptions extends OptionExtraDir,
-      OptionWarDir, OptionDeployDir, OptionSaveSourceOutput, CompileTaskOptions,
-      OptionJsInteropMode {
+      OptionWarDir, OptionDeployDir, OptionSaveSourceOutput, CompileTaskOptions {
   }
 
   static class ArgProcessor extends CompileArgProcessor {
@@ -93,7 +90,6 @@
       registerHandler(new ArgHandlerWarDir(options));
       registerHandler(new ArgHandlerDeployDir(options));
       registerHandler(new ArgHandlerSaveSourceOutput(options));
-      registerHandler(new ArgHandlerJsInteropMode(options));
     }
 
     @Override
@@ -619,8 +615,7 @@
 
   public boolean run(TreeLogger logger) throws UnableToCompleteException {
     loop_modules : for (String moduleName : options.getModuleNames()) {
-      ModuleDef module =
-          ModuleDefLoader.loadFromClassPath(logger, compilerContext, moduleName);
+      ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, moduleName);
       compilerContext = compilerContextBuilder.module(module).build();
       ResourceOracle publicResourceOracle = compilerContext.getPublicResourceOracle();
 
diff --git a/dev/core/src/com/google/gwt/dev/Precompile.java b/dev/core/src/com/google/gwt/dev/Precompile.java
index 23cef9f..f21650c 100644
--- a/dev/core/src/com/google/gwt/dev/Precompile.java
+++ b/dev/core/src/com/google/gwt/dev/Precompile.java
@@ -392,8 +392,7 @@
 
       File precompilationFile = new File(compilerWorkDir, PRECOMPILE_FILENAME);
 
-      ModuleDef module =
-          ModuleDefLoader.loadFromClassPath(logger, compilerContext, moduleName);
+      ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, moduleName);
       compilerContext = compilerContextBuilder.module(module).build();
 
       StandardLinkerContext linkerContext = new StandardLinkerContext(
diff --git a/dev/core/src/com/google/gwt/dev/PrecompileOnePerm.java b/dev/core/src/com/google/gwt/dev/PrecompileOnePerm.java
index 45c6340..01dff5c 100644
--- a/dev/core/src/com/google/gwt/dev/PrecompileOnePerm.java
+++ b/dev/core/src/com/google/gwt/dev/PrecompileOnePerm.java
@@ -162,10 +162,6 @@
       logger.log(TreeLogger.WARN,
       "-XdisableGeneratingOnShards has no effect in PrecompileOnePerm");
     }
-    if (options.getMaxPermsPerPrecompile() != -1) {
-      logger.log(TreeLogger.WARN,
-      "-XmaxPermsPerPrecompile has no effect in PrecompileOnePerm");
-    }
 
     return true;
   }
@@ -194,7 +190,7 @@
     String moduleName = moduleNames.get(0);
     File compilerWorkDir = options.getCompilerWorkDir(moduleName);
 
-    ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, compilerContext, moduleName);
+    ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, moduleName);
     compilerContext = compilerContextBuilder.module(module).build();
     StandardLinkerContext linkerContext = new StandardLinkerContext(
         TreeLogger.NULL, module, compilerContext.getPublicResourceOracle(), options.getOutput());
diff --git a/dev/core/src/com/google/gwt/dev/PrecompileTaskArgProcessor.java b/dev/core/src/com/google/gwt/dev/PrecompileTaskArgProcessor.java
index 2ac6fb9..8df8aa2 100644
--- a/dev/core/src/com/google/gwt/dev/PrecompileTaskArgProcessor.java
+++ b/dev/core/src/com/google/gwt/dev/PrecompileTaskArgProcessor.java
@@ -40,7 +40,6 @@
 import com.google.gwt.dev.util.arg.ArgHandlerIncrementalCompileWarnings;
 import com.google.gwt.dev.util.arg.ArgHandlerJsInteropMode;
 import com.google.gwt.dev.util.arg.ArgHandlerJsonSoyc;
-import com.google.gwt.dev.util.arg.ArgHandlerMaxPermsPerPrecompile;
 import com.google.gwt.dev.util.arg.ArgHandlerMethodNameDisplayMode;
 import com.google.gwt.dev.util.arg.ArgHandlerMissingDepsFile;
 import com.google.gwt.dev.util.arg.ArgHandlerNamespace;
@@ -82,7 +81,6 @@
     registerHandler(new ArgHandlerGenDir(options));
     registerHandler(new ArgHandlerIncrementalCompileWarnings());
     registerHandler(new ArgHandlerJsInteropMode(options));
-    registerHandler(new ArgHandlerMaxPermsPerPrecompile(options));
     registerHandler(new ArgHandlerMethodNameDisplayMode(options));
     registerHandler(new ArgHandlerMissingDepsFile());
     registerHandler(new ArgHandlerNamespace(options));
@@ -95,7 +93,7 @@
     registerHandler(new ArgHandlerSoycDetailed(options));
     registerHandler(new ArgHandlerJsonSoyc(options));
     registerHandler(new ArgHandlerStrict(options));
-    registerHandler(new ArgHandlerStrictResources(options));
+    registerHandler(new ArgHandlerStrictResources());
     registerHandler(new ArgHandlerValidateOnlyFlag(options));
     registerHandler(new ArgHandlerSourceLevel(options));
   }
diff --git a/dev/core/src/com/google/gwt/dev/PrecompileTaskOptions.java b/dev/core/src/com/google/gwt/dev/PrecompileTaskOptions.java
index 87a1258..1c5f4f2 100644
--- a/dev/core/src/com/google/gwt/dev/PrecompileTaskOptions.java
+++ b/dev/core/src/com/google/gwt/dev/PrecompileTaskOptions.java
@@ -19,7 +19,6 @@
 import com.google.gwt.dev.util.arg.OptionDisableUpdateCheck;
 import com.google.gwt.dev.util.arg.OptionEnableGeneratingOnShards;
 import com.google.gwt.dev.util.arg.OptionGenDir;
-import com.google.gwt.dev.util.arg.OptionMaxPermsPerPrecompile;
 import com.google.gwt.dev.util.arg.OptionSaveSource;
 import com.google.gwt.dev.util.arg.OptionSetProperties;
 import com.google.gwt.dev.util.arg.OptionSourceMapFilePrefix;
@@ -30,6 +29,5 @@
  */
 public interface PrecompileTaskOptions extends JJSOptions, CompileTaskOptions, OptionGenDir,
     OptionSaveSource, OptionSourceMapFilePrefix, OptionValidateOnly, OptionDisableUpdateCheck,
-    OptionEnableGeneratingOnShards, OptionMaxPermsPerPrecompile, PrecompilationResult,
-    OptionSetProperties {
+    OptionEnableGeneratingOnShards, PrecompilationResult, OptionSetProperties {
 }
diff --git a/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java b/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java
index 159f24b..09535cf 100644
--- a/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java
+++ b/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java
@@ -37,7 +37,6 @@
   private boolean enableGeneratingOnShards = true;
   private File genDir;
   private final JJSOptionsImpl jjsOptions = new JJSOptionsImpl();
-  private int maxPermsPerPrecompile;
   private boolean saveSource;
   private String sourceMapFilePrefix;
   private boolean validateOnly;
@@ -71,23 +70,12 @@
     setGenDir(other.getGenDir());
     setSaveSource(other.shouldSaveSource());
     setSourceMapFilePrefix(other.getSourceMapFilePrefix());
-    setMaxPermsPerPrecompile(other.getMaxPermsPerPrecompile());
     setValidateOnly(other.isValidateOnly());
     setEnabledGeneratingOnShards(other.isEnabledGeneratingOnShards());
     properties.putAll(other.getProperties());
   }
 
   @Override
-  public boolean enforceStrictPublicResources() {
-    return jjsOptions.enforceStrictPublicResources();
-  }
-
-  @Override
-  public boolean enforceStrictSourceResources() {
-    return jjsOptions.enforceStrictSourceResources();
-  }
-
-  @Override
   public int getFragmentCount() {
     return jjsOptions.getFragmentCount();
   }
@@ -107,11 +95,6 @@
   }
 
   @Override
-  public int getMaxPermsPerPrecompile() {
-    return maxPermsPerPrecompile;
-  }
-
-  @Override
   public OptionMethodNameDisplayMode.Mode getMethodNameDisplayMode() {
     return jjsOptions.getMethodNameDisplayMode();
   }
@@ -271,16 +254,6 @@
   }
 
   @Override
-  public void setEnforceStrictPublicResources(boolean strictPublicResources) {
-    jjsOptions.setEnforceStrictPublicResources(strictPublicResources);
-  }
-
-  @Override
-  public void setEnforceStrictSourceResources(boolean strictSourceResources) {
-    jjsOptions.setEnforceStrictSourceResources(strictSourceResources);
-  }
-
-  @Override
   public void setFragmentCount(int numFragments) {
     jjsOptions.setFragmentCount(numFragments);
   }
@@ -315,11 +288,6 @@
   }
 
   @Override
-  public void setMaxPermsPerPrecompile(int maxPermsPerPrecompile) {
-    this.maxPermsPerPrecompile = maxPermsPerPrecompile;
-  }
-
-  @Override
   public void setMethodNameDisplayMode(OptionMethodNameDisplayMode.Mode methodNameDisplayMode) {
     jjsOptions.setMethodNameDisplayMode(methodNameDisplayMode);
   }
diff --git a/dev/core/src/com/google/gwt/dev/cfg/ModuleDefLoader.java b/dev/core/src/com/google/gwt/dev/cfg/ModuleDefLoader.java
index c91d54a..cd5acbe 100644
--- a/dev/core/src/com/google/gwt/dev/cfg/ModuleDefLoader.java
+++ b/dev/core/src/com/google/gwt/dev/cfg/ModuleDefLoader.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.dev.CompilerContext;
 import com.google.gwt.dev.util.Util;
 import com.google.gwt.dev.util.log.speedtracer.CompilerEventType;
 import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger;
@@ -71,15 +70,14 @@
    * <code>.gwt.xml</code> file on disk.
    *
    * @param logger logs the process
-   * @param compilerContext shared read only compiler state
    * @param moduleName the synthetic module to create
    * @param inherits a set of modules to inherit from
    * @param refresh whether to refresh the module
    * @return the loaded module
    * @throws UnableToCompleteException
    */
-  public static ModuleDef createSyntheticModule(TreeLogger logger,
-      CompilerContext compilerContext, String moduleName, final String[] inherits, boolean refresh)
+  public static ModuleDef createSyntheticModule(TreeLogger logger, String moduleName,
+      final String[] inherits, boolean refresh)
       throws UnableToCompleteException {
     ModuleDef moduleDef = tryGetLoadedModule(moduleName, refresh);
     if (moduleDef != null) {
@@ -88,7 +86,7 @@
 
     ResourceLoader resources = ResourceLoaders.forClassLoader(Thread.currentThread());
 
-    ModuleDefLoader loader = new ModuleDefLoader(compilerContext, resources) {
+    ModuleDefLoader loader = new ModuleDefLoader(resources) {
       @Override
       protected void load(TreeLogger logger, String nameOfModuleToLoad, ModuleDef dest)
           throws UnableToCompleteException {
@@ -113,29 +111,27 @@
    * Loads a new module from the class path and defers scanning associated directories for
    * resources.
    */
-  public static ModuleDef loadFromClassPath(
-      TreeLogger logger, CompilerContext compilerContext, String moduleName)
+  public static ModuleDef loadFromClassPath(TreeLogger logger, String moduleName)
       throws UnableToCompleteException {
-    return loadFromClassPath(logger, compilerContext, moduleName, false);
+    return loadFromClassPath(logger, moduleName, false);
   }
 
   /**
    * Loads a new module from the class path and may or may not immediately scan associated
    * directories for resources.
    */
-  public static ModuleDef loadFromClassPath(
-      TreeLogger logger, CompilerContext compilerContext, String moduleName, boolean refresh)
+  public static ModuleDef loadFromClassPath(TreeLogger logger, String moduleName, boolean refresh)
       throws UnableToCompleteException {
     ResourceLoader resources = ResourceLoaders.forClassLoader(Thread.currentThread());
-    return loadFromResources(logger, compilerContext, moduleName, resources, refresh);
+    return loadFromResources(logger, moduleName, resources, refresh);
   }
 
   /**
    * Loads a new module from the given ResourceLoader and may or may not immediately scan associated
    * directories for resources.
    */
-  public static ModuleDef loadFromResources(TreeLogger logger, CompilerContext compilerContext,
-      String moduleName, ResourceLoader resources, boolean refresh)
+  public static ModuleDef loadFromResources(TreeLogger logger, String moduleName,
+      ResourceLoader resources, boolean refresh)
       throws UnableToCompleteException {
 
     Event moduleDefLoadFromClassPathEvent = SpeedTracerLogger.start(
@@ -151,7 +147,7 @@
       if (moduleDef != null) {
         return moduleDef;
       }
-      ModuleDefLoader loader = new ModuleDefLoader(compilerContext, resources);
+      ModuleDefLoader loader = new ModuleDefLoader(resources);
       return ModuleDefLoader.doLoadModule(loader, logger, moduleName, resources, true, true);
     } finally {
       moduleDefLoadFromClassPathEvent.end();
@@ -232,23 +228,12 @@
     return moduleDef;
   }
 
-  private final CompilerContext compilerContext;
-
   private final ResourceLoader resourceLoader;
 
-  private ModuleDefLoader(CompilerContext compilerContext, ResourceLoader loader) {
-    this.compilerContext = compilerContext;
+  private ModuleDefLoader(ResourceLoader loader) {
     this.resourceLoader = loader;
   }
 
-  public boolean enforceStrictSourceResources() {
-    return compilerContext.getOptions().enforceStrictSourceResources();
-  }
-
-  public boolean enforceStrictPublicResources() {
-    return compilerContext.getOptions().enforceStrictPublicResources();
-  }
-
   /**
    * Loads a module and all its included modules, recursively, into the given ModuleDef.
    * @throws UnableToCompleteException
diff --git a/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java b/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java
index 656604c..bfde6af 100644
--- a/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java
+++ b/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java
@@ -1463,16 +1463,12 @@
   }
 
   protected void __module_end(NullableName renameTo, String type) {
-    // If we're not being strict about source resources and no source paths have been added, go
-    // ahead and implicitly add the "client" directory.
-    if (!loader.enforceStrictSourceResources() && !foundExplicitSourceOrSuperSource) {
+    if (!foundExplicitSourceOrSuperSource) {
       bodySchema.addSourcePackage(modulePackageAsPath, "client", Empty.STRINGS,
           Empty.STRINGS, Empty.STRINGS, true, true, false);
     }
 
-    // If we're not being strict about public resources and no public paths have been added, go
-    // ahead and implicitly add the "public" directory.
-    if (!loader.enforceStrictPublicResources() && !foundAnyPublic) {
+    if (!foundAnyPublic) {
       bodySchema.addPublicPackage(modulePackageAsPath, "public", Empty.STRINGS,
           Empty.STRINGS, Empty.STRINGS, true, true);
     }
diff --git a/dev/core/src/com/google/gwt/dev/javac/CompilationProblemReporter.java b/dev/core/src/com/google/gwt/dev/javac/CompilationProblemReporter.java
index 9fd6bb0..4e55ed5 100644
--- a/dev/core/src/com/google/gwt/dev/javac/CompilationProblemReporter.java
+++ b/dev/core/src/com/google/gwt/dev/javac/CompilationProblemReporter.java
@@ -148,7 +148,7 @@
     }
 
     if (hint) {
-      logHints(logger, compilerContext, typeSourceName);
+      logHints(logger, typeSourceName);
     }
   }
 
@@ -309,8 +309,7 @@
     return visited.size() > 1;
   }
 
-  private static void logHints(TreeLogger logger, CompilerContext compilerContext,
-      String typeSourceName) {
+  private static void logHints(TreeLogger logger, String typeSourceName) {
     ClassLoader cl = Thread.currentThread().getContextClassLoader();
 
     URL sourceURL = Util.findSourceInClassPath(cl, typeSourceName);
@@ -321,11 +320,6 @@
         Messages.HINT_CHECK_MODULE_NONCLIENT_SOURCE_DECL.log(logger, null);
       }
     } else if (!typeSourceName.equals("java.lang.Object")) {
-      boolean strictSourceResources =
-          compilerContext.getOptions().enforceStrictSourceResources();
-      if (strictSourceResources) {
-        Messages.HINT_STRICT_SOURCE_ENTRIES.log(logger, null);
-      }
       Messages.HINT_CHECK_TYPENAME.log(logger, typeSourceName, null);
       Messages.HINT_CHECK_CLASSPATH_SOURCE_ENTRIES.log(logger, null);
     }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java b/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
index 2740942..a7da111 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
@@ -42,8 +42,6 @@
 import com.google.gwt.dev.util.arg.OptionSoycEnabled;
 import com.google.gwt.dev.util.arg.OptionSoycHtmlDisabled;
 import com.google.gwt.dev.util.arg.OptionStrict;
-import com.google.gwt.dev.util.arg.OptionStrictPublicResources;
-import com.google.gwt.dev.util.arg.OptionStrictSourceResources;
 import com.google.gwt.dev.util.arg.OptionUseDetailedTypeIds;
 
 /**
@@ -54,8 +52,8 @@
     OptionDisableCastChecking, OptionEnableAssertions, OptionInlineLiteralParameters,
     OptionOptimizeDataflow, OptionRunAsyncEnabled, OptionScriptStyle, OptionSoycEnabled,
     OptionSoycDetailed, OptionJsonSoycEnabled, OptionOrdinalizeEnums,
-    OptionRemoveDuplicateFunctions, OptionStrict, OptionStrictSourceResources,
-    OptionStrictPublicResources, OptionSoycHtmlDisabled, OptionEnableClosureCompiler,
+    OptionRemoveDuplicateFunctions, OptionStrict,
+    OptionSoycHtmlDisabled, OptionEnableClosureCompiler,
     OptionFragmentsMerge, OptionFragmentCount, OptionSourceLevel, OptionNamespace,
     OptionCheckedMode, OptionJsInteropMode, OptionUseDetailedTypeIds,
     OptionAllowJDTConstantInlining, OptionMethodNameDisplayMode,
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java b/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
index bcbf5eb..0f8aa73 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
@@ -52,8 +52,6 @@
   private boolean soycExtra = false;
   private boolean soycHtmlDisabled = false;
   private boolean strict = false;
-  private boolean strictSourceResources = false;
-  private boolean strictPublicResources = false;
   private OptionJsInteropMode.Mode jsInteropMode = OptionJsInteropMode.Mode.NONE;
   private boolean useDetailedTypeIds = false;
   private OptionMethodNameDisplayMode.Mode methodNameDisplayMode =
@@ -86,8 +84,6 @@
     setJsonSoycEnabled(other.isJsonSoycEnabled());
     setSoycHtmlDisabled(other.isSoycHtmlDisabled());
     setStrict(other.isStrict());
-    setEnforceStrictSourceResources(other.enforceStrictSourceResources());
-    setEnforceStrictPublicResources(other.enforceStrictPublicResources());
     setSourceLevel(other.getSourceLevel());
     setNamespace(other.getNamespace());
     setJsInteropMode(other.getJsInteropMode());
@@ -97,16 +93,6 @@
   }
 
   @Override
-  public boolean enforceStrictSourceResources() {
-    return strictSourceResources;
-  }
-
-  @Override
-  public boolean enforceStrictPublicResources() {
-    return strictPublicResources;
-  }
-
-  @Override
   public int getFragmentCount() {
     return fragmentCount;
   }
@@ -240,16 +226,6 @@
   }
 
   @Override
-  public void setEnforceStrictSourceResources(boolean strictSourceResources) {
-    this.strictSourceResources = strictSourceResources;
-  }
-
-  @Override
-  public void setEnforceStrictPublicResources(boolean strictPublicResources) {
-    this.strictPublicResources = strictPublicResources;
-  }
-
-  @Override
   public void setFragmentCount(int numFragments) {
     this.fragmentCount = numFragments;
   }
diff --git a/dev/core/src/com/google/gwt/dev/util/Messages.java b/dev/core/src/com/google/gwt/dev/util/Messages.java
index 474e3c3..484d3da 100644
--- a/dev/core/src/com/google/gwt/dev/util/Messages.java
+++ b/dev/core/src/com/google/gwt/dev/util/Messages.java
@@ -27,10 +27,6 @@
   public static final Message0 HINT_CHECK_CLASSPATH_SOURCE_ENTRIES = new Message0(
       TreeLogger.ERROR,
       "Hint: Check that your classpath includes all required source roots");
-  public static final Message0 HINT_STRICT_SOURCE_ENTRIES = new Message0(TreeLogger.ERROR,
-      "Hint: Strict source inclusion is active and \"client\" directories "
-      + "are not being implicitly included. Check that you don't need to "
-      + "add some <source path=\"client\" /> entries.");
 
   public static final Message0 HINT_CHECK_INHERIT_CORE = new Message0(
       TreeLogger.ERROR,
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerMaxPermsPerPrecompile.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerMaxPermsPerPrecompile.java
deleted file mode 100644
index d1b86b5..0000000
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerMaxPermsPerPrecompile.java
+++ /dev/null
@@ -1,62 +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.util.arg;
-
-import com.google.gwt.util.tools.ArgHandlerInt;
-
-/**
- * Handles an argument for {@link OptionMaxPermsPerPrecompile}.
- *
- * TODO(spoon) delete this obsolete option.
- */
-public class ArgHandlerMaxPermsPerPrecompile extends ArgHandlerInt {
-
-  private final OptionMaxPermsPerPrecompile options;
-
-  public ArgHandlerMaxPermsPerPrecompile(OptionMaxPermsPerPrecompile options) {
-    this.options = options;
-  }
-
-  @Override
-  public String[] getDefaultArgs() {
-    return new String[] {getTag(), "-1"};
-  }
-
-  @Override
-  public String getPurpose() {
-    return "ignored; soon to be deleted";
-  }
-
-  @Override
-  public String getTag() {
-    return "-XmaxPermsPerPrecompile";
-  }
-
-  @Override
-  public String[] getTagArgs() {
-    return new String[] {"perms"};
-  }
-
-  @Override
-  public boolean isUndocumented() {
-    return true;
-  }
-
-  @Override
-  public void setInt(int maxPerms) {
-    options.setMaxPermsPerPrecompile(maxPerms);
-  }
-}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerStrictResources.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerStrictResources.java
index 4f9eb18..c6cc349 100644
--- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerStrictResources.java
+++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerStrictResources.java
@@ -16,52 +16,16 @@
 
 package com.google.gwt.dev.util.arg;
 
-import com.google.gwt.util.tools.ArgHandlerFlag;
+import com.google.gwt.util.tools.ArgHandlerNoopDeprecatedFlag;
 
 /**
  * Generally whether to be strict about resource loading and in particular whether to implicitly add
  * "client" and "public" resource dependencies when none are mentioned.
  */
-public class ArgHandlerStrictResources extends ArgHandlerFlag {
+@Deprecated
+public class ArgHandlerStrictResources extends ArgHandlerNoopDeprecatedFlag {
 
-  private final OptionStrictSourceResources optionStrictSourceResources;
-  private final OptionStrictPublicResources optionStrictPublicResources;
-
-  public <T extends OptionStrictSourceResources &
-                    OptionStrictPublicResources> ArgHandlerStrictResources(T options) {
-    this.optionStrictSourceResources = options;
-    this.optionStrictPublicResources = options;
-
-    addTagValue("-XstrictResources", true);
-  }
-
-  @Override
-  public boolean getDefaultValue() {
-    assert optionStrictSourceResources.enforceStrictSourceResources()
-        == optionStrictPublicResources.enforceStrictPublicResources();
-    return optionStrictSourceResources.enforceStrictSourceResources();
-  }
-
-  @Override
-  public String getLabel() {
-    return "enforceStrictResources";
-  }
-
-  @Override
-  public String getPurposeSnippet() {
-    return "Avoid adding implicit dependencies on \"client\" and \"public\" for "
-        + "modules that don't define any dependencies.";
-  }
-
-  @Override
-  public boolean isExperimental() {
-    return true;
-  }
-
-  @Override
-  public boolean setFlag(boolean value) {
-    optionStrictSourceResources.setEnforceStrictSourceResources(value);
-    optionStrictPublicResources.setEnforceStrictPublicResources(value);
-    return true;
+  public ArgHandlerStrictResources() {
+    super("XstrictResources", "enforceStrictResources");
   }
 }
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/OptionMaxPermsPerPrecompile.java b/dev/core/src/com/google/gwt/dev/util/arg/OptionMaxPermsPerPrecompile.java
deleted file mode 100644
index d6ba9c9..0000000
--- a/dev/core/src/com/google/gwt/dev/util/arg/OptionMaxPermsPerPrecompile.java
+++ /dev/null
@@ -1,33 +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.util.arg;
-
-/**
- * Option to choose the maximum number of permutations to compile at once.
- */
-public interface OptionMaxPermsPerPrecompile {
-
-  /**
-   * Get the maximum number of permutations per precompile. Returns a negative
-   * number if there is no limit.
-   */
-  int getMaxPermsPerPrecompile();
-
-  /**
-   * Sets the maximum number of permutations to compile at once.
-   */
-  void setMaxPermsPerPrecompile(int maxPerms);
-}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/OptionStrictPublicResources.java b/dev/core/src/com/google/gwt/dev/util/arg/OptionStrictPublicResources.java
deleted file mode 100644
index fa3058b..0000000
--- a/dev/core/src/com/google/gwt/dev/util/arg/OptionStrictPublicResources.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2014 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.util.arg;
-
-/**
- * Whether to be strict about public resource loading by implicitly adding "public" as a public
- * folder for every module.
- */
-public interface OptionStrictPublicResources {
-
-  /**
-   * Returns true if the compiler should not implicitly add a "public" dependency.
-   */
-  boolean enforceStrictPublicResources();
-
-  /**
-   * Sets whether the compiler should not implicitly add a "public" dependency.
-   */
-  void setEnforceStrictPublicResources(boolean strictPublicResources);
-}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/OptionStrictSourceResources.java b/dev/core/src/com/google/gwt/dev/util/arg/OptionStrictSourceResources.java
deleted file mode 100644
index e1a49d3..0000000
--- a/dev/core/src/com/google/gwt/dev/util/arg/OptionStrictSourceResources.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2014 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.util.arg;
-
-/**
- * Whether to be strict about source resource loading by implicitly adding "client" as a source
- * folder for every module.
- */
-public interface OptionStrictSourceResources {
-
-  /**
-   * Returns true if the compiler should not implicitly add a "client" dependency.
-   */
-  boolean enforceStrictSourceResources();
-
-  /**
-   * Sets whether the compiler should not implicitly add a "client" dependency.
-   */
-  void setEnforceStrictSourceResources(boolean strictSourceResources);
-}
diff --git a/dev/core/test/com/google/gwt/dev/CompilerTest.java b/dev/core/test/com/google/gwt/dev/CompilerTest.java
index 072d027..ae49c8c 100644
--- a/dev/core/test/com/google/gwt/dev/CompilerTest.java
+++ b/dev/core/test/com/google/gwt/dev/CompilerTest.java
@@ -1973,9 +1973,6 @@
     compilerOptions.setModuleNames(ImmutableList.of(moduleName));
     compilerOptions.setOutput(output);
 
-    CompilerContext compilerContext = new CompilerContext.Builder().options(compilerOptions)
-        .minimalRebuildCache(minimalRebuildCache).build();
-
     // Write the Java/XML/etc resources that make up the test application.
     for (MockResource applicationResource : applicationResources) {
       writeResourceTo(applicationResource, applicationDir);
@@ -1984,7 +1981,7 @@
     // Cause the module to be cached with a reference to the prefixed resource loader so that the
     // compile process will see those resources.
     ModuleDefLoader.clearModuleCache();
-    ModuleDefLoader.loadFromResources(logger, compilerContext, moduleName, resourceLoader, true);
+    ModuleDefLoader.loadFromResources(logger, moduleName, resourceLoader, true);
 
     // Run the compile.
     Compiler compiler = new Compiler(compilerOptions, minimalRebuildCache);
diff --git a/dev/core/test/com/google/gwt/dev/cfg/ModuleDefLoaderTest.java b/dev/core/test/com/google/gwt/dev/cfg/ModuleDefLoaderTest.java
index 23b2662..674b3d1 100644
--- a/dev/core/test/com/google/gwt/dev/cfg/ModuleDefLoaderTest.java
+++ b/dev/core/test/com/google/gwt/dev/cfg/ModuleDefLoaderTest.java
@@ -17,8 +17,6 @@
 
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.dev.CompilerContext;
-import com.google.gwt.dev.resource.Resource;
 import com.google.gwt.dev.util.UnitTestTreeLogger;
 import com.google.gwt.thirdparty.guava.common.collect.Sets;
 
@@ -31,35 +29,6 @@
  */
 public class ModuleDefLoaderTest extends TestCase {
 
-  private CompilerContext compilerContext;
-  private CompilerContext.Builder compilerContextBuilder;
-
-  public void assertHonorsStrictResources(boolean strictResources)
-      throws UnableToCompleteException {
-    TreeLogger logger = TreeLogger.NULL;
-    compilerContext.getOptions().setEnforceStrictSourceResources(strictResources);
-    compilerContext.getOptions().setEnforceStrictPublicResources(strictResources);
-    ModuleDef emptyModule = ModuleDefLoader.loadFromClassPath(
-        logger, compilerContext, "com.google.gwt.dev.cfg.testdata.merging.Empty");
-    Resource sourceFile =
-        emptyModule.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/InOne.java");
-    Resource publicFile = emptyModule.findPublicFile("Public.java");
-    if (strictResources) {
-      // Empty.gwt.xml did not register any source or public paths and the strictResource setting is
-      // blocking the implicit addition of any default entries. So these resource searches should
-      // fail.
-      assertNull(sourceFile);
-      assertNull(publicFile);
-    } else {
-      assertNotNull(sourceFile);
-      assertNotNull(publicFile);
-    }
-  }
-
-  public void testAllowsImpreciseResources() throws Exception {
-    assertHonorsStrictResources(false);
-  }
-
   public void testErrorReporting_badXml() {
     assertErrorsWhenLoading("com.google.gwt.dev.cfg.testdata.errors.BadModule",
         "Line 3, column 1 : Element type \"inherits\" must be followed by either "
@@ -99,7 +68,7 @@
 
     try {
       ModuleDefLoader.loadFromClassPath(
-          logger, compilerContext, "com.google.gwt.dev.cfg.testdata.errors.DeepInheritsError0");
+          logger, "com.google.gwt.dev.cfg.testdata.errors.DeepInheritsError0");
       fail("Should have failed to load module.");
     } catch (UnableToCompleteException e) {
       // failure is expected.
@@ -141,21 +110,21 @@
   public void testModuleMerging() throws Exception {
     TreeLogger logger = TreeLogger.NULL;
     ModuleDef one = ModuleDefLoader.loadFromClassPath(
-        logger, compilerContext, "com.google.gwt.dev.cfg.testdata.merging.One");
+        logger, "com.google.gwt.dev.cfg.testdata.merging.One");
     assertNotNull(one.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/InOne.java"));
     assertNotNull(one.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/Shared.java"));
     assertNull(one.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/InTwo.java"));
     assertNull(one.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/Toxic.java"));
 
     ModuleDef two = ModuleDefLoader.loadFromClassPath(
-        logger, compilerContext, "com.google.gwt.dev.cfg.testdata.merging.Two");
+        logger, "com.google.gwt.dev.cfg.testdata.merging.Two");
     assertNotNull(two.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/InOne.java"));
     assertNotNull(two.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/Shared.java"));
     assertNotNull(two.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/InTwo.java"));
     assertNull(two.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/Toxic.java"));
 
     ModuleDef three = ModuleDefLoader.loadFromClassPath(
-        logger, compilerContext, "com.google.gwt.dev.cfg.testdata.merging.Three");
+        logger, "com.google.gwt.dev.cfg.testdata.merging.Three");
     assertNotNull(three.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/InOne.java"));
     assertNotNull(three.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/Shared.java"));
     assertNull(three.findSourceFile("com/google/gwt/dev/cfg/testdata/merging/client/InTwo.java"));
@@ -172,7 +141,7 @@
     UnitTestTreeLogger logger = builder.createLogger();
     try {
       ModuleDefLoader.loadFromClassPath(
-          logger, compilerContext, "com.google.gwt.dev.cfg.testdata.naming.Invalid..Foo");
+          logger, "com.google.gwt.dev.cfg.testdata.naming.Invalid..Foo");
       fail("Expected exception from invalid module name.");
     } catch (UnableToCompleteException expected) {
     }
@@ -184,19 +153,19 @@
 
     ModuleDef module;
     module = ModuleDefLoader.loadFromClassPath(
-        logger, compilerContext, "com.google.gwt.dev.cfg.testdata.naming.Foo-test");
+        logger, "com.google.gwt.dev.cfg.testdata.naming.Foo-test");
     assertNotNull(module.findSourceFile("com/google/gwt/dev/cfg/testdata/naming/client/Mock.java"));
 
     module = ModuleDefLoader.loadFromClassPath(
-        logger, compilerContext, "com.google.gwt.dev.cfg.testdata.naming.7Foo");
+        logger, "com.google.gwt.dev.cfg.testdata.naming.7Foo");
     assertNotNull(module.findSourceFile("com/google/gwt/dev/cfg/testdata/naming/client/Mock.java"));
 
     module = ModuleDefLoader.loadFromClassPath(
-        logger, compilerContext, "com.google.gwt.dev.cfg.testdata.naming.Nested7Foo");
+        logger, "com.google.gwt.dev.cfg.testdata.naming.Nested7Foo");
     assertNotNull(module.findSourceFile("com/google/gwt/dev/cfg/testdata/naming/client/Mock.java"));
 
     module = ModuleDefLoader.loadFromClassPath(
-        logger, compilerContext, "com.google.gwt.dev.cfg.testdata.naming.Nested7Foo");
+        logger, "com.google.gwt.dev.cfg.testdata.naming.Nested7Foo");
     assertNotNull(module.findSourceFile("com/google/gwt/dev/cfg/testdata/naming/client/Mock.java"));
   }
 
@@ -210,20 +179,16 @@
     UnitTestTreeLogger logger = builder.createLogger();
     try {
       ModuleDefLoader.loadFromClassPath(logger,
-          compilerContext, "com.google.gwt.dev.cfg.testdata.naming.NestedInvalid", false);
+          "com.google.gwt.dev.cfg.testdata.naming.NestedInvalid", false);
       fail("Expected exception from invalid module name.");
     } catch (UnableToCompleteException expected) {
     }
     logger.assertLogEntriesContainExpected();
   }
 
-  public void testRequiresStrictResources() throws Exception {
-    assertHonorsStrictResources(true);
-  }
-
   public void testResourcesVisible() throws Exception {
     TreeLogger logger = TreeLogger.NULL;
-    ModuleDef one = ModuleDefLoader.loadFromClassPath(logger, compilerContext,
+    ModuleDef one = ModuleDefLoader.loadFromClassPath(logger,
         "com.google.gwt.dev.cfg.testdata.merging.One");
 
     Set<String> visibleResourcePaths = one.getBuildResourceOracle().getPathNames();
@@ -236,8 +201,7 @@
   }
 
   public void testWritesTargetLibraryProperties() throws UnableToCompleteException {
-    compilerContext = compilerContextBuilder.build();
-    ModuleDef libraryOneModule = ModuleDefLoader.loadFromClassPath(TreeLogger.NULL, compilerContext,
+    ModuleDef libraryOneModule = ModuleDefLoader.loadFromClassPath(TreeLogger.NULL,
         "com.google.gwt.dev.cfg.testdata.separate.libraryone.LibraryOne", false);
 
     // Library one sees all defined values for the "libraryTwoProperty" binding property and knows
@@ -271,8 +235,7 @@
       UnitTestTreeLogger logger = builder.createLogger();
 
       try {
-        ModuleDefLoader.loadFromClassPath(
-            logger, compilerContext, moduleName);
+        ModuleDefLoader.loadFromClassPath(logger, moduleName);
         fail("Should have failed to load module.");
       } catch (UnableToCompleteException e) {
         // failure is expected.
@@ -285,7 +248,5 @@
   protected void setUp() throws Exception {
     super.setUp();
     ModuleDefLoader.getModulesCache().clear();
-    compilerContextBuilder = new CompilerContext.Builder();
-    compilerContext = compilerContextBuilder.build();
   }
 }
diff --git a/dev/core/test/com/google/gwt/dev/javac/typemodel/ModuleContext.java b/dev/core/test/com/google/gwt/dev/javac/typemodel/ModuleContext.java
index b85a563..21e49af 100644
--- a/dev/core/test/com/google/gwt/dev/javac/typemodel/ModuleContext.java
+++ b/dev/core/test/com/google/gwt/dev/javac/typemodel/ModuleContext.java
@@ -37,10 +37,8 @@
       oracle = typeOracleMap.get(moduleName);
       if (oracle == null) {
         CompilerContext.Builder compilerContextBuilder = new CompilerContext.Builder();
-        CompilerContext compilerContext = compilerContextBuilder.build();
-        ModuleDef moduleDef =
-            ModuleDefLoader.loadFromClassPath(logger, compilerContext, moduleName);
-        compilerContext = compilerContextBuilder.module(moduleDef).build();
+        ModuleDef moduleDef = ModuleDefLoader.loadFromClassPath(logger, moduleName);
+        CompilerContext compilerContext = compilerContextBuilder.module(moduleDef).build();
         oracle = moduleDef.getCompilationState(logger, compilerContext).getTypeOracle();
         typeOracleMap.put(moduleName, oracle);
       }
@@ -58,4 +56,4 @@
   public TypeOracle getOracle() {
     return oracle;
   }
-}
\ No newline at end of file
+}
diff --git a/user/src/com/google/gwt/junit/CompileStrategy.java b/user/src/com/google/gwt/junit/CompileStrategy.java
index 980a783..1a2938a 100644
--- a/user/src/com/google/gwt/junit/CompileStrategy.java
+++ b/user/src/com/google/gwt/junit/CompileStrategy.java
@@ -163,8 +163,7 @@
      * Synthesize a synthetic module that derives from the user-specified module
      * but also includes JUnit support.
      */
-    ModuleDef moduleDef = ModuleDefLoader.createSyntheticModule(
-        treeLogger, junitShell.getCompilerContext(), syntheticModuleName,
+    ModuleDef moduleDef = ModuleDefLoader.createSyntheticModule(treeLogger, syntheticModuleName,
         new String[] {moduleName, "com.google.gwt.junit.JUnit"}, false);
 
     // Replace any user entry points with our test runner.
diff --git a/user/src/com/google/gwt/junit/JUnitShell.java b/user/src/com/google/gwt/junit/JUnitShell.java
index 0931a23..5056d82 100644
--- a/user/src/com/google/gwt/junit/JUnitShell.java
+++ b/user/src/com/google/gwt/junit/JUnitShell.java
@@ -57,7 +57,6 @@
 import com.google.gwt.dev.util.arg.ArgHandlerJsInteropMode;
 import com.google.gwt.dev.util.arg.ArgHandlerLocalWorkers;
 import com.google.gwt.dev.util.arg.ArgHandlerLogLevel;
-import com.google.gwt.dev.util.arg.ArgHandlerMaxPermsPerPrecompile;
 import com.google.gwt.dev.util.arg.ArgHandlerNamespace;
 import com.google.gwt.dev.util.arg.ArgHandlerOptimize;
 import com.google.gwt.dev.util.arg.ArgHandlerScriptStyle;
@@ -284,7 +283,6 @@
       registerHandler(new ArgHandlerDisableRunAsync(options));
       registerHandler(new ArgHandlerDisableUpdateCheck(options));
       registerHandler(new ArgHandlerDraftCompile(options));
-      registerHandler(new ArgHandlerMaxPermsPerPrecompile(options));
       registerHandler(new ArgHandlerLocalWorkers(options));
       registerHandler(new ArgHandlerNamespace(options));
       registerHandler(new ArgHandlerOptimize(options));
diff --git a/user/test/com/google/gwt/dev/StrictModeTest.java b/user/test/com/google/gwt/dev/StrictModeTest.java
index 093036b..9bdabc7 100644
--- a/user/test/com/google/gwt/dev/StrictModeTest.java
+++ b/user/test/com/google/gwt/dev/StrictModeTest.java
@@ -124,7 +124,7 @@
   }
 
   private void precompile(TreeLogger logger, String moduleName) throws UnableToCompleteException {
-    ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, compilerContext, moduleName);
+    ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, moduleName);
     compilerContext = compilerContextBuilder.module(module).build();
     if (Precompile.precompile(logger, compilerContext) == null) {
       throw new UnableToCompleteException();
@@ -134,7 +134,7 @@
   private boolean validate(TreeLogger logger, String moduleName) {
     ModuleDef module;
     try {
-      module = ModuleDefLoader.loadFromClassPath(logger, compilerContext, moduleName);
+      module = ModuleDefLoader.loadFromClassPath(logger, moduleName);
       compilerContext = compilerContextBuilder.module(module).build();
     } catch (UnableToCompleteException e) {
       fail("Failed to load the module definition");
diff --git a/user/test/com/google/gwt/dev/cfg/PropertyTest.java b/user/test/com/google/gwt/dev/cfg/PropertyTest.java
index 3d6ca2d..12e16d7 100644
--- a/user/test/com/google/gwt/dev/cfg/PropertyTest.java
+++ b/user/test/com/google/gwt/dev/cfg/PropertyTest.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.dev.CompilerContext;
 import com.google.gwt.dev.util.log.PrintWriterTreeLogger;
 
 import junit.framework.TestCase;
@@ -53,8 +52,7 @@
   public PropertyTest() throws UnableToCompleteException {
     // Module has the same name as this class.
     String moduleName = getClass().getCanonicalName();
-    moduleDef =
-        ModuleDefLoader.loadFromClassPath(getRootLogger(), new CompilerContext(), moduleName);
+    moduleDef = ModuleDefLoader.loadFromClassPath(getRootLogger(), moduleName);
   }
 
   public void testModule() {
@@ -145,7 +143,7 @@
     for (String name : Arrays.asList("A", "B", "C", "D")) {
       try {
         ModuleDefLoader.loadFromClassPath(
-            TreeLogger.NULL, new CompilerContext(), moduleName + "Bad" + name);
+            TreeLogger.NULL, moduleName + "Bad" + name);
         fail("Test " + name + " should have thrown UnableToCompleteException");
       } catch (UnableToCompleteException e) {
         // OK
@@ -178,7 +176,7 @@
   }
 
   public void testRestrictAndReleaseProperty() throws UnableToCompleteException {
-    ModuleDef moduleDef = ModuleDefLoader.loadFromClassPath(getRootLogger(), new CompilerContext(),
+    ModuleDef moduleDef = ModuleDefLoader.loadFromClassPath(getRootLogger(),
         getClass().getCanonicalName() + "2");
     Properties properties = moduleDef.getProperties();
 
diff --git a/user/test/com/google/gwt/dev/cfg/PublicTagTest.java b/user/test/com/google/gwt/dev/cfg/PublicTagTest.java
index 0497efd..b9403eb 100644
--- a/user/test/com/google/gwt/dev/cfg/PublicTagTest.java
+++ b/user/test/com/google/gwt/dev/cfg/PublicTagTest.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.dev.CompilerContext;
 import com.google.gwt.dev.util.log.PrintWriterTreeLogger;
 
 import junit.framework.TestCase;
@@ -42,8 +41,7 @@
   public PublicTagTest() throws UnableToCompleteException {
     // Module has the same name as this class.
     String moduleName = getClass().getCanonicalName();
-    moduleDef =
-        ModuleDefLoader.loadFromClassPath(getRootLogger(), new CompilerContext(), moduleName);
+    moduleDef = ModuleDefLoader.loadFromClassPath(getRootLogger(), moduleName);
   }
 
   public void testPublicTag() {
diff --git a/user/test/com/google/gwt/dev/cfg/TestSuperAndSourceTags.java b/user/test/com/google/gwt/dev/cfg/TestSuperAndSourceTags.java
index 605bdd2..0ae1683 100644
--- a/user/test/com/google/gwt/dev/cfg/TestSuperAndSourceTags.java
+++ b/user/test/com/google/gwt/dev/cfg/TestSuperAndSourceTags.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.dev.CompilerContext;
 import com.google.gwt.dev.cfg.test.caseinsensitive.GOO;
 import com.google.gwt.dev.cfg.test.caseinsensitive.Good;
 import com.google.gwt.dev.cfg.test.casesensitive.CaseSensitive_A_Foo;
@@ -67,8 +66,7 @@
   public TestSuperAndSourceTags() throws UnableToCompleteException {
     // Module has the same name as this class.
     String moduleName = getClass().getCanonicalName();
-    moduleDef =
-        ModuleDefLoader.loadFromClassPath(getRootLogger(), new CompilerContext(), moduleName);
+    moduleDef = ModuleDefLoader.loadFromClassPath(getRootLogger(), moduleName);
   }
 
   /**
diff --git a/user/test/com/google/gwt/i18n/rebind/TypeOracleMessageTest.java b/user/test/com/google/gwt/i18n/rebind/TypeOracleMessageTest.java
index a46f00c..289c848 100644
--- a/user/test/com/google/gwt/i18n/rebind/TypeOracleMessageTest.java
+++ b/user/test/com/google/gwt/i18n/rebind/TypeOracleMessageTest.java
@@ -38,11 +38,9 @@
     JClassType classType;
     TreeLogger logger = new FailErrorLogger();
     try {
-      CompilerContext.Builder compilerContextBuilder = new CompilerContext.Builder();
-      CompilerContext compilerContext = compilerContextBuilder.build();
       ModuleDef module = ModuleDefLoader.loadFromClassPath(logger,
-          compilerContext, Child.class.getPackage().getName() + ".Testing");
-      compilerContext = compilerContextBuilder.module(module).build();
+          Child.class.getPackage().getName() + ".Testing");
+      CompilerContext compilerContext = new CompilerContext.Builder().module(module).build();
       CompilationState compilationState = module.getCompilationState(logger, compilerContext);
       TypeOracle typeOracle = compilationState.getTypeOracle();
       classType = typeOracle.findType(TEST_CLASS.getCanonicalName());
diff --git a/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java b/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
index e75d147..aef3e8b 100644
--- a/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
+++ b/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
@@ -249,12 +249,11 @@
     if (sTypeOracle == null) {
       TreeLogger logger = createLogger();
       CompilerContext.Builder compilerContextBuilder = new CompilerContext.Builder();
-      CompilerContext compilerContext = compilerContextBuilder.build();
-      ModuleDef moduleDef = ModuleDefLoader.createSyntheticModule(logger, compilerContext,
+      ModuleDef moduleDef = ModuleDefLoader.createSyntheticModule(logger,
           "com.google.gwt.user.rebind.rpc.testcases.RebindRPCTestCases.JUnit", new String[] {
               "com.google.gwt.user.rebind.rpc.testcases.RebindRPCTestCases",
               "com.google.gwt.junit.JUnit"}, true);
-      compilerContext = compilerContextBuilder.module(moduleDef).build();
+      CompilerContext compilerContext = new CompilerContext.Builder().module(moduleDef).build();
       sTypeOracle = moduleDef.getCompilationState(logger, compilerContext).getTypeOracle();
     }
     return sTypeOracle;
diff --git a/user/test/org/hibernate/jsr303/tck/util/TckGeneratorTestUtils.java b/user/test/org/hibernate/jsr303/tck/util/TckGeneratorTestUtils.java
index e6b17c3..031d0bc 100644
--- a/user/test/org/hibernate/jsr303/tck/util/TckGeneratorTestUtils.java
+++ b/user/test/org/hibernate/jsr303/tck/util/TckGeneratorTestUtils.java
@@ -48,10 +48,8 @@
 
   static StandardGeneratorContext createGeneratorContext(String moduleName,
       TreeLogger logger) throws UnableToCompleteException {
-    CompilerContext.Builder compilerContextBuilder = new CompilerContext.Builder();
-    CompilerContext compilerContext = compilerContextBuilder.build();
-    ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, compilerContext, moduleName);
-    compilerContext = compilerContextBuilder.module(module).build();
+    ModuleDef module = ModuleDefLoader.loadFromClassPath(logger, moduleName);
+    CompilerContext compilerContext = new CompilerContext.Builder().module(module).build();
     compilerContext.getOptions().setGenDir(new File(System.getProperty("java.io.tmpdir")));
 
     ArtifactSet allGenreatedArtifacts = new ArtifactSet();