Add qldoc comment and isOptional predicate to KeywordParameter

This commit is contained in:
Nick Rolfe
2020-11-30 13:42:02 +00:00
parent c0dd89122c
commit baf29ae56b
2 changed files with 16 additions and 2 deletions

View File

@@ -108,7 +108,15 @@ class HashSplatParameter extends @hash_splat_parameter, NamedParameter {
}
/**
* TODO
* A keyword parameter, including a default value if the parameter is optional.
* For example, in the following example, `foo` is a keyword parameter with a
* default value of `0`, and `bar` is a mandatory keyword parameter with no
* default value mandatory parameter).
* ```rb
* def f(foo: 0, bar:)
* foo * 10 + bar
* end
* ```
*/
class KeywordParameter extends @keyword_parameter, NamedParameter {
override Generated::KeywordParameter generated;
@@ -127,6 +135,12 @@ class KeywordParameter extends @keyword_parameter, NamedParameter {
*/
AstNode getDefaultValue() { result = generated.getValue() }
/**
* Holds if the parameter is optional. That is, there is a default value that
* is used when the caller omits this parameter.
*/
predicate isOptional() { exists(this.getDefaultValue()) }
override string toString() { result = this.getName() }
}

View File

@@ -16,7 +16,7 @@ query predicate hashSplatParams(HashSplatParameter hsp, string name) { name = hs
query predicate keywordParams(KeywordParameter kp, string name, string defaultValueStr) {
name = kp.getName() and
if exists(kp.getDefaultValue())
if kp.isOptional()
then defaultValueStr = kp.getDefaultValue().toString()
else defaultValueStr = "(none)"
}