| Index: PRESUBMIT.py | 
| diff --git a/PRESUBMIT.py b/PRESUBMIT.py | 
| index 64d30c320755f00223435e713ae9d0f3a8ae9a29..a71d7d55e1b98c03faced6e44430137da5b3768d 100644 | 
| --- a/PRESUBMIT.py | 
| +++ b/PRESUBMIT.py | 
| @@ -42,24 +42,20 @@ def _CheckDartFormat(input_api, output_api): | 
|  | 
| def HasFormatErrors(filename=None, contents=None): | 
| args = [prebuilt_dartfmt, '--set-exit-if-changed'] | 
| -    if contents: | 
| -      process = subprocess.Popen(args, | 
| -                                 stdout=subprocess.PIPE, | 
| -                                 stdin=subprocess.PIPE | 
| -                                 ) | 
| -      out, err = process.communicate(input=contents) | 
| - | 
| -      # There was a bug in the return code dartfmt returns when reading from | 
| -      # stdin so we have to check whether the content matches rather than using | 
| -      # the return code. When the next version of the dartfmt lands in the sdk | 
| -      # we can switch this line to "return process.returncode != 0" | 
| -      return out != contents | 
| -    else: | 
| -      try: | 
| -        subprocess.check_output(args + [filename, '-n']) | 
| -      except subprocess.CalledProcessError: | 
| -        return True | 
| -      return False | 
| +    if not contents: | 
| +      args += [filename, '-n'] | 
| + | 
| +    process = subprocess.Popen(args, | 
| +                               stdout=subprocess.PIPE, | 
| +                               stdin=subprocess.PIPE | 
| +                               ) | 
| +    process.communicate(input=contents) | 
| + | 
| +    # Check for exit code 1 explicitly to distinguish it from a syntax error | 
| +    # in the file (exit code 65). The repo contains many Dart files that are | 
| +    # known to have syntax errors for testing purposes and which can't be | 
| +    # parsed and formatted. Don't treat those as errors. | 
| +    return process.returncode == 1 | 
|  | 
| unformatted_files = [] | 
| for git_file in input_api.AffectedTextFiles(): | 
|  |