Skip to content

Commit

Permalink
Allow sentinel-only output files in checksOnly mode to make bazel happy.
Browse files Browse the repository at this point in the history
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=123182655
  • Loading branch information
tbreisacher authored and blickly committed May 25, 2016
1 parent 467c5b7 commit 3d5b393
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 6 deletions.
Expand Up @@ -35,6 +35,7 @@
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.google.javascript.jscomp.CompilerOptions.JsonStreamMode;
import com.google.javascript.jscomp.CompilerOptions.OutputJs;
import com.google.javascript.jscomp.CompilerOptions.TweakProcessing;
import com.google.javascript.jscomp.deps.ClosureBundler;
import com.google.javascript.jscomp.deps.SourceCodeEscapers;
Expand Down Expand Up @@ -973,6 +974,12 @@ static void writeOutput(Appendable out, Compiler compiler, String code,
String wrapper, String codePlaceholder,
@Nullable Function<String, String> escaper)
throws IOException {
if (compiler.getOptions().outputJs == OutputJs.SENTINEL) {
out.append("// No JS output because the compiler was run in checks-only mode.\n");
return;
}
Preconditions.checkState(compiler.getOptions().outputJs == OutputJs.NORMAL);

int pos = wrapper.indexOf(codePlaceholder);
if (pos != -1) {
String prefix = "";
Expand Down Expand Up @@ -1195,7 +1202,7 @@ int processResults(Result result, List<JSModule> modules, B options) throws IOEx
outputBundle();
outputModuleGraphJson();
return 0;
} else if (options.outputJs && result.success) {
} else if (options.outputJs != OutputJs.NONE && result.success) {
outputModuleGraphJson();
if (modules == null) {
outputSingleBinary(options);
Expand Down
4 changes: 3 additions & 1 deletion src/com/google/javascript/jscomp/CommandLineRunner.java
Expand Up @@ -1496,7 +1496,9 @@ protected CompilerOptions createOptions() {
options.setEnvironment(flags.environment);

options.setChecksOnly(flags.checksOnly);
options.setOutputJs(!flags.checksOnly);
if (flags.checksOnly) {
options.setOutputJs(CompilerOptions.OutputJs.NONE);
}

if (flags.useTypesForOptimization) {
level.setTypeBasedOptimizationOptions(options);
Expand Down
16 changes: 12 additions & 4 deletions src/com/google/javascript/jscomp/CompilerOptions.java
Expand Up @@ -717,9 +717,17 @@ public void setAppNameStr(String appNameStr) {
/** Record function information */
public boolean recordFunctionInformation;

public boolean checksOnly;
boolean checksOnly;

public boolean outputJs;
static enum OutputJs {
// Don't output anything.
NONE,
// Output a "sentinel" file containing just a comment.
SENTINEL,
// Output the compiled JS.
NORMAL,
}
OutputJs outputJs;

public boolean generateExports;

Expand Down Expand Up @@ -1085,7 +1093,7 @@ public CompilerOptions() {
appNameStr = "";
recordFunctionInformation = false;
checksOnly = false;
outputJs = true;
outputJs = OutputJs.NORMAL;
generateExports = false;
generateExportsAfterTypeChecking = true;
exportLocalPropertyDefinitions = false;
Expand Down Expand Up @@ -1505,7 +1513,7 @@ public void setChecksOnly(boolean checksOnly) {
this.checksOnly = checksOnly;
}

public void setOutputJs(boolean outputJs) {
void setOutputJs(OutputJs outputJs) {
this.outputJs = outputJs;
}

Expand Down

0 comments on commit 3d5b393

Please sign in to comment.