Class JSDocInfo

java.lang.Object
com.google.javascript.rhino.JSDocInfo
All Implemented Interfaces:
Serializable

public class JSDocInfo extends Object implements Serializable

JSDoc information describing JavaScript code. JSDoc is represented as a unified object with fields for each JSDoc annotation, even though some combinations are incorrect. For instance, if a JSDoc describes an enum, it cannot have information about a return type. This implementation takes advantage of such incompatibilities to reuse fields for multiple purposes, reducing memory consumption.

Constructing JSDocInfo objects is simplified by JSDocInfoBuilder which provides early incompatibility detection.

See Also:
  • Constructor Details

    • JSDocInfo

      public JSDocInfo()
  • Method Details

    • setDeprecated

      public void setDeprecated(boolean value)
    • isConsistentIdGenerator

      public boolean isConsistentIdGenerator()
      Returns:
      whether the @consistentIdGenerator is present on this JSDocInfo
    • isStableIdGenerator

      public boolean isStableIdGenerator()
      Returns:
      whether the @stableIdGenerator is present on this JSDocInfo.
    • isConstant

      public boolean isConstant()
      Returns whether the @const annotation is present on this JSDocInfo.
    • isConstructor

      public boolean isConstructor()
      Returns whether the @constructor annotation is present on this JSDocInfo.
    • makesStructs

      public boolean makesStructs()
      Returns whether the @struct annotation is present on this JSDocInfo.
    • makesDicts

      public boolean makesDicts()
      Returns whether the @dict annotation is present on this JSDocInfo.
    • isDefine

      public boolean isDefine()
      Returns whether the @define annotation is present on this JSDocInfo. If this annotation is present, then the getType() method will retrieve the define type.
    • isHidden

      public boolean isHidden()
      Returns whether the @hidden annotation is present on this JSDocInfo.
    • isNoTypeCheck

      public boolean isNoTypeCheck()
      Returns whether the @nocheck annotation is present on this JSDocInfo.
    • shouldPreserveTry

      public boolean shouldPreserveTry()
      Returns whether the @preserveTry annotation is present on this JSDocInfo.
    • isOverride

      public boolean isOverride()
      Returns whether the @override annotation is present on this JSDocInfo.
    • isNoAlias

      public boolean isNoAlias()
      Returns whether the @noalias annotation is present on this JSDocInfo.
    • isDeprecated

      public boolean isDeprecated()
      Returns whether the @deprecated annotation is present on this JSDocInfo.
    • isInterface

      public boolean isInterface()
      Returns whether the @interface annotation is present on this JSDocInfo.
    • isExport

      public boolean isExport()
      Returns whether the @export annotation is present on this JSDocInfo.
    • isExpose

      public boolean isExpose()
      Returns whether the @expose annotation is present on this JSDocInfo.
    • isNoShadow

      public boolean isNoShadow()
      Returns whether the @noshadow annotation is present on this JSDocInfo.
    • isIdGenerator

      public boolean isIdGenerator()
      Returns:
      whether the @idGenerator is present on this JSDocInfo
    • isImplicitCast

      public boolean isImplicitCast()
      Returns whether the @implicitCast annotation is present on this JSDocInfo.
    • isNoSideEffects

      public boolean isNoSideEffects()
      Returns whether the @nosideeffects annotation is present on this JSDocInfo.
    • isExterns

      public boolean isExterns()
      Returns whether the @externs annotation is present on this JSDocInfo.
    • isJavaDispatch

      public boolean isJavaDispatch()
      Returns whether the @javadispatch annotation is present on this JSDocInfo.
    • isNoCompile

      public boolean isNoCompile()
      Returns whether the @nocompile annotation is present on this JSDocInfo.
    • containsDeclaration

      public boolean containsDeclaration()
      Returns:
      Whether there is declaration present on this JSDocInfo.
    • setVisibility

      public void setVisibility(JSDocInfo.Visibility visibility)
    • addSuppression

      public void addSuppression(String suppression)
      Add a suppressed warning.
    • getVisibility

      public JSDocInfo.Visibility getVisibility()
      Gets the visibility specified by @private, @protected or @public annotation. If no visibility is specified, visibility is inherited from the base class.
    • getParameterType

      public JSTypeExpression getParameterType(String parameter)
      Gets the parameter type.
      Parameters:
      parameter - the parameter's name
      Returns:
      the parameter's type or null if this parameter is not defined or has a null type
    • hasParameter

      public boolean hasParameter(String parameter)
      Returns whether the parameter is defined.
    • hasParameterType

      public boolean hasParameterType(String parameter)
      Returns whether the parameter has an attached type.
      Returns:
      true if the parameter has an attached type, false if the parameter has no attached type or does not exist.
    • getParameterNames

      public Set<String> getParameterNames()
      Returns the set of names of the defined parameters. The iteration order of the returned set is not the order in which parameters are defined.
      Returns:
      the set of names of the defined parameters. The returned set is immutable.
    • getParameterCount

      public int getParameterCount()
      Gets the number of parameters defined.
    • getThrownTypes

      public List<JSTypeExpression> getThrownTypes()
      Returns the list of thrown types.
    • hasType

      public boolean hasType()
      Returns whether a type, specified using the @type annotation, is present on this JSDoc.
    • hasEnumParameterType

      public boolean hasEnumParameterType()
      Returns whether an enum parameter type, specified using the @enum annotation, is present on this JSDoc.
    • hasTypedefType

      public boolean hasTypedefType()
      Returns whether a typedef parameter type, specified using the @typedef annotation, is present on this JSDoc.
    • hasReturnType

      public boolean hasReturnType()
      Returns whether this JSDocInfo contains a type for @return annotation.
    • getType

      public JSTypeExpression getType()
      Gets the type specified by the @type annotation.
    • getReturnType

      public JSTypeExpression getReturnType()
      Gets the return type specified by the @return annotation.
    • getEnumParameterType

      public JSTypeExpression getEnumParameterType()
      Gets the enum parameter type specified by the @enum annotation.
    • getTypedefType

      public JSTypeExpression getTypedefType()
      Gets the typedef type specified by the @type annotation.
    • getThisType

      public JSTypeExpression getThisType()
      Gets the type specified by the @this annotation.
    • hasThisType

      public boolean hasThisType()
      Returns whether this JSDocInfo contains a type for @this annotation.
    • getBaseType

      public JSTypeExpression getBaseType()
      Gets the base type specified by the @extends annotation.
    • getDescription

      public String getDescription()
      Gets the description specified by the @desc annotation.
    • getMeaning

      public String getMeaning()
      Gets the meaning specified by the @meaning annotation. In localization systems, two messages with the same content but different "meanings" may be translated differently. By default, we use the name of the variable that the message is initialized to as the "meaning" of the message. But some code generators (like Closure Templates) inject their own meaning with the jsdoc @meaning annotation.
    • getLendsName

      public String getLendsName()
      Gets the name we're lending to in a @lends annotation. In many reflection APIs, you pass an anonymous object to a function, and that function mixes the anonymous object into another object. The @lends annotation allows the type system to track those property assignments.
    • isNgInject

      public boolean isNgInject()
      Returns whether JSDoc is annotated with @ngInject annotation.
    • getLicense

      public String getLicense()
      Gets the description specified by the @license annotation.
    • setLicense

      public void setLicense(String license)
      License directives can appear in multiple comments, and always apply to the entire file. Break protection and allow outsiders to update the license string so that we can attach the license text even when the JSDocInfo has been created and tagged with other information.
      Parameters:
      license - String containing new license text.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • hasBaseType

      public boolean hasBaseType()
      Returns whether this JSDocInfo contains a type for @extends annotation.
    • getImplementedInterfaces

      public List<JSTypeExpression> getImplementedInterfaces()
      Returns the types specified by the @implements annotation.
      Returns:
      An immutable list of JSTypeExpression objects that can be resolved to types.
    • getImplementedInterfaceCount

      public int getImplementedInterfaceCount()
      Gets the number of interfaces specified by the @implements annotation.
    • getExtendedInterfaces

      public List<JSTypeExpression> getExtendedInterfaces()
      Returns the interfaces extended by an interface
      Returns:
      An immutable list of JSTypeExpression objects that can be resolved to types.
    • getExtendedInterfacesCount

      public int getExtendedInterfacesCount()
      Gets the number of extended interfaces specified
    • getDeprecationReason

      public String getDeprecationReason()
      Returns the deprecation reason or null if none specified.
    • getSuppressions

      public Set<String> getSuppressions()
      Returns the set of suppressed warnings.
    • getModifies

      public Set<String> getModifies()
      Returns the set of sideeffect notations.
    • hasDescriptionForParameter

      public boolean hasDescriptionForParameter(String name)
      Returns whether a description exists for the parameter with the specified name.
    • getDescriptionForParameter

      public String getDescriptionForParameter(String name)
      Returns the description for the parameter with the given name, if its exists.
    • getAuthors

      public Collection<String> getAuthors()
      Returns the list of authors or null if none.
    • getReferences

      public Collection<String> getReferences()
      Returns the list of references or null if none.
    • getVersion

      public String getVersion()
      Returns the version or null if none.
    • getReturnDescription

      public String getReturnDescription()
      Returns the description of the returned object or null if none specified.
    • getBlockDescription

      public String getBlockDescription()
      Returns the block-level description or null if none specified.
    • hasFileOverview

      public boolean hasFileOverview()
      Returns whether this has a fileoverview flag.
    • getFileOverview

      public String getFileOverview()
      Returns the file overview or null if none specified.
    • getAssociatedNode

      public Node getAssociatedNode()
    • setAssociatedNode

      public void setAssociatedNode(Node node)
      Sets the node associated with this JSDoc. Notice that many nodes may have pointer to the same JSDocInfo object (because we propagate it across the type graph). But there is only one canonical "owner" node of the JSDocInfo, which corresponds to its original place in the syntax tree.
    • getSourceName

      public String getSourceName()
      Gets the name of the source file that contains this JSDoc.
    • getMarkers

      public Collection<JSDocInfo.Marker> getMarkers()
      Gets the list of all markers for the documentation in this JSDoc.
    • getTemplateTypeNames

      public com.google.common.collect.ImmutableList<String> getTemplateTypeNames()
      Gets the template type name.
    • getClassTemplateTypeNames

      public com.google.common.collect.ImmutableList<String> getClassTemplateTypeNames()
    • getTypeNodes

      public Collection<Node> getTypeNodes()
      Returns a collection of all type nodes that are a part of this JSDocInfo. This includes @type, @this, @extends, @implements, @param, @throws, and @return. Any future type specific JSDoc should make sure to add the appropriate nodes here.
      Returns:
      collection of all type nodes
    • hasModifies

      public boolean hasModifies()
    • getOriginalCommentString

      public String getOriginalCommentString()
      Returns the original JSDoc comment string. Returns null unless parseJsDocDocumentation is enabled via the ParserConfig.