anchor.diff:      if (analyzeOnly) return;
       if (code == null) {
         fail('Compilation failed.');
  -      // fail normally means exiting, but in batch mode we simply set the
  -      // exitcode used later on. We should not try to write out the deps file
  -      // if we end up here.
  -      return;
       }
       writeString(Uri.parse('$out.deps'),
                   getDepsOutput(inputProvider.sourceFiles));
  
positive.code:   }
  }
  
  void batchMain(List<String> batchArguments) {
    int exitCode;
  
    exitFunc = (errorCode) {
      // Crash shadows any other error code.
      if (exitCode == 253) return;
      exitCode = errorCode;
    };
  
    runJob() {
  
negative.code:       return internalMain(args);
      })
      .catchError((exception, trace) {
        if (!identical(exception, _EXIT_SIGNAL)) {
          exitCode = 253;
        }
      })
      .whenComplete(() {
        // The testing framework waits for a status line on stdout and stderr
  