Class JSDocInfoBuilder

java.lang.Object
com.google.javascript.rhino.JSDocInfoBuilder

public final class JSDocInfoBuilder extends Object
A builder for JSDocInfo objects. This builder abstracts the construction process of JSDocInfo objects whilst minimizing the number of instances of JSDocInfo objects. It provides early incompatibility detection among properties stored on the JSDocInfo object being created.
  • Constructor Details

    • JSDocInfoBuilder

      public JSDocInfoBuilder(boolean parseDocumentation)
  • Method Details

    • recordOriginalCommentString

      public void recordOriginalCommentString(String sourceComment)
      Sets the original JSDoc comment string. This is a no-op if the builder isn't configured to record documentation.
    • shouldParseDocumentation

      public boolean shouldParseDocumentation()
    • isPopulated

      public boolean isPopulated()
      Returns whether this builder is populated with information that can be used to build(com.google.javascript.rhino.Node) a JSDocInfo object.
    • isPopulatedWithFileOverview

      public boolean isPopulatedWithFileOverview()
      Returns whether this builder is populated with information that can be used to build(com.google.javascript.rhino.Node) a JSDocInfo object that has a fileoverview tag.
    • isDescriptionRecorded

      public boolean isDescriptionRecorded()
      Returns whether this builder recorded a description.
    • build

      public JSDocInfo build(Node associatedNode)
      Builds a JSDocInfo object based on the populated information and returns it. Once this method is called, the builder can be reused to build another JSDocInfo object.
      Parameters:
      associatedNode - The source node containing the JSDoc.
      Returns:
      a JSDocInfo object populated with the values given to this builder. If no value was populated, this method simply returns null
    • markAnnotation

      public void markAnnotation(String annotation, int lineno, int charno)
      Adds a marker to the current JSDocInfo and populates the marker with the annotation information.
    • markText

      public void markText(String text, int startLineno, int startCharno, int endLineno, int endCharno)
      Adds a textual block to the current marker.
    • markTypeNode

      public void markTypeNode(Node typeNode, int lineno, int startCharno, int endLineno, int endCharno, boolean hasLC)
      Adds a type declaration to the current marker.
    • markName

      @Deprecated public void markName(String name, int lineno, int charno)
      Deprecated.
      Use #markName(String, StaticSourceFile, int, int)
      Adds a name declaration to the current marker.
    • markName

      public void markName(String name, StaticSourceFile file, int lineno, int charno)
      Adds a name declaration to the current marker.
    • recordBlockDescription

      public boolean recordBlockDescription(String description)
      Records a block-level description.
      Returns:
      true if the description was recorded.
    • recordVisibility

      public boolean recordVisibility(JSDocInfo.Visibility visibility)
      Records a visibility.
      Returns:
      true if the visibility was recorded and false if it was already defined
    • recordParameter

      public boolean recordParameter(String parameterName, JSTypeExpression type)
      Records a typed parameter.
      Returns:
      true if the typed parameter was recorded and false if a parameter with the same name was already defined
    • recordParameterDescription

      public boolean recordParameterDescription(String parameterName, String description)
      Records a parameter's description.
      Returns:
      true if the parameter's description was recorded and false if a parameter with the same name was already defined
    • recordTemplateTypeNames

      public boolean recordTemplateTypeNames(List<String> names)
      Records a template type name.
      Returns:
      true if the template type name was recorded and false if a template type name was already defined.
    • recordClassTemplateTypeNames

      public boolean recordClassTemplateTypeNames(List<String> names)
      Records a template type name.
      Returns:
      true if the template type name was recorded and false if a template type name was already defined.
    • recordThrowType

      public boolean recordThrowType(JSTypeExpression type)
      Records a thrown type.
    • recordThrowDescription

      public boolean recordThrowDescription(JSTypeExpression type, String description)
      Records a throw type's description.
      Returns:
      true if the type's description was recorded and false if a description with the same type was already defined
    • addAuthor

      public boolean addAuthor(String author)
      Adds an author to the current information.
    • addReference

      public boolean addReference(String reference)
      Adds a reference ("@see") to the current information.
    • recordConsistentIdGenerator

      public boolean recordConsistentIdGenerator()
      Records that the JSDocInfo being built should have its JSDocInfo.isConsistentIdGenerator() flag set to true.
      Returns:
      true if the consistentIdGenerator flag was recorded and false if it was already recorded
    • recordStableIdGenerator

      public boolean recordStableIdGenerator()
      Records that the JSDocInfo being built should have its JSDocInfo.isStableIdGenerator() flag set to true.
      Returns:
      true if the stableIdGenerator flag was recorded and false if it was already recorded.
    • recordVersion

      public boolean recordVersion(String version)
      Records the version.
    • recordDeprecationReason

      public boolean recordDeprecationReason(String reason)
      Records the deprecation reason.
    • recordSuppressions

      public boolean recordSuppressions(Set<String> suppressions)
      Records the list of suppressed warnings.
    • recordModifies

      public boolean recordModifies(Set<String> modifies)
      Records the list of modifies warnings.
    • recordType

      public boolean recordType(JSTypeExpression type)
      Records a type.
      Returns:
      true if the type was recorded and false if it is invalid or was already defined
    • recordTypedef

      public boolean recordTypedef(JSTypeExpression type)
      Records that the JSDocInfo being built should be populated with a typedef'd type.
    • recordIdGenerator

      public boolean recordIdGenerator()
      Records that the JSDocInfo being built should have its JSDocInfo.isIdGenerator() flag set to true.
      Returns:
      true if the idGenerator flag was recorded and false if it was already recorded
    • recordReturnType

      public boolean recordReturnType(JSTypeExpression jsType)
      Records a return type.
      Returns:
      true if the return type was recorded and false if it is invalid or was already defined
    • recordReturnDescription

      public boolean recordReturnDescription(String description)
      Records a return description
      Returns:
      true if the return description was recorded and false if it is invalid or was already defined
    • recordDefineType

      public boolean recordDefineType(JSTypeExpression type)
      Records the type of a define. 'Define' values are special constants that may be manipulated by the compiler. They are designed to mimic the #define command in the C preprocessor.
    • recordEnumParameterType

      public boolean recordEnumParameterType(JSTypeExpression type)
      Records a parameter type to an enum.
      Returns:
      true if the enum's parameter type was recorded and false if it was invalid or already defined
    • recordThisType

      public boolean recordThisType(JSTypeExpression type)
      Records a type for @this annotation.
      Returns:
      true if the type was recorded and false if it is invalid or if it collided with @enum or @type annotations
    • recordBaseType

      public boolean recordBaseType(JSTypeExpression jsType)
      Records a base type.
      Returns:
      true if the base type was recorded and false if it was already defined
    • recordConstancy

      public boolean recordConstancy()
      Records that the JSDocInfo being built should have its JSDocInfo.isConstant() flag set to true.
      Returns:
      true if the constancy was recorded and false if it was already defined
    • recordDescription

      public boolean recordDescription(String description)
      Records a description giving context for translation (i18n).
      Returns:
      true if the description was recorded and false if the description was invalid or was already defined
    • recordMeaning

      public boolean recordMeaning(String meaning)
      Records a meaning giving context for translation (i18n). Different meanings will result in different translations.
      Returns:
      true If the meaning was successfully updated.
    • recordFileOverview

      public boolean recordFileOverview(String description)
      Records a fileoverview description.
      Returns:
      true if the description was recorded and false if the description was invalid or was already defined.
    • recordHiddenness

      public boolean recordHiddenness()
      Records that the JSDocInfo being built should have its JSDocInfo.isHidden() flag set to true.
      Returns:
      true if the hiddenness was recorded and false if it was already defined
    • recordNoCompile

      public boolean recordNoCompile()
      Records that the JSDocInfo being built should have its JSDocInfo.isNoCompile() flag set to true.
      Returns:
      true if the no compile flag was recorded and false if it was already recorded
    • recordNoTypeCheck

      public boolean recordNoTypeCheck()
      Records that the JSDocInfo being built should have its JSDocInfo.isNoTypeCheck() flag set to true.
      Returns:
      true if the no check flag was recorded and false if it was already recorded
    • recordConstructor

      public boolean recordConstructor()
      Records that the JSDocInfo being built should have its JSDocInfo.isConstructor() flag set to true.
      Returns:
      true if the constructor was recorded and false if it was already defined or it was incompatible with the existing flags
    • isConstructorRecorded

      public boolean isConstructorRecorded()
      Whether the JSDocInfo being built will have its JSDocInfo.isConstructor() flag set to true.
    • recordStruct

      public boolean recordStruct()
      Records that the JSDocInfo being built should have its JSDocInfo.makesStructs() flag set to true.
      Returns:
      true if the struct was recorded and false if it was already defined or it was incompatible with the existing flags
    • recordDict

      public boolean recordDict()
      Records that the JSDocInfo being built should have its JSDocInfo.makesDicts() flag set to true.
      Returns:
      true if the dict was recorded and false if it was already defined or it was incompatible with the existing flags
    • recordJavaDispatch

      public boolean recordJavaDispatch()
      Records that the JSDocInfo being built should have its JSDocInfo.isJavaDispatch() flag set to true.
      Returns:
      true if the javadispatch was recorded and false if it was already defined or it was incompatible with the existing flags
    • isJavaDispatch

      public boolean isJavaDispatch()
      Whether the JSDocInfo being built will have its JSDocInfo.isJavaDispatch() flag set to true.
    • recordPreserveTry

      public boolean recordPreserveTry()
      Records that the JSDocInfo being built should have its JSDocInfo.shouldPreserveTry() flag set to true.
    • recordOverride

      public boolean recordOverride()
      Records that the JSDocInfo being built should have its JSDocInfo.isOverride() flag set to true.
    • recordNoAlias

      public boolean recordNoAlias()
      Records that the JSDocInfo being built should have its JSDocInfo.isNoAlias() flag set to true.
    • recordDeprecated

      public boolean recordDeprecated()
      Records that the JSDocInfo being built should have its JSDocInfo.isDeprecated() flag set to true.
    • recordInterface

      public boolean recordInterface()
      Records that the JSDocInfo being built should have its JSDocInfo.isInterface() flag set to true.
      Returns:
      true if the flag was recorded and false if it was already defined or it was incompatible with the existing flags
    • recordExport

      public boolean recordExport()
      Records that the JSDocInfo being built should have its JSDocInfo.isExport() flag set to true.
    • recordExpose

      public boolean recordExpose()
      Records that the JSDocInfo being built should have its JSDocInfo.isExpose() flag set to true.
    • recordNoShadow

      public boolean recordNoShadow()
      Records that the JSDocInfo being built should have its JSDocInfo.isNoShadow() flag set to true.
    • recordImplicitCast

      public boolean recordImplicitCast()
      Records that the JSDocInfo being built should have its JSDocInfo.isImplicitCast() flag set to true.
    • recordNoSideEffects

      public boolean recordNoSideEffects()
      Records that the JSDocInfo being built should have its JSDocInfo.isNoSideEffects() flag set to true.
    • recordExterns

      public boolean recordExterns()
      Records that the JSDocInfo being built should have its JSDocInfo.isExterns() flag set to true.
    • isInterfaceRecorded

      public boolean isInterfaceRecorded()
      Whether the JSDocInfo being built will have its JSDocInfo.isInterface() flag set to true.
    • hasParameter

      public boolean hasParameter(String name)
      Returns:
      Whether a parameter of the given name has already been recorded.
    • recordImplementedInterface

      public boolean recordImplementedInterface(JSTypeExpression interfaceName)
      Records an implemented interface.
    • recordExtendedInterface

      public boolean recordExtendedInterface(JSTypeExpression interfaceType)
      Records an extended interface type.
    • recordLends

      public boolean recordLends(String name)
      Records that we're lending to another name.
    • isNgInjectRecorded

      public boolean isNgInjectRecorded()
      Returns whether current JSDoc is annotated with @ngInject.
    • recordNgInject

      public boolean recordNgInject(boolean ngInject)
      Records that we'd like to add $inject property inferred from parameters.