Package com.google.javascript.jscomp
Class ClosureCodingConvention
- java.lang.Object
-
- com.google.javascript.jscomp.CodingConventions.Proxy
-
- com.google.javascript.jscomp.ClosureCodingConvention
-
- All Implemented Interfaces:
CodingConvention
,java.io.Serializable
public class ClosureCodingConvention extends CodingConventions.Proxy
This describes the Closure-specific JavaScript coding conventions.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ClosureCodingConvention.AssertInstanceofSpec
A function that will throw an exception when if the value is not an instanceof a specific type.-
Nested classes/interfaces inherited from interface com.google.javascript.jscomp.CodingConvention
CodingConvention.AssertionFunctionSpec, CodingConvention.Bind, CodingConvention.DelegateRelationship, CodingConvention.ObjectLiteralCast, CodingConvention.SubclassRelationship, CodingConvention.SubclassType
-
-
Field Summary
-
Fields inherited from class com.google.javascript.jscomp.CodingConventions.Proxy
nextConvention
-
-
Constructor Summary
Constructors Constructor Description ClosureCodingConvention()
ClosureCodingConvention(CodingConvention wrapped)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
applySingletonGetter(FunctionType functionType, FunctionType getterType, ObjectType objectType)
In many JS libraries, the function that adds a singleton getter to a class adds properties to the class.void
applySubclassRelationship(FunctionType parentCtor, FunctionType childCtor, CodingConvention.SubclassType type)
Closure's goog.inherits adds asuperClass_
property to the subclass, and aconstructor
property.CodingConvention.Bind
describeFunctionBind(Node n, boolean useTypeInfo)
A Bind instance or null.java.lang.String
extractClassNameIfProvide(Node node, Node parent)
Extracts X from goog.provide('X'), if the applied Node is goog.java.lang.String
extractClassNameIfRequire(Node node, Node parent)
Extracts X from goog.require('X'), if the applied Node is goog.java.lang.String
getAbstractMethodName()
Function name for abstract methods.java.util.Collection<CodingConvention.AssertionFunctionSpec>
getAssertionFunctions()
Returns the set of AssertionFunction.CodingConvention.SubclassRelationship
getClassesDefinedByCall(Node callNode)
Checks if the given method defines a subclass relationship, and if it does, returns information on that relationship.java.lang.String
getExportPropertyFunction()
Use closure's implementation.java.lang.String
getExportSymbolFunction()
Use closure's implementation.java.lang.String
getGlobalObject()
Gets the name of the global object.java.util.Collection<java.lang.String>
getIndirectlyDeclaredProperties()
Gets a collection of all properties that are defined indirectly on global objects.CodingConvention.ObjectLiteralCast
getObjectLiteralCast(Node callNode)
Checks if the given method performs a object literal cast, and if it does, returns information on the cast.java.lang.String
getSingletonGetterClassName(Node callNode)
Checks if the given method defines a singleton getter, and if it does, returns the name of the class with the singleton getter.java.util.List<java.lang.String>
identifyTypeDeclarationCall(Node n)
Checks if the given CALL node is forward-declaring any types, and returns the name of the types if it is.boolean
isOptionalParameter(Node parameter)
This checks whether a given parameter name should be treated as an optional parameter as far as type checking or function call arg count checking is concerned.boolean
isPrivate(java.lang.String name)
Checks whether a name should be considered private.boolean
isPropertyTestFunction(Node call)
Whether this CALL function is testing for the existence of a property.boolean
isSuperClassReference(java.lang.String propertyName)
Returns true if passed a string referring to the superclass.boolean
isVarArgsParameter(Node parameter)
This checks whether a given parameter should be treated as a marker for a variable argument list function.-
Methods inherited from class com.google.javascript.jscomp.CodingConventions.Proxy
applyDelegateRelationship, checkForCallingConventionDefiningCalls, defineDelegateProxyPrototypeProperties, describeFunctionBind, getDelegateRelationship, getDelegateSuperclassName, isConstant, isConstantKey, isExported, isExported, isInlinableFunction, isPrototypeAlias, isValidEnumKey
-
-
-
-
Constructor Detail
-
ClosureCodingConvention
public ClosureCodingConvention()
-
ClosureCodingConvention
public ClosureCodingConvention(CodingConvention wrapped)
-
-
Method Detail
-
applySubclassRelationship
public void applySubclassRelationship(FunctionType parentCtor, FunctionType childCtor, CodingConvention.SubclassType type)
Closure's goog.inherits adds asuperClass_
property to the subclass, and aconstructor
property.- Specified by:
applySubclassRelationship
in interfaceCodingConvention
- Overrides:
applySubclassRelationship
in classCodingConventions.Proxy
-
getClassesDefinedByCall
public CodingConvention.SubclassRelationship getClassesDefinedByCall(Node callNode)
Checks if the given method defines a subclass relationship, and if it does, returns information on that relationship. By default, always returns null. Meant to be overridden by subclasses.Understands several different inheritance patterns that occur in Google code (various uses of
inherits
andmixin
).- Specified by:
getClassesDefinedByCall
in interfaceCodingConvention
- Overrides:
getClassesDefinedByCall
in classCodingConventions.Proxy
- Parameters:
callNode
- A CALL node.
-
isSuperClassReference
public boolean isSuperClassReference(java.lang.String propertyName)
Description copied from interface:CodingConvention
Returns true if passed a string referring to the superclass. The string will usually be from the string node at the right of a GETPROP, e.g. this.superClass_.- Specified by:
isSuperClassReference
in interfaceCodingConvention
- Overrides:
isSuperClassReference
in classCodingConventions.Proxy
-
extractClassNameIfProvide
public java.lang.String extractClassNameIfProvide(Node node, Node parent)
Extracts X from goog.provide('X'), if the applied Node is goog.- Specified by:
extractClassNameIfProvide
in interfaceCodingConvention
- Overrides:
extractClassNameIfProvide
in classCodingConventions.Proxy
- Returns:
- The extracted class name, or null.
-
extractClassNameIfRequire
public java.lang.String extractClassNameIfRequire(Node node, Node parent)
Extracts X from goog.require('X'), if the applied Node is goog.- Specified by:
extractClassNameIfRequire
in interfaceCodingConvention
- Overrides:
extractClassNameIfRequire
in classCodingConventions.Proxy
- Returns:
- The extracted class name, or null.
-
getExportPropertyFunction
public java.lang.String getExportPropertyFunction()
Use closure's implementation.- Specified by:
getExportPropertyFunction
in interfaceCodingConvention
- Overrides:
getExportPropertyFunction
in classCodingConventions.Proxy
- Returns:
- closure's function name for exporting properties.
-
getExportSymbolFunction
public java.lang.String getExportSymbolFunction()
Use closure's implementation.- Specified by:
getExportSymbolFunction
in interfaceCodingConvention
- Overrides:
getExportSymbolFunction
in classCodingConventions.Proxy
- Returns:
- closure's function name for exporting symbols.
-
identifyTypeDeclarationCall
public java.util.List<java.lang.String> identifyTypeDeclarationCall(Node n)
Description copied from interface:CodingConvention
Checks if the given CALL node is forward-declaring any types, and returns the name of the types if it is.- Specified by:
identifyTypeDeclarationCall
in interfaceCodingConvention
- Overrides:
identifyTypeDeclarationCall
in classCodingConventions.Proxy
-
getAbstractMethodName
public java.lang.String getAbstractMethodName()
Description copied from interface:CodingConvention
Function name for abstract methods. An abstract method can be assigned to an interface method instead of an function expression in order to avoid linter warnings produced by assigning a function without a return value where a return value is expected.- Specified by:
getAbstractMethodName
in interfaceCodingConvention
- Overrides:
getAbstractMethodName
in classCodingConventions.Proxy
- Returns:
- function name.
-
getSingletonGetterClassName
public java.lang.String getSingletonGetterClassName(Node callNode)
Description copied from interface:CodingConvention
Checks if the given method defines a singleton getter, and if it does, returns the name of the class with the singleton getter. By default, always returns null. Meant to be overridden by subclasses. addSingletonGetter needs a coding convention because in the general case, it can't be inlined. The function inliner sees that it creates an alias to the given class in an inner closure, and bails out.- Specified by:
getSingletonGetterClassName
in interfaceCodingConvention
- Overrides:
getSingletonGetterClassName
in classCodingConventions.Proxy
- Parameters:
callNode
- A CALL node.
-
applySingletonGetter
public void applySingletonGetter(FunctionType functionType, FunctionType getterType, ObjectType objectType)
Description copied from interface:CodingConvention
In many JS libraries, the function that adds a singleton getter to a class adds properties to the class.- Specified by:
applySingletonGetter
in interfaceCodingConvention
- Overrides:
applySingletonGetter
in classCodingConventions.Proxy
-
getGlobalObject
public java.lang.String getGlobalObject()
Description copied from interface:CodingConvention
Gets the name of the global object.- Specified by:
getGlobalObject
in interfaceCodingConvention
- Overrides:
getGlobalObject
in classCodingConventions.Proxy
-
isPropertyTestFunction
public boolean isPropertyTestFunction(Node call)
Description copied from interface:CodingConvention
Whether this CALL function is testing for the existence of a property.- Specified by:
isPropertyTestFunction
in interfaceCodingConvention
- Overrides:
isPropertyTestFunction
in classCodingConventions.Proxy
-
getObjectLiteralCast
public CodingConvention.ObjectLiteralCast getObjectLiteralCast(Node callNode)
Description copied from interface:CodingConvention
Checks if the given method performs a object literal cast, and if it does, returns information on the cast. By default, always returns null. Meant to be overridden by subclasses.- Specified by:
getObjectLiteralCast
in interfaceCodingConvention
- Overrides:
getObjectLiteralCast
in classCodingConventions.Proxy
- Parameters:
callNode
- A CALL node.
-
isOptionalParameter
public boolean isOptionalParameter(Node parameter)
Description copied from interface:CodingConvention
This checks whether a given parameter name should be treated as an optional parameter as far as type checking or function call arg count checking is concerned. Note that an optional function parameter may be declared as a simple type and is automatically converted to a union of the declared type and Undefined.- Specified by:
isOptionalParameter
in interfaceCodingConvention
- Overrides:
isOptionalParameter
in classCodingConventions.Proxy
- Parameters:
parameter
- The parameter's node.- Returns:
true
if the parameter should be treated as an optional parameter.
-
isVarArgsParameter
public boolean isVarArgsParameter(Node parameter)
Description copied from interface:CodingConvention
This checks whether a given parameter should be treated as a marker for a variable argument list function. A VarArgs parameter must be the last parameter in a function declaration.- Specified by:
isVarArgsParameter
in interfaceCodingConvention
- Overrides:
isVarArgsParameter
in classCodingConventions.Proxy
- Parameters:
parameter
- The parameter's node.- Returns:
true
if the parameter should be treated as a variable length parameter.
-
isPrivate
public boolean isPrivate(java.lang.String name)
Description copied from interface:CodingConvention
Checks whether a name should be considered private. Private global variables and functions can only be referenced within the source file in which they are declared. Private properties and methods should only be accessed by the class that defines them.- Specified by:
isPrivate
in interfaceCodingConvention
- Overrides:
isPrivate
in classCodingConventions.Proxy
- Parameters:
name
- The name of a global variable or function, or a method or property.- Returns:
true
if the name should be considered private.
-
getAssertionFunctions
public java.util.Collection<CodingConvention.AssertionFunctionSpec> getAssertionFunctions()
Description copied from interface:CodingConvention
Returns the set of AssertionFunction.- Specified by:
getAssertionFunctions
in interfaceCodingConvention
- Overrides:
getAssertionFunctions
in classCodingConventions.Proxy
-
describeFunctionBind
public CodingConvention.Bind describeFunctionBind(Node n, boolean useTypeInfo)
Description copied from interface:CodingConvention
A Bind instance or null.- Specified by:
describeFunctionBind
in interfaceCodingConvention
- Overrides:
describeFunctionBind
in classCodingConventions.Proxy
useTypeInfo
- If we believe type information is reliable enough to use to figure out what the bind function is.
-
getIndirectlyDeclaredProperties
public java.util.Collection<java.lang.String> getIndirectlyDeclaredProperties()
Description copied from interface:CodingConvention
Gets a collection of all properties that are defined indirectly on global objects. (For example, Closure defines superClass_ in the goog.inherits call).- Specified by:
getIndirectlyDeclaredProperties
in interfaceCodingConvention
- Overrides:
getIndirectlyDeclaredProperties
in classCodingConventions.Proxy
-
-