Skip to content

Commit

Permalink
[NTI] Split NTI warnings in two groups: compatible warnings and new o…
Browse files Browse the repository at this point in the history
…nes.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=128641874
  • Loading branch information
dimvar authored and blickly committed Jul 28, 2016
1 parent 753daf3 commit d3abf7e
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 46 deletions.
20 changes: 16 additions & 4 deletions src/com/google/javascript/jscomp/DiagnosticGroups.java
Original file line number Diff line number Diff line change
Expand Up @@ -228,12 +228,25 @@ public DiagnosticGroup forName(String name) {
TypeValidator.ALL_DIAGNOSTICS,
TypeCheck.ALL_DIAGNOSTICS);

// Run the new type inference, but omit many warnings that are not
// found by the old type checker. This makes migration to NTI more manageable.
public static final DiagnosticGroup NEW_CHECK_TYPES_COMPATIBILITY_MODE =
DiagnosticGroups.registerGroup("newCheckTypesCompatibility", // undocumented
JSTypeCreatorFromJSDoc.COMPATIBLE_DIAGNOSTICS,
GlobalTypeInfo.COMPATIBLE_DIAGNOSTICS,
NewTypeInference.COMPATIBLE_DIAGNOSTICS);

public static final DiagnosticGroup NEW_CHECK_TYPES_EXTRA_CHECKS =
DiagnosticGroups.registerGroup("newCheckTypesExtraChecks", // undocumented
JSTypeCreatorFromJSDoc.NEW_DIAGNOSTICS,
GlobalTypeInfo.NEW_DIAGNOSTICS,
NewTypeInference.NEW_DIAGNOSTICS);

// Part of the new type inference
public static final DiagnosticGroup NEW_CHECK_TYPES =
DiagnosticGroups.registerGroup("newCheckTypes",
JSTypeCreatorFromJSDoc.ALL_DIAGNOSTICS,
GlobalTypeInfo.ALL_DIAGNOSTICS,
NewTypeInference.ALL_DIAGNOSTICS);
NEW_CHECK_TYPES_COMPATIBILITY_MODE,
NEW_CHECK_TYPES_EXTRA_CHECKS);

