Class JSDocInfo.Builder

java.lang.Object
com.google.javascript.rhino.JSDocInfo.Builder
Enclosing class:
JSDocInfo

public static class JSDocInfo.Builder extends Object
A builder for JSDocInfo objects. This builder is required because JSDocInfo instances have immutable structure. It provides early incompatibility detection among properties stored on the JSDocInfo object being created.
  • Constructor Details

    • Builder

      public Builder()
  • Method Details

    • copyFrom

      public static JSDocInfo.Builder copyFrom(JSDocInfo info)
    • maybeCopyFrom

      public static JSDocInfo.Builder maybeCopyFrom(@Nullable JSDocInfo info)
    • maybeCopyFromWithNewType

      public static JSDocInfo.Builder maybeCopyFromWithNewType(JSDocInfo info, JSTypeExpression typeExpression)
      Returns a JSDocInfo.Builder that contains a copy of the given JSDocInfo in which only the @type field of the JSDocInfo is replaced with the given typeExpression. This is done to prevent generating code in the client module which references local variables from another module.
    • copyFromWithNewType

      public static JSDocInfo.Builder copyFromWithNewType(JSDocInfo info, JSTypeExpression typeExpression)
    • maybeCopyFromAndReplaceNames

      public static JSDocInfo.Builder maybeCopyFromAndReplaceNames(JSDocInfo info, Set<String> moduleLocalNamesToReplace)
      Returns a JSDocInfo.Builder that contains a JSDoc in which all module local types (which may be inside @param, @type or @returns are replaced with unknown. This is done to prevent generating code in the client module which references local variables from another module.
    • parseDocumentation

      public JSDocInfo.Builder parseDocumentation()
      Configures the builder to parse documentation. This should be called immediately after instantiating the builder if documentation should be included, since it enables various operations to do work that would otherwise be no-ops.
    • shouldParseDocumentation

      public boolean shouldParseDocumentation()
    • 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.
    • recordOriginalCommentPosition

      public void recordOriginalCommentPosition(int position)
      Sets the position of original JSDoc comment.
    • isPopulatedWithFileOverview

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

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

      public boolean isNoInline()
      Returns whether the @noinline annotation is present on this JSDocInfo.
    • isRequireInlining

      public boolean isRequireInlining()
      Returns whether the @requireInlining annotation is present on this JSDocInfo.
    • build

      public JSDocInfo build()
      Builds a JSDocInfo object based on the populated information and returns it.
      Returns:
      a JSDocInfo object populated with the values given to this builder. If no value was populated, this method simply returns null
    • build

      public @Nullable JSDocInfo build(boolean always)
      Builds a JSDocInfo object based on the populated information and returns it.
      Parameters:
      always - Return an default JSDoc object.
      Returns:
      a JSDocInfo object populated with the values given to this builder. If no value was populated and always is false, returns null. If always is true, returns a default JSDocInfo.
    • buildAndReset

      public JSDocInfo buildAndReset()
      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.
      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

      public void markName(String name, Node templateNode, 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
    • overwriteVisibility

      public void overwriteVisibility(JSDocInfo.Visibility visibility)
    • 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
    • recordTemplateTypeName

      public boolean recordTemplateTypeName(String name)
      Records a template type name.
      Returns:
      true if the template type name was recorded and false if the input template type name was already defined.
    • recordTemplateTypeName

      public boolean recordTemplateTypeName(String name, @Nullable JSTypeExpression bound)
    • recordTypeTransformation

      public boolean recordTypeTransformation(String name, Node expr)
      Records a type transformation expression together with its template type name.
    • recordThrowsAnnotation

      public boolean recordThrowsAnnotation(String annotation)
      Records a throw annotation description.
      Returns:
      true if the type's description was recorded. The description of a throw annotation is the text including the type.
    • recordAuthor

      public boolean recordAuthor(String author)
      Adds an author to the current information.
    • recordReference

      public boolean recordReference(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.
    • recordXidGenerator

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

      public boolean recordMappedIdGenerator()
      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.
    • 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
    • recordDeprecationReason

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

      public boolean isDeprecationReasonRecorded()
      Returns whether a deprecation reason has been recorded.
    • recordSuppressions

      public void recordSuppressions(com.google.common.collect.ImmutableSet<String> suppressions, String description)
    • recordSuppressions

      public void recordSuppressions(Set<String> suppressions)
      Records the list of suppressed warnings, possibly adding to the set of already configured warnings.
    • recordSuppression

      public void recordSuppression(String suppression)
    • 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
    • recordInlineType

      public void recordInlineType()
    • recordTypedef

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

      public boolean recordReturnType(JSTypeExpression type)
      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 type)
      Records a base type.
      Returns:
      true if the base type was recorded and false if it was already defined
    • changeBaseType

      public boolean changeBaseType(JSTypeExpression type)
      Changes a base type, even if one has already been set on currentInfo.
      Returns:
      true if the base type was changed successfully.
    • 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
    • recordMutable

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

      public boolean recordFinality()
      Records that the JSDocInfo being built should have its JSDocInfo.isFinal() flag set to true.
      Returns:
      true if the finality 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
    • recordTsType

      public void recordTsType(String tsType)
      Records a tsType giving context for .d.ts generation
    • 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.
    • recordAlternateMessageId

      public boolean recordAlternateMessageId(String alternateMessageId)
      Records an ID for an alternate message to be used if this message is not yet translated.
      Returns:
      true If the alternate message ID was successfully updated.
    • recordClosurePrimitiveId

      public boolean recordClosurePrimitiveId(String closurePrimitiveId)
      Records an identifier for a Closure Primitive. function.
      Returns:
      true If the id 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.
    • recordEnhance

      public boolean recordEnhance(String namespace)
      Records enhanced namespace.
      Returns:
      true If the enhanced namespace was recorded.
    • isModsRecorded

      public boolean isModsRecorded()
      Returns whether this builder recorded a modded namespace.
    • recordMods

      @CanIgnoreReturnValue public boolean recordMods(String namespace)
      Records modded namespace.
      Returns:
      true If the modded namespace was recorded.
    • recordLicense

      public boolean recordLicense(String license)
    • addLicense

      public boolean addLicense(String license)
    • 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
    • recordNoDts

      public boolean recordNoDts()
      Records that the JSDocInfo being built should have its
      invalid reference
      JSDocInfo#isNoDtsOutput()
      flag set to true.
      Returns:
      true if the no compile flag was recorded and false if it was already recorded
    • recordNoCollapse

      public boolean recordNoCollapse()
      Records that the JSDocInfo being built should have its JSDocInfo.isNoCollapse() flag set to true.
      Returns:
      true if the no collapse flag was recorded and false if it was already recorded
    • recordNoInline

      public boolean recordNoInline()
      Records that the JSDocInfo being built should have its JSDocInfo.isNoInline() flag set to true.
      Returns:
      true if the no inline flag was recorded and false if it was already recorded
    • recordRequireInlining

      @CanIgnoreReturnValue public boolean recordRequireInlining()
      Records that the JSDocInfo being built should have its JSDocInfo.isRequireInlining() flag set to true.
      Returns:
      true if the requireInlining flag was recorded and false if it was already recorded
    • recordPureOrBreakMyCode

      public boolean recordPureOrBreakMyCode()
      Records that the JSDocInfo being built should have its JSDocInfo.isPureOrBreakMyCode() flag set to true.
      Returns:
      true if the no pureOrBreakMyCode flag was recorded and false if it was already recorded
    • recordCollapsibleOrBreakMyCode

      public boolean recordCollapsibleOrBreakMyCode()
      Records that the JSDocInfo being built should have its JSDocInfo.isCollapsibleOrBreakMyCode() flag set to true.
      Returns:
      true if the no collapsibleOrBreakMyCode 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
    • recordImplicitMatch

      public boolean recordImplicitMatch()
      Records that the JSDocInfo being built should have its JSDocInfo.usesImplicitMatch() flag set to true.
      Returns:
      true if the @record tag was recorded and false if it was already defined or it was incompatible with the existing flags
    • recordProvideGoog

      public boolean recordProvideGoog()
    • recordProvideAlreadyProvided

      public boolean recordProvideAlreadyProvided()
    • isConstructorRecorded

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

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

      public boolean isUnrestrictedRecorded()
    • recordAbstract

      public boolean recordAbstract()
      Records that the JSDocInfo being built should have its JSDocInfo.isAbstract() 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
    • 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
    • isStructRecorded

      public boolean isStructRecorded()
    • 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
    • isDictRecorded

      public boolean isDictRecorded()
    • recordOverride

      public boolean recordOverride()
      Records that the JSDocInfo being built should have its JSDocInfo.isOverride() 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.
    • removeExport

      public boolean removeExport()
      Records that the JSDocInfo being built should have its JSDocInfo.isExport() flag set to false.
    • 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.
    • recordNoCoverage

      @CanIgnoreReturnValue public boolean recordNoCoverage()
      Records that the JSDocInfo being built should have its JSDocInfo.isNoCoverage() flag set to true.
    • recordTypeSummary

      public boolean recordTypeSummary()
      Records that the JSDocInfo being built should have its JSDocInfo.isTypeSummary() 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 interfaceType)
      Records an implemented interface.
    • recordExtendedInterface

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

      public boolean recordLends(JSTypeExpression 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.
    • isWizactionRecorded

      public boolean isWizactionRecorded()
      Returns whether current JSDoc is annotated with @wizaction.
    • recordWizaction

      public boolean recordWizaction()
      Records that this method is to be exposed as a wizaction.
    • isWizcallbackRecorded

      public boolean isWizcallbackRecorded()
      Returns if current JSDoc is annotated with @wizcallback.
    • recordWizcallback

      public boolean recordWizcallback()
      Records that this method is to be exposed as a wizcallback.
    • isPolymerBehaviorRecorded

      public boolean isPolymerBehaviorRecorded()
      Returns whether current JSDoc is annotated with @polymerBehavior.
    • recordPolymerBehavior

      public boolean recordPolymerBehavior()
      Records that this method is to be exposed as a polymerBehavior.
    • isPolymerRecorded

      public boolean isPolymerRecorded()
      Returns whether current JSDoc is annotated with @polymer.
    • recordPolymer

      public boolean recordPolymer()
      Records that this method is to be exposed as a polymer element.
    • isCustomElementRecorded

      public boolean isCustomElementRecorded()
      Returns whether current JSDoc is annotated with @customElement.
    • recordCustomElement

      public boolean recordCustomElement()
      Records that this method is to be exposed as a customElement.
    • isMixinClassRecorded

      public boolean isMixinClassRecorded()
      Returns whether current JSDoc is annotated with @mixinClass.
    • recordMixinClass

      public boolean recordMixinClass()
      Records that this method is to be exposed as a mixinClass.
    • isMixinFunctionRecorded

      public boolean isMixinFunctionRecorded()
      Returns whether current JSDoc is annotated with @mixinFunction.
    • recordMixinFunction

      public boolean recordMixinFunction()
      Records that this method is to be exposed as a mixinFunction.
    • isSassGeneratedCssTsRecorded

      public boolean isSassGeneratedCssTsRecorded()
      Returns whether current JSDoc is annotated with @sassGeneratedCssTs.
    • recordSassGeneratedCssTs

      public void recordSassGeneratedCssTs()
      Records that this script was generated by Sass from a.css.ts file.
    • logTypeInCompiler

      public boolean logTypeInCompiler()
      Returns whether we should log the type of values passed to this function.
    • recordLogTypeInCompiler

      public boolean recordLogTypeInCompiler()
      Records that the types of values passed to this method should be logged in the compiler.
    • isClosureUnawareCode

      public boolean isClosureUnawareCode()
      Returns whether JSDoc is annotated with the @closureUnaware annotation.
    • recordClosureUnawareCode

      public boolean recordClosureUnawareCode()
      Records that this JSDoc was annotated with the @closureUnaware annotation.
    • removeClosureUnawareCode

      @CanIgnoreReturnValue public boolean removeClosureUnawareCode()
      Removes the @closureUnaware annotation from this JSDoc, returning true the annotation was present before removal.
    • recordUsedViaDotConstructor

      public boolean recordUsedViaDotConstructor()
      Records that this JSDoc was annotated with the @usedViaDotConstructor annotation.