* [Flow] Function predicate declaration
The accepted syntax for function declarations is extended to allow
the following predicate declaration:
FunctionReturnType :=
Type
Predicate
Type Predicate
Predicate :=
%checks
%checks ( ConditionalExpression )
* [Flow] Minor tweaks and more examples to function predicates
* [Flow] Clean-up and better message for function predicates
* [Flow] Adding abstract function predicate example
* [Flow] Rearranging the `predicate` field to ease babel generator.
257 lines
6.6 KiB
JSON
257 lines
6.6 KiB
JSON
{
|
|
"type": "File",
|
|
"start": 0,
|
|
"end": 53,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 0
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 53
|
|
}
|
|
},
|
|
"program": {
|
|
"type": "Program",
|
|
"start": 0,
|
|
"end": 53,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 0
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 53
|
|
}
|
|
},
|
|
"sourceType": "module",
|
|
"body": [
|
|
{
|
|
"type": "VariableDeclaration",
|
|
"start": 0,
|
|
"end": 53,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 0
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 53
|
|
}
|
|
},
|
|
"declarations": [
|
|
{
|
|
"type": "VariableDeclarator",
|
|
"start": 4,
|
|
"end": 52,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 4
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 52
|
|
}
|
|
},
|
|
"id": {
|
|
"type": "Identifier",
|
|
"start": 4,
|
|
"end": 5,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 4
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 5
|
|
},
|
|
"identifierName": "f"
|
|
},
|
|
"name": "f"
|
|
},
|
|
"init": {
|
|
"type": "ArrowFunctionExpression",
|
|
"start": 8,
|
|
"end": 52,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 8
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 52
|
|
}
|
|
},
|
|
"returnType": {
|
|
"type": "TypeAnnotation",
|
|
"start": 18,
|
|
"end": 27,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 18
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 27
|
|
}
|
|
},
|
|
"typeAnnotation": null,
|
|
"predicate": {
|
|
"type": "InferredPredicate",
|
|
"start": 20,
|
|
"end": 27,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 20
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 27
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"id": null,
|
|
"generator": false,
|
|
"expression": true,
|
|
"async": false,
|
|
"params": [
|
|
{
|
|
"type": "Identifier",
|
|
"start": 9,
|
|
"end": 17,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 9
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 17
|
|
},
|
|
"identifierName": "x"
|
|
},
|
|
"name": "x",
|
|
"typeAnnotation": {
|
|
"type": "TypeAnnotation",
|
|
"start": 10,
|
|
"end": 17,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 10
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 17
|
|
}
|
|
},
|
|
"typeAnnotation": {
|
|
"type": "MixedTypeAnnotation",
|
|
"start": 12,
|
|
"end": 17,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 12
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 17
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"body": {
|
|
"type": "BinaryExpression",
|
|
"start": 31,
|
|
"end": 52,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 31
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 52
|
|
}
|
|
},
|
|
"left": {
|
|
"type": "UnaryExpression",
|
|
"start": 31,
|
|
"end": 39,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 31
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 39
|
|
}
|
|
},
|
|
"operator": "typeof",
|
|
"prefix": true,
|
|
"argument": {
|
|
"type": "Identifier",
|
|
"start": 38,
|
|
"end": 39,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 38
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 39
|
|
},
|
|
"identifierName": "x"
|
|
},
|
|
"name": "x"
|
|
},
|
|
"extra": {
|
|
"parenthesizedArgument": false
|
|
}
|
|
},
|
|
"operator": "===",
|
|
"right": {
|
|
"type": "StringLiteral",
|
|
"start": 44,
|
|
"end": 52,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 44
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 52
|
|
}
|
|
},
|
|
"extra": {
|
|
"rawValue": "string",
|
|
"raw": "\"string\""
|
|
},
|
|
"value": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"kind": "var"
|
|
}
|
|
],
|
|
"directives": []
|
|
}
|
|
}
|