JS: implement isXXX methods in JSDocTypeExpr classes

This commit is contained in:
Asger F
2019-04-16 11:20:38 +01:00
parent c92a6b72b5
commit 8458a64642
2 changed files with 57 additions and 9 deletions

View File

@@ -102,7 +102,7 @@ class JSDocParamTag extends JSDocTag {
/**
* A JSDoc type expression.
*/
class JSDocTypeExpr extends @jsdoc_type_expr, JSDocTypeExprParent {
class JSDocTypeExpr extends @jsdoc_type_expr, JSDocTypeExprParent, TypeAnnotation {
/**
* Gets the syntactic element in which this type expression is nested, which may either
* be another type expression or a JSDoc tag.
@@ -126,24 +126,75 @@ class JSDocTypeExpr extends @jsdoc_type_expr, JSDocTypeExprParent {
}
/** An `any` type expression `*`. */
class JSDocAnyTypeExpr extends @jsdoc_any_type_expr, JSDocTypeExpr { }
class JSDocAnyTypeExpr extends @jsdoc_any_type_expr, JSDocTypeExpr {
override predicate isAny() { any() }
}
/** A null type expression. */
class JSDocNullTypeExpr extends @jsdoc_null_type_expr, JSDocTypeExpr { }
class JSDocNullTypeExpr extends @jsdoc_null_type_expr, JSDocTypeExpr {
override predicate isNull() { any() }
}
/** A type expression representing the type of `undefined`. */
class JSDocUndefinedTypeExpr extends @jsdoc_undefined_type_expr, JSDocTypeExpr { }
class JSDocUndefinedTypeExpr extends @jsdoc_undefined_type_expr, JSDocTypeExpr {
override predicate isUndefined() { any() }
}
/** A type expression representing an unknown type `?`. */
class JSDocUnknownTypeExpr extends @jsdoc_unknown_type_expr, JSDocTypeExpr { }
class JSDocUnknownTypeExpr extends @jsdoc_unknown_type_expr, JSDocTypeExpr {
override predicate isUnknownKeyword() { any() }
}
/** A type expression representing the void type. */
class JSDocVoidTypeExpr extends @jsdoc_void_type_expr, JSDocTypeExpr { }
class JSDocVoidTypeExpr extends @jsdoc_void_type_expr, JSDocTypeExpr {
override predicate isVoid() { any() }
}
/** A type expression referring to a named type. */
class JSDocNamedTypeExpr extends @jsdoc_named_type_expr, JSDocTypeExpr {
/** Gets the name of the type the expression refers to. */
string getName() { result = toString() }
override predicate isString() {
getName() = "string"
}
override predicate isStringy() {
exists(string name | name = getName() |
name = "string" or
name = "String"
)
}
override predicate isNumber() {
getName() = "number"
}
override predicate isNumbery() {
exists(string name | name = getName() |
name = "number" or
name = "Number" or
name = "double" or
name = "Double" or
name = "int" or
name = "integer" or
name = "Integer"
)
}
override predicate isBoolean() {
getName() = "boolean"
}
override predicate isBooleany() {
getName() = "boolean" or
getName() = "Boolean" or
getName() = "bool"
}
override predicate isRawFunction() {
getName() = "Function"
}
}
/**

View File

@@ -531,9 +531,6 @@ class LocalNamespaceName extends @local_namespace_name, LexicalName {
class TypeExpr extends ExprOrType, @typeexpr, TypeAnnotation {
override string toString() { typeexprs(this, _, _, _, result) }
/** Gets this type expression, with any surrounding parentheses removed. */
override TypeExpr stripParens() { result = this }
override predicate isAmbient() { any() }
/**