public static final DiagnosticGroup CHECK_TYPES =
DiagnosticGroups.registerGroup("checkTypes",
Expand Down Expand Up @@ -275,7 +288,6 @@ public DiagnosticGroup forName(String name) {
// GlobalTypeInfo.REDECLARED_PROPERTY,
GlobalTypeInfo.STRUCTDICT_WITHOUT_CTOR,
GlobalTypeInfo.SUPER_INTERFACES_HAVE_INCOMPATIBLE_PROPERTIES,
GlobalTypeInfo.UNDECLARED_NAMESPACE,
GlobalTypeInfo.UNKNOWN_OVERRIDE,
GlobalTypeInfo.UNRECOGNIZED_TYPE_NAME,
NewTypeInference.ASSERT_FALSE,
Expand Down
37 changes: 17 additions & 20 deletions src/com/google/javascript/jscomp/GlobalTypeInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -156,11 +156,6 @@ class GlobalTypeInfo implements CompilerPass, TypeIRegistry {
"JSC_NTI_DUPLICATE_PROP_IN_ENUM",
"Property {0} appears twice in the enum declaration.");

static final DiagnosticType UNDECLARED_NAMESPACE =
DiagnosticType.warning(
"JSC_NTI_UNDECLARED_NAMESPACE",
"Undeclared reference to {0}.");

static final DiagnosticType LENDS_ON_BAD_TYPE =
DiagnosticType.warning(
"JSC_NTI_LENDS_ON_BAD_TYPE",
Expand Down Expand Up @@ -220,37 +215,39 @@ class GlobalTypeInfo implements CompilerPass, TypeIRegistry {
"JSC_NTI_INTERFACE_METHOD_NOT_EMPTY",
"interface member functions must have an empty body");

static final DiagnosticGroup ALL_DIAGNOSTICS = new DiagnosticGroup(
ANONYMOUS_NOMINAL_TYPE,
CANNOT_ADD_PROPERTIES_TO_TYPEDEF,
CANNOT_INIT_TYPEDEF,
static final DiagnosticGroup COMPATIBLE_DIAGNOSTICS = new DiagnosticGroup(
CANNOT_OVERRIDE_FINAL_METHOD,
CONST_WITHOUT_INITIALIZER,
COULD_NOT_INFER_CONST_TYPE,
CTOR_IN_DIFFERENT_SCOPE,
DUPLICATE_JSDOC,
DUPLICATE_PROP_IN_ENUM,
EXPECTED_CONSTRUCTOR,
EXPECTED_INTERFACE,
FUNCTION_CONSTRUCTOR_NOT_DEFINED,
INEXISTENT_PARAM,
INTERFACE_METHOD_NOT_EMPTY,
INTERFACE_METHOD_NOT_IMPLEMENTED,
INTERFACE_METHOD_NOT_EMPTY,
INVALID_INTERFACE_PROP_INITIALIZER,
INVALID_PROP_OVERRIDE,
LENDS_ON_BAD_TYPE,
MALFORMED_ENUM,
MISPLACED_CONST_ANNOTATION,
ONE_TYPE_FOR_MANY_VARS,
REDECLARED_PROPERTY,
SETTER_WITH_RETURN,
STRUCTDICT_WITHOUT_CTOR,
SUPER_INTERFACES_HAVE_INCOMPATIBLE_PROPERTIES,
UNDECLARED_NAMESPACE,
UNKNOWN_OVERRIDE,
UNRECOGNIZED_TYPE_NAME,
WRONG_PARAMETER_COUNT
);
WRONG_PARAMETER_COUNT);

// TODO(dimvar): Check for which of these warnings it makes sense to keep
// going after warning.
static final DiagnosticGroup NEW_DIAGNOSTICS = new DiagnosticGroup(
ANONYMOUS_NOMINAL_TYPE,
CANNOT_ADD_PROPERTIES_TO_TYPEDEF,
CANNOT_INIT_TYPEDEF,
CONST_WITHOUT_INITIALIZER,
COULD_NOT_INFER_CONST_TYPE,
CTOR_IN_DIFFERENT_SCOPE,
DUPLICATE_JSDOC,
MALFORMED_ENUM,
MISPLACED_CONST_ANNOTATION,
SETTER_WITH_RETURN);

// An out-to-in list of the scopes, built during CollectNamedTypes
// This will be reversed at the end of GlobalTypeInfo to make sure
Expand Down
29 changes: 17 additions & 12 deletions src/com/google/javascript/jscomp/NewTypeInference.java
Original file line number Diff line number Diff line change
Expand Up @@ -283,18 +283,14 @@ final class NewTypeInference implements CompilerPass {
"JSC_NTI_UNKNOWN_EXPR_TYPE",
"This {0} expression has the unknown type.");

static final DiagnosticGroup ALL_DIAGNOSTICS = new DiagnosticGroup(
static final DiagnosticGroup COMPATIBLE_DIAGNOSTICS = new DiagnosticGroup(
ASSERT_FALSE,
BOTTOM_INDEX_TYPE,
BOTTOM_PROP,
CANNOT_BIND_CTOR,
CONST_PROPERTY_DELETED,
CONST_PROPERTY_REASSIGNED,
CONST_REASSIGNED,
CONSTRUCTOR_NOT_CALLABLE,
CROSS_SCOPE_GOTCHA,
FAILED_TO_UNIFY,
FORIN_EXPECTS_OBJECT,
FORIN_EXPECTS_STRING_KEY,
GLOBAL_THIS,
GOOG_BIND_EXPECTS_FUNCTION,
Expand All @@ -305,24 +301,33 @@ final class NewTypeInference implements CompilerPass {
INEXISTENT_PROPERTY,
INVALID_ARGUMENT_TYPE,
INVALID_CAST,
INVALID_INFERRED_RETURN_TYPE,
INVALID_INDEX_TYPE,
INVALID_OBJLIT_PROPERTY_TYPE,
INVALID_OPERAND_TYPE,
INVALID_THIS_TYPE_IN_BIND,
MISSING_RETURN_STATEMENT,
MISTYPED_ASSIGN_RHS,
INVALID_INDEX_TYPE,
NOT_A_CONSTRUCTOR,
NOT_CALLABLE,
NOT_UNIQUE_INSTANTIATION,
POSSIBLY_INEXISTENT_PROPERTY,
PROPERTY_ACCESS_ON_NONOBJECT,
RETURN_NONDECLARED_TYPE,
UNKNOWN_ASSERTION_TYPE,
UNKNOWN_NAMESPACE_PROPERTY,
UNKNOWN_TYPEOF_VALUE,
WRONG_ARGUMENT_COUNT);

// TODO(dimvar): Check for which of these warnings it makes sense to keep
// going after warning, eg, for NOT_UNIQUE_INSTANTIATION, we must instantiate
// to the join of the types.
static final DiagnosticGroup NEW_DIAGNOSTICS = new DiagnosticGroup(
BOTTOM_INDEX_TYPE,
BOTTOM_PROP,
CROSS_SCOPE_GOTCHA,
FORIN_EXPECTS_OBJECT,
INVALID_INFERRED_RETURN_TYPE,
INVALID_OPERAND_TYPE,
INVALID_THIS_TYPE_IN_BIND,
NOT_UNIQUE_INSTANTIATION,
PROPERTY_ACCESS_ON_NONOBJECT,
UNKNOWN_NAMESPACE_PROPERTY);

public static class WarningReporter {
AbstractCompiler compiler;
WarningReporter(AbstractCompiler compiler) { this.compiler = compiler; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ public final class JSTypeCreatorFromJSDoc {
public static final DiagnosticType BAD_ARRAY_TYPE_SYNTAX =
DiagnosticType.warning(
"JSC_NTI_BAD_ARRAY_TYPE_SYNTAX",
"The [] type syntax is not supported. Please use Array.<T> instead");
"The [] type syntax is not supported. Please use Array<T> instead");

public static final DiagnosticType CANNOT_MAKE_TYPEVAR_NON_NULL =
DiagnosticType.warning(
Expand Down Expand Up @@ -160,30 +160,34 @@ public final class JSTypeCreatorFromJSDoc {
"JSC_NTI_TWO_JSDOCS",
"Found two JsDoc comments for {0}");

public static final DiagnosticGroup ALL_DIAGNOSTICS = new DiagnosticGroup(
public static final DiagnosticGroup COMPATIBLE_DIAGNOSTICS = new DiagnosticGroup(
BAD_ARRAY_TYPE_SYNTAX,
CANNOT_MAKE_TYPEVAR_NON_NULL,
CIRCULAR_TYPEDEF_ENUM,
CONFLICTING_EXTENDED_TYPE,
CONFLICTING_IMPLEMENTED_TYPE,
DICT_IMPLEMENTS_INTERF,
ENUM_IS_TOP,
ENUM_IS_UNION,
ENUM_WITH_TYPEVARS,
EXTENDS_NON_INTERFACE,
EXTENDS_NON_OBJECT,
EXTENDS_NOT_ON_CTOR_OR_INTERF,
FUNCTION_WITH_NONFUNC_JSDOC,
IMPLEMENTS_NON_INTERFACE,
IMPLEMENTS_WITHOUT_CONSTRUCTOR,
INHERITANCE_CYCLE,
INVALID_GENERICS_INSTANTIATION,
NEW_EXPECTS_OBJECT_OR_TYPEVAR,
TEMPLATED_GETTER_SETTER,
TWO_JSDOCS,
UNION_IS_UNINHABITABLE,
WRONG_PARAMETER_ORDER);

// TODO(dimvar): Check for which of these warnings it makes sense to keep
// going after warning.
public static final DiagnosticGroup NEW_DIAGNOSTICS = new DiagnosticGroup(
CANNOT_MAKE_TYPEVAR_NON_NULL,
DICT_IMPLEMENTS_INTERF,
ENUM_IS_TOP,
ENUM_IS_UNION,
ENUM_WITH_TYPEVARS,
FUNCTION_WITH_NONFUNC_JSDOC,
INVALID_GENERICS_INSTANTIATION,
UNION_IS_UNINHABITABLE);

private final CodingConvention convention;
private final UniqueNameGenerator nameGen;

Expand Down

0 comments on commit d3abf7e

Please sign in to comment.