code: private void checkConstructor(Node n, FunctionType functionType) {
      FunctionType baseConstructor = functionType.getSuperClassConstructor();
      if (!Objects.equals(baseConstructor, getNativeType(OBJECT_FUNCTION_TYPE))
          && baseConstructor != null
          && baseConstructor.isInterface()) {
        // Warn if a class extends an interface.
        compiler.report(
            JSError.make(n, CONFLICTING_EXTENDED_TYPE, "constructor", getBestFunctionName(n)));
      } else {
        if (n.isFunction()
            && baseConstructor != null
            && baseConstructor.getSource() != null
            && baseConstructor.getSource().isEs6Class()
            && !functionType.getSource().isEs6Class()) {
          // Warn if an ES5 class extends an ES6 class.
          compiler.report(
              JSError.make(
                  n,
                  ES5_CLASS_EXTENDING_ES6_CLASS,
                  functionType.getDisplayName(),
                  baseConstructor.getDisplayName()));
        }
  
        // Warn if any interface property is missing or incorrect
        for (JSType baseInterface : functionType.getImplementedInterfaces()) {
          boolean badImplementedType = false;
          ObjectType baseInterfaceObj = ObjectType.cast(baseInterface);
          if (baseInterfaceObj != null) {
            FunctionType interfaceConstructor =
                baseInterfaceObj.getConstructor();
            if (interfaceConstructor != null && !interfaceConstructor.isInterface()) {
              badImplementedType = true;
            }
          } else {
            badImplementedType = true;
          }
          if (badImplementedType) {
            report(n, BAD_IMPLEMENTED_TYPE, getBestFunctionName(n));
          }
        }
        // check properties
        validator.expectAllInterfaceProperties(n, functionType);
        if (!functionType.isAbstract()) {
          validator.expectAbstractMethodsImplemented(n, functionType);
        }
      }
    }
docs: Checks a constructor, which may be either an ES5-style FUNCTION node, or a CLASS node.