# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Args for all uses of the closure compiler
common_closure_args = [
  "extra_annotation_name=attribute",
  "extra_annotation_name=demo",
  "extra_annotation_name=element",
  "extra_annotation_name=group",
  "extra_annotation_name=hero",
  "extra_annotation_name=homepage",
  "extra_annotation_name=status",
  "extra_annotation_name=submodule",
]

strict_error_checking_closure_args = [
  "jscomp_error=accessControls",
  "jscomp_error=ambiguousFunctionDecl",
  "jscomp_error=checkTypes",
  "jscomp_error=checkVars",
  "jscomp_error=constantProperty",
  "jscomp_error=deprecated",
  "jscomp_error=externsValidation",
  "jscomp_error=globalThis",
  "jscomp_error=invalidCasts",
  "jscomp_error=missingProperties",
  "jscomp_error=missingReturn",
  "jscomp_error=nonStandardJsDocs",
  "jscomp_error=suspiciousCode",
  "jscomp_error=undefinedNames",
  "jscomp_error=undefinedVars",
  "jscomp_error=unknownDefines",
  "jscomp_error=uselessCode",
  "jscomp_error=visibility",
]

# Additional closure args for performing full checks.
checking_closure_args = strict_error_checking_closure_args + [
                          "compilation_level=SIMPLE_OPTIMIZATIONS",

                          "language_in=ECMASCRIPT_2017",
                          "language_out=ECMASCRIPT5_STRICT",

                          "chrome_pass",
                          "polymer_pass",

                          "jscomp_off=duplicate",
                        ]

# Additional closure arguments for minifying
minifying_closure_args = [
  "compilation_level=WHITESPACE_ONLY",

  "language_in=ECMASCRIPT_NEXT",
  "language_out=ECMASCRIPT_2017",

  # TODO(wychen): turn on 'use strict'. crbug.com/729689
  "emit_use_strict=false",
]

# For compatibility with old uses.
default_closure_args = common_closure_args + checking_closure_args

default_disabled_closure_args = [ "jscomp_off=duplicate" ]
