12da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#!/usr/bin/env python
22da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#
32da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Copyright 2007 The Closure Linter Authors. All Rights Reserved.
42da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#
52da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Licensed under the Apache License, Version 2.0 (the "License");
62da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# you may not use this file except in compliance with the License.
72da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# You may obtain a copy of the License at
82da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#
92da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#      http://www.apache.org/licenses/LICENSE-2.0
102da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#
112da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Unless required by applicable law or agreed to in writing, software
122da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# distributed under the License is distributed on an "AS-IS" BASIS,
132da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
142da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# See the License for the specific language governing permissions and
152da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# limitations under the License.
162da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
172da489cd246702bee5938545b18a6f710ed214bcJamie Gennis"""Error codes for JavaScript style checker."""
182da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
192da489cd246702bee5938545b18a6f710ed214bcJamie Gennis__author__ = ('robbyw@google.com (Robert Walker)',
202da489cd246702bee5938545b18a6f710ed214bcJamie Gennis              'ajp@google.com (Andy Perelson)')
212da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
222da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
232da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef ByName(name):
242da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  """Get the error code for the given error name.
252da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
262da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  Args:
272da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    name: The name of the error
282da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
292da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  Returns:
302da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    The error code
312da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  """
322da489cd246702bee5938545b18a6f710ed214bcJamie Gennis  return globals()[name]
332da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
342da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
352da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# "File-fatal" errors - these errors stop further parsing of a single file
362da489cd246702bee5938545b18a6f710ed214bcJamie GennisFILE_NOT_FOUND = -1
372da489cd246702bee5938545b18a6f710ed214bcJamie GennisFILE_DOES_NOT_PARSE = -2
382da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
392da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Spacing
402da489cd246702bee5938545b18a6f710ed214bcJamie GennisEXTRA_SPACE = 1
412da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_SPACE = 2
422da489cd246702bee5938545b18a6f710ed214bcJamie GennisEXTRA_LINE = 3
432da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_LINE = 4
442da489cd246702bee5938545b18a6f710ed214bcJamie GennisILLEGAL_TAB = 5
452da489cd246702bee5938545b18a6f710ed214bcJamie GennisWRONG_INDENTATION = 6
462da489cd246702bee5938545b18a6f710ed214bcJamie GennisWRONG_BLANK_LINE_COUNT = 7
472da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
482da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Semicolons
492da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_SEMICOLON = 10
502da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_SEMICOLON_AFTER_FUNCTION = 11
512da489cd246702bee5938545b18a6f710ed214bcJamie GennisILLEGAL_SEMICOLON_AFTER_FUNCTION = 12
522da489cd246702bee5938545b18a6f710ed214bcJamie GennisREDUNDANT_SEMICOLON = 13
532da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
542da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Miscellaneous
552da489cd246702bee5938545b18a6f710ed214bcJamie GennisILLEGAL_PROTOTYPE_MEMBER_VALUE = 100
562da489cd246702bee5938545b18a6f710ed214bcJamie GennisLINE_TOO_LONG = 110
572da489cd246702bee5938545b18a6f710ed214bcJamie GennisLINE_STARTS_WITH_OPERATOR = 120
582da489cd246702bee5938545b18a6f710ed214bcJamie GennisCOMMA_AT_END_OF_LITERAL = 121
592da489cd246702bee5938545b18a6f710ed214bcJamie GennisMULTI_LINE_STRING = 130
602da489cd246702bee5938545b18a6f710ed214bcJamie GennisUNNECESSARY_DOUBLE_QUOTED_STRING = 131
612da489cd246702bee5938545b18a6f710ed214bcJamie GennisUNUSED_PRIVATE_MEMBER = 132
622da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
632da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Requires, provides
642da489cd246702bee5938545b18a6f710ed214bcJamie GennisGOOG_REQUIRES_NOT_ALPHABETIZED = 140
652da489cd246702bee5938545b18a6f710ed214bcJamie GennisGOOG_PROVIDES_NOT_ALPHABETIZED = 141
662da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_GOOG_REQUIRE = 142
672da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_GOOG_PROVIDE = 143
682da489cd246702bee5938545b18a6f710ed214bcJamie GennisEXTRA_GOOG_REQUIRE = 144
692da489cd246702bee5938545b18a6f710ed214bcJamie GennisEXTRA_GOOG_PROVIDE = 145
702da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
712da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# JsDoc
722da489cd246702bee5938545b18a6f710ed214bcJamie GennisINVALID_JSDOC_TAG = 200
732da489cd246702bee5938545b18a6f710ed214bcJamie GennisINVALID_USE_OF_DESC_TAG = 201
742da489cd246702bee5938545b18a6f710ed214bcJamie GennisNO_BUG_NUMBER_AFTER_BUG_TAG = 202
752da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_PARAMETER_DOCUMENTATION = 210
762da489cd246702bee5938545b18a6f710ed214bcJamie GennisEXTRA_PARAMETER_DOCUMENTATION = 211
772da489cd246702bee5938545b18a6f710ed214bcJamie GennisWRONG_PARAMETER_DOCUMENTATION = 212
782da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_JSDOC_TAG_TYPE = 213
792da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_JSDOC_TAG_DESCRIPTION = 214
802da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_JSDOC_PARAM_NAME = 215
812da489cd246702bee5938545b18a6f710ed214bcJamie GennisOUT_OF_ORDER_JSDOC_TAG_TYPE = 216
822da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_RETURN_DOCUMENTATION = 217
832da489cd246702bee5938545b18a6f710ed214bcJamie GennisUNNECESSARY_RETURN_DOCUMENTATION = 218
842da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_BRACES_AROUND_TYPE = 219
852da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_MEMBER_DOCUMENTATION = 220
862da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_PRIVATE = 221
872da489cd246702bee5938545b18a6f710ed214bcJamie GennisEXTRA_PRIVATE = 222
882da489cd246702bee5938545b18a6f710ed214bcJamie GennisINVALID_OVERRIDE_PRIVATE = 223
892da489cd246702bee5938545b18a6f710ed214bcJamie GennisINVALID_INHERIT_DOC_PRIVATE = 224
902da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_JSDOC_TAG_THIS = 225
912da489cd246702bee5938545b18a6f710ed214bcJamie GennisUNNECESSARY_BRACES_AROUND_INHERIT_DOC = 226
922da489cd246702bee5938545b18a6f710ed214bcJamie GennisINVALID_AUTHOR_TAG_DESCRIPTION = 227
932da489cd246702bee5938545b18a6f710ed214bcJamie GennisJSDOC_PREFER_QUESTION_TO_PIPE_NULL = 230
942da489cd246702bee5938545b18a6f710ed214bcJamie GennisJSDOC_ILLEGAL_QUESTION_WITH_PIPE = 231
952da489cd246702bee5938545b18a6f710ed214bcJamie GennisJSDOC_MISSING_OPTIONAL_TYPE = 232
962da489cd246702bee5938545b18a6f710ed214bcJamie GennisJSDOC_MISSING_OPTIONAL_PREFIX = 233
972da489cd246702bee5938545b18a6f710ed214bcJamie GennisJSDOC_TAG_DESCRIPTION_ENDS_WITH_INVALID_CHARACTER = 240
982da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# TODO(robbyw): Split this in to more specific syntax problems.
992da489cd246702bee5938545b18a6f710ed214bcJamie GennisINCORRECT_SUPPRESS_SYNTAX = 250
1002da489cd246702bee5938545b18a6f710ed214bcJamie GennisINVALID_SUPPRESS_TYPE = 251
1012da489cd246702bee5938545b18a6f710ed214bcJamie GennisUNNECESSARY_SUPPRESS = 252
1022da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1032da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# File ending
1042da489cd246702bee5938545b18a6f710ed214bcJamie GennisFILE_MISSING_NEWLINE = 300
1052da489cd246702bee5938545b18a6f710ed214bcJamie GennisFILE_IN_BLOCK = 301
1062da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1072da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Interfaces
1082da489cd246702bee5938545b18a6f710ed214bcJamie GennisINTERFACE_CONSTRUCTOR_CANNOT_HAVE_PARAMS = 400
1092da489cd246702bee5938545b18a6f710ed214bcJamie GennisINTERFACE_METHOD_CANNOT_HAVE_CODE = 401
1102da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1112da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Comments
1122da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_END_OF_SCOPE_COMMENT = 500
1132da489cd246702bee5938545b18a6f710ed214bcJamie GennisMALFORMED_END_OF_SCOPE_COMMENT = 501
1142da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1152da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# ActionScript specific errors:
1162da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# TODO(user): move these errors to their own file and move all JavaScript
1172da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# specific errors to their own file as well.
1182da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# All ActionScript specific errors should have error number at least 1000.
1192da489cd246702bee5938545b18a6f710ed214bcJamie GennisFUNCTION_MISSING_RETURN_TYPE = 1132
1202da489cd246702bee5938545b18a6f710ed214bcJamie GennisPARAMETER_MISSING_TYPE = 1133
1212da489cd246702bee5938545b18a6f710ed214bcJamie GennisVAR_MISSING_TYPE = 1134
1222da489cd246702bee5938545b18a6f710ed214bcJamie GennisPARAMETER_MISSING_DEFAULT_VALUE = 1135
1232da489cd246702bee5938545b18a6f710ed214bcJamie GennisIMPORTS_NOT_ALPHABETIZED = 1140
1242da489cd246702bee5938545b18a6f710ed214bcJamie GennisIMPORT_CONTAINS_WILDCARD = 1141
1252da489cd246702bee5938545b18a6f710ed214bcJamie GennisUNUSED_IMPORT = 1142
1262da489cd246702bee5938545b18a6f710ed214bcJamie GennisINVALID_TRACE_SEVERITY_LEVEL = 1250
1272da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_TRACE_SEVERITY_LEVEL = 1251
1282da489cd246702bee5938545b18a6f710ed214bcJamie GennisMISSING_TRACE_MESSAGE = 1252
1292da489cd246702bee5938545b18a6f710ed214bcJamie GennisREMOVE_TRACE_BEFORE_SUBMIT = 1253
1302da489cd246702bee5938545b18a6f710ed214bcJamie GennisREMOVE_COMMENT_BEFORE_SUBMIT = 1254
1312da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# End of list of ActionScript specific errors.
1322da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1332da489cd246702bee5938545b18a6f710ed214bcJamie GennisNEW_ERRORS = frozenset([
1342da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    # Errors added after 2.0.2:
1352da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    WRONG_INDENTATION,
1362da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    MISSING_SEMICOLON,
1372da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    # Errors added after 2.3.4:
1382da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    MISSING_END_OF_SCOPE_COMMENT,
1392da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    MALFORMED_END_OF_SCOPE_COMMENT,
1402da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    UNUSED_PRIVATE_MEMBER,
1412da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    # Errors added after 2.3.5:
1422da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    ])
143