blob: 550ea7e65b978e2ae52d598920e56c9b2229490d [file] [log] [blame]
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.google.dart.compiler.resolver;
import com.google.dart.compiler.ErrorCode;
import com.google.dart.compiler.ErrorSeverity;
import com.google.dart.compiler.SubSystem;
/**
* {@link ErrorCode}s for resolver.
*/
public enum ResolverErrorCode implements ErrorCode {
BLACK_LISTED_EXTENDS("'%s' can not be used as superclass"),
BLACK_LISTED_IMPLEMENTS("'%s' can not be used as superinterface"),
BREAK_LABEL_RESOLVES_TO_CASE_OR_DEFAULT("break label resolves to case or default statement"),
BUILT_IN_IDENTIFIER_AS_IMPORT_PREFIX("Built-in identifier '%s' cannot be used as a import prefix"),
BUILT_IN_IDENTIFIER_AS_TYPE("Built-in identifier '%s' cannot be used as a type annotation"),
CANNOT_ACCESS_FIELD_IN_INIT("Cannot access an instance field in an initializer expression"),
CANNOT_ACCESS_METHOD(ErrorSeverity.WARNING, "Cannot access private method '%s'"),
CANNOT_ACCESS_OUTER_LABEL("Cannot access label %s declared in an outer function"),
CANNOT_ASSIGN_TO_FINAL("cannot assign value to final variable \"%s\"."),
CANNOT_ASSIGN_TO_METHOD("cannot assign value to method '%s'."),
CANNOT_BE_RESOLVED("cannot resolve %s"),
// TODO(zundel): error message needs JUnit test - how to test #imports in junit?
CANNOT_BE_RESOLVED_LIBRARY("cannot resolve %s in library %s"),
CANNOT_CALL_FUNCTION_TYPE_ALIAS("Function type aliases cannot be called"),
// TODO(zundel): error message needs JUnit test - how to test #imports in junit?
CANNOT_CALL_LIBRARY_PREFIX("Library prefixes cannot be called"),
CANNOT_DECLARE_NON_FACTORY_CONSTRUCTOR(ErrorSeverity.WARNING,
"Cannot declare a non-factory named constructor of another class."),
CANNOT_HIDE_IMPORT_PREFIX("Cannot hide import prefix '%s'"),
CANNOT_INIT_STATIC_FIELD_IN_INITIALIZER("Cannot initialize a static field in an initializer list"),
CANNOT_OVERRIDE_INSTANCE_MEMBER("static member cannot override instance member %s of %s"),
CANNOT_OVERRIDE_METHOD_NUM_REQUIRED_PARAMS(
"cannot override method %s from %s, wrong number of required parameters"),
CANNOT_OVERRIDE_METHOD_NAMED_PARAMS("cannot override method %s, named parameters don't match"),
CANNOT_OVERRIDE_METHOD_OPTIONAL_PARAMS("cannot override method %s, optional positional parameters don't match"),
CANNOT_RESOLVE_CONSTRUCTOR("cannot resolve constructor %s"),
CANNOT_RESOLVE_FIELD("cannot resolve field %s"),
CANNOT_RESOLVE_LABEL("cannot resolve label %s"),
CANNOT_RESOLVE_METHOD("cannot resolve method '%s'"),
CANNOT_RESOLVE_METHOD_IN_CLASS(ErrorSeverity.WARNING, "cannot resolve method '%s' in class '%s'"),
// TODO(zundel): error message needs JUnit test - how to test #imports in junit?
CANNOT_RESOLVE_METHOD_IN_LIBRARY("cannot resolve method '%s' in library '%s'"),
// TODO(zundel): To exercise this requires simulating a corrupted SDK?
CANNOT_RESOLVE_SDK_TYPE("cannot resolve SDK type %s"),
CANNOT_RESOLVE_SUPER_CONSTRUCTOR("cannot resolve method '%s'"),
CANNOT_RESOLVE_IMPLICIT_CALL_TO_SUPER_CONSTRUCTOR(
"super type %s does not have a default constructor"),
CANNOT_USE_INSTANCE_FIELD_IN_INSTANCE_FIELD_INITIALIZER(
"Cannot use instance field in instance field initializer"),
CANNOT_USE_THIS_IN_INSTANCE_FIELD_INITIALIZER("Cannot use 'this' in instance field initializer"),
CANNOT_USE_TYPE("Cannot reference the type '%s' in this context"),
// TODO(zundel): error message needs JUnit test (reachable code?)
CANNOT_USE_TYPE_VARIABLE("Cannot reference the type variable '%s' in this context"),
CIRCULAR_REFERENCE(
"Circular reference detected: compile-time constants cannot reference themselves."),
CONST_REQUIRES_VALUE("Constant fields must have an initial value"),
CONSTRUCTOR_CANNOT_BE_ABSTRACT("A constructor cannot be abstract"),
CONSTRUCTOR_CANNOT_BE_STATIC("A constructor cannot be static"),
CONSTRUCTOR_CANNOT_HAVE_RETURN_TYPE("Generative constructors cannot have return type"),
CONST_AND_NONCONST_CONSTRUCTOR("Cannot reference to non-const constructor."),
CONST_ARRAY_WITH_TYPE_VARIABLE("Const array literals cannot have a type variable as a type argument"),
CONST_CLASS_WITH_INHERITED_NONFINAL_FIELDS(
"Const class %s cannot have non-final, inherited field %s from class %s"),
CONST_CLASS_WITH_NONFINAL_FIELDS("Const class %s cannot have non-final field %s"),
CONST_CONSTRUCTOR_CANNOT_HAVE_BODY("A const constructor cannot have a body"),
CONST_CONSTRUCTOR_MUST_CALL_CONST_SUPER("const constructor must call const super constructor"),
CONST_MAP_WITH_TYPE_VARIABLE("Const map literals cannot have a type variable as a type argument"),
CONST_WITH_TYPE_VARIABLE("Const constructor cannot be invoked with a type variable as a type argument"),
CONSTANTS_MUST_BE_INITIALIZED("constants must be initialized"),
CONTINUE_LABEL_RESOLVES_TO_SWITCH("continue label resolves to switch, must be loop or switch member"),
CYCLIC_CLASS("%s causes a cycle in the supertype graph"),
DEFAULT_CLASS_MUST_HAVE_SAME_TYPE_PARAMS(
"default class must have the same type parameters as declared in the interface"),
DEFAULT_CONSTRUCTOR_UNRESOLVED("Cannot resolve constructor with name '%s' in default class '%s'"),
DEFAULT_CONSTRUCTOR_NUMBER_OF_REQUIRED_PARAMETERS(
"Constructor '%s' in '%s' has %s required parameters, doesn't match '%s' in '%s' with %s"),
DEFAULT_CONSTRUCTOR_OPTIONAL_POSITIONAL_PARAMETERS(
"Constructor '%s' in '%s' has %s optional positional parameters, doesn't match '%s' in '%s' with %s"),
DEFAULT_CONSTRUCTOR_NAMED_PARAMETERS(
"Constructor '%s' in '%s' has named parameters %s, doesn't match '%s' in '%s' with %s"),
DEFAULT_MUST_SPECIFY_CLASS("default must indicate a class, not an interface"),
DEPRECATED_MAP_LITERAL_SYNTAX(ErrorSeverity.WARNING,
"Deprecated Map literal syntax. Both String (as key) and value type arguments required."),
DID_YOU_MEAN_NEW("%1$s is a %2$s. Did you mean (new %1$s)?"),
DUPLICATE_IMPLEMENTS_TYPE("Duplicate type in the implements clause"),
DUPLICATE_IMPORTED_NAME("Element '%s' is introduced by %s imports: %s"),
DUPLICATE_IMPORTED_NAME_TYPE(ErrorSeverity.WARNING, "Element '%s' is introduced by %s imports: %s"),
DUPLICATE_INITIALIZATION("Duplicate initialization of '%s'"),
DUPLICATE_FUNCTION_EXPRESSION("Duplicate function expression '%s'"),
DUPLICATE_LABEL_IN_SWITCH_STATEMENT("Duplicate label in switch statement"),
DUPLICATE_LOCAL_VARIABLE_ERROR("Duplicate local variable '%s'"),
DUPLICATE_MEMBER("Duplicate member '%s'"),
DUPLICATE_NAMED_ARGUMENT("Duplicate named parameter argument"),
DUPLICATE_PARAMETER("Duplicate parameter '%s'"),
DUPLICATE_TOP_LEVEL_DECLARATION("duplicate top-level declaration %s at %s"),
DUPLICATE_TYPE_VARIABLE("Duplicate type variable '%s'"),
// TODO(zundel): error message needs JUnit test, (reachable code?)
EXPECTED_AN_INSTANCE_FIELD_IN_SUPER_CLASS(
"expected an instance field in the super class, but got %s"),
EXPECTED_CONSTANT_EXPRESSION("Expected constant expression"),
EXPECTED_CONSTANT_EXPRESSION_BOOLEAN("Expected constant expression of type bool, got %s"),
EXPECTED_CONSTANT_EXPRESSION_INT("Expected constant expression of type int, got %s"),
EXPECTED_CONSTANT_EXPRESSION_STRING("Expected constant expression of type String, got %s"),
EXPECTED_CONSTANT_EXPRESSION_NUMBER("Expected constant expression of type num, got %s"),
EXPECTED_CONSTANT_EXPRESSION_STRING_NUMBER_BOOL(
"Expected constant expression of type String, num or bool, got %s"),
EXPECTED_FIELD_NOT_CLASS("%s is a class, expected a local field"),
EXPECTED_FIELD_NOT_METHOD("%s is a method, expected a local field"),
EXPECTED_FIELD_NOT_PARAMETER("%s is a parameter, expected a local field"),
EXPECTED_FIELD_NOT_TYPE_VAR("%s is a type variable, expected a local field"),
// TODO(zundel): error message needs JUnit test (reachable code?)
EXPECTED_STATIC_FIELD("expected a static field, but got %s"),
// TODO(zundel): error message needs JUnit test, (reachable code?)
EXTRA_TYPE_ARGUMENT("Type variables may not have type arguments"),
FACTORY_CANNOT_BE_CONST("A factory cannot be const"),
FIELD_DOES_NOT_HAVE_A_GETTER(ErrorSeverity.WARNING, "Field does not have a getter"),
FIELD_DOES_NOT_HAVE_A_SETTER(ErrorSeverity.WARNING, "Field does not have a setter"),
FIELD_GETTER_SETTER_SAME_STATIC(ErrorSeverity.WARNING, "Field's getter and setter should be both static or not static"),
FINAL_FIELD_MUST_BE_INITIALIZED("The final field %s must be initialized"),
FORMAL_PARAMETER_NAME_EXPECTED("Formal parameter name expected"),
// TODO(zundel): error message needs JUnit test - how to test #imports in junit?
ILLEGAL_ACCESS_TO_PRIVATE("'%s' is private and not defined in this library"),
// TODO(zundel): error message needs JUnit test - how to test #imports in junit?
ILLEGAL_ACCESS_TO_PRIVATE_MEMBER("\"%s\" refers to \"%s\" which is in a different library"),
ILLEGAL_FIELD_ACCESS_FROM_STATIC("Illegal access of instance field %s from static scope"),
ILLEGAL_METHOD_ACCESS_FROM_STATIC("Illegal access of instance method %s from static scope"),
INIT_FIELD_ONLY_IMMEDIATELY_SURROUNDING_CLASS(
"Only fields of immediately surrounding class can be initialized"),
INSTANCE_METHOD_FROM_INITIALIZER("Instance methods cannot be referenced from constructor initializer"),
INSTANCE_METHOD_FROM_REDIRECT("Instance methods cannot be referenced from constructor redirects"),
INSTANCE_METHOD_FROM_STATIC("Instance methods cannot be referenced from static methods"),
INTERNAL_ERROR("internal error: %s"),
INVALID_OVERRIDE_METADATA(ErrorSeverity.WARNING, "Method marked with @override, but does not override any superclass element"),
INVALID_RETURN_IN_CONSTRUCTOR("Generative constructors cannot return arbitrary expressions"),
// TODO(zundel): error message needs JUnit test (reachable code?)
INVALID_TYPE_NAME_IN_CONSTRUCTOR("Invalid type in constructor name"),
// TODO(zundel): error message needs JUnit test (reachable code?)
IS_A_CONSTRUCTOR("%s.%s is a constructor, expected a method"),
IS_AN_INSTANCE_FIELD(ErrorSeverity.WARNING, "%s.%s is an instance field, not a static method"),
IS_AN_INSTANCE_METHOD(ErrorSeverity.WARNING, "%s.%s is an instance method, not a static method"),
// TODO(zundel): error message needs JUnit test (requires development mode checks)
LIST_LITERAL_ELEMENT_TYPE(
"List literal element type must match declaration '%s' when type checks are on."),
MAIN_FUNCTION_PARAMETERS(
ErrorSeverity.WARNING, "Top-level function 'main' should not have parameters."),
// TODO(zundel): error message needs JUnit test (requires development mode checks)
MAP_LITERAL_ELEMENT_TYPE(
"Map literal element type must match declaration '%s' when type checks are on."),
MEMBER_WITH_NAME_OF_CLASS("Class member should not have the same name as the enclosing class"),
CONSTRUCTOR_WITH_NAME_OF_MEMBER(
"Constructor cannot have the same name as the name of a member declared in the enclosing class"),
METHOD_MUST_HAVE_BODY(ErrorSeverity.WARNING, "Method must have a body in a non-abstract class"),
NAMED_PARAMETERS_CANNOT_START_WITH_UNDER("Named parameters cannot start with an '_' character"),
NEW_EXPRESSION_CANT_USE_TYPE_VAR("New expression cannot be invoked on type variable"),
NEW_EXPRESSION_NOT_CONSTRUCTOR(
ErrorSeverity.WARNING, "New expression does not resolve to a constructor"),
NEW_EXPRESSION_NOT_CONST_CONSTRUCTOR("New expression does not resolve to a const constructor"),
NO_SUCH_TYPE("no such type \"%s\""),
NO_SUCH_TYPE_CONSTRUCTOR("no such type \"%s\" in constructor"),
NO_SUCH_TYPE_CONST("no such type \"%s\" in constant constructor"),
NOT_A_CLASS("\"%s\" is not a class"),
NOT_A_CLASS_OR_INTERFACE("\"%s\" is not a class or interface"),
// TODO(zundel): error message needs JUnit test (reachable code?)
NOT_A_LABEL("\"%s\" is not a label"),
NOT_A_STATIC_FIELD("\"%s\" is not a static field"),
NOT_A_STATIC_METHOD("\"%s\" is not a static method"),
NOT_A_TYPE("type \"%s\" expected, but \"%s\" found"),
// TODO(zundel): error message needs JUnit test (reachable code?)
NOT_AN_INSTANCE_FIELD("%s is not an instance field"),
NOT_GENERATIVE_SUPER_CONSTRUCTOR("Constructor '%s' in class '%s' is not generative."),
OPTIONAL_PARAMETERS_CANNOT_START_WITH_UNDER("Optional parameters cannot start with an '_' character"),
PARAMETER_INIT_OUTSIDE_CONSTRUCTOR("Parameter initializers can only be used in constructors"),
SUPER_METHOD_INVOCATION_IN_CONSTRUCTOR_INITIALIZER(
"Super method invocation is not allowed in constructor initializer"),
PARAMETER_INIT_STATIC_FIELD(
"Parameter initializer cannot be use to initialize a static field '%s'"),
// TODO(zundel): error message needs JUnit test (reachable code?)
PARAMETER_INIT_WITH_REDIR_CONSTRUCTOR(
"Parameter initializers cannot be used with redirected constructors"),
// TODO(zundel): error message needs JUnit test
PARAMETER_NOT_MATCH_FIELD("Could not match parameter initializer '%s' with any field"),
REDIRECTED_CONSTRUCTOR_CYCLE("Redirected constructor call has a cycle."),
REDIRECTION_CONSTRUCTOR_TARGET_TYPE(
"Target of redirecting factory constructor is not a type"),
REDIRECTION_CONSTRUCTOR_TARGET_MUST_BE_CONST(
"Target of constant redirecting factory constructor also should be constant"),
REDIRECTION_CONSTRUCTOR_CYCLE("Cycle in redirecting constructors"),
RETHROW_NOT_IN_CATCH("Re-throw not in a catch block"),
STATIC_FINAL_REQUIRES_VALUE("Static final fields must have an initial value"),
STATIC_METHOD_MUST_HAVE_BODY("Static method must have a body"),
SUPER_IN_FACTORY_CONSTRUCTOR("Cannot use 'super' in a factory constructor"),
SUPER_IN_STATIC_METHOD("Cannot use 'super' in a static method"),
SUPER_OUTSIDE_OF_METHOD("Cannot use 'super' outside of a method"),
SUPER_ON_TOP_LEVEL("Cannot use 'super' in a top-level element"),
SWITCH_CASE_FALL_THROUGH(ErrorSeverity.WARNING, "Switch case should end with break, continue, return or throw"),
THIS_IN_STATIC_METHOD("Cannot use 'this' in a static method"),
THIS_IN_INITIALIZER_AS_EXPRESSION("Cannot reference 'this' as expression in initializer list"),
THIS_ON_TOP_LEVEL("Cannot use 'this' in a top-level element"),
THIS_OUTSIDE_OF_METHOD("Cannot use 'this' outside of a method"),
THIS_IN_FACTORY_CONSTRUCTOR("Cannot use 'this' in a factory constructor"),
TOO_FEW_ARGUMENTS_IN_IMPLICIT_SUPER("Too few arguments in implicit super() constructor invocation in '%s'"),
TOO_MANY_QUALIFIERS_FOR_METHOD("Too many qualifiers for method or constructor"),
TOPLEVEL_FINAL_REQUIRES_VALUE("Top-level final fields must have an initial value"),
TYPE_VARIABLE_DOES_NOT_MATCH("Type variable %s does not match %s in default class %s."),
TYPE_PARAMETERS_MUST_MATCH_EXACTLY(
"Type parameters in default declaration must match referenced class exactly"),
TYPE_VARIABLE_IN_STATIC_CONTEXT("cannot access type variable %s in static context"),
TYPE_VARIABLE_NOT_ALLOWED_IN_IDENTIFIER(
"type variables are not allowed in identifier expressions"),
USE_ASSIGNMENT_ON_SETTER("Use assignment to set field '%s'"),
USING_LOCAL_VARIABLE_BEFORE_DECLARATION("Using local variable '%s' before its declaration in lexical scope"),
WRONG_NUMBER_OF_TYPE_ARGUMENTS("%s: wrong number of type arguments (%d). Expected %d");
private final ErrorSeverity severity;
private final String message;
/**
* Initialize a newly created error code to have the given message and ERROR severity.
*/
private ResolverErrorCode(String message) {
this(ErrorSeverity.ERROR, message);
}
/**
* Initialize a newly created error code to have the given severity and message.
*/
private ResolverErrorCode(ErrorSeverity severity, String message) {
this.severity = severity;
this.message = message;
}
@Override
public String getMessage() {
return message;
}
@Override
public ErrorSeverity getErrorSeverity() {
return severity;
}
@Override
public SubSystem getSubSystem() {
return SubSystem.RESOLVER;
}
@Override
public boolean needsRecompilation() {
return true;
}
